diff --git a/src/HTTP.jl b/src/HTTP.jl index 805bc9f..0f52fba 100644 --- a/src/HTTP.jl +++ b/src/HTTP.jl @@ -300,7 +300,12 @@ struct RequestHandlerFunction{F} <: RequestHandler end #handle(h::RequestHandlerFunction, req::Request, args...) = h.func(req, args...) -handle(h::RequestHandlerFunction, stream::HTTP.Streams.Stream, args...) = h.func(stream, args...) +function handle(h::RequestHandlerFunction, stream::HTTP.Streams.Stream, args...) + request = stream.message + request.response = h.func(request, args...) + request.response.request = request + write(stream, request.response.body) +end """ @@ -405,6 +410,7 @@ function serve(serverws::ServerWS, host, port, verbose) handle(serverws.handler, stream) end catch err + @error "WebSocket: _servercoroutine CRASH\n$(sprint(showerror, err))" put!(serverws.out, err) put!(serverws.out, stacktrace(catch_backtrace())) end diff --git a/test/client_server_functions.jl b/test/client_server_functions.jl index c7921f6..7aba8a7 100644 --- a/test/client_server_functions.jl +++ b/test/client_server_functions.jl @@ -19,12 +19,7 @@ end `test_handler` is called by WebSockets inner function `_servercoroutine` for all accepted http requests that are not upgrades. We don't check what's actually requested. """ -function test_handler(stream::HTTP.Streams.Stream) - request = stream.message - request.response = HTTP.Response(200, "OK") - request.response.request = request - write(stream, request.response.body) -end +test_handler(req::HTTP.Request) = HTTP.Response(200, "OK") """ `test_wshandler` is called by WebSockets inner function