diff --git a/lib/falcon/adapters/rack.rb b/lib/falcon/adapters/rack.rb index 70e6752f..3d97868b 100644 --- a/lib/falcon/adapters/rack.rb +++ b/lib/falcon/adapters/rack.rb @@ -60,6 +60,10 @@ class Rack RACK_IS_HIJACK = 'rack.hijack?' RACK_HIJACK_IO = 'rack.hijack_io' + # Raised back up through the middleware when the underlying connection is hijacked. + class FullHijack < StandardError + end + # Async::HTTP specific metadata: ASYNC_HTTP_REQUEST = "async.http.request" @@ -202,7 +206,7 @@ def call(request) # If there was a full hijack: if full_hijack - return nil + raise FullHijack, "The connection was hijacked." else return Response.wrap(status, headers, body, request) end