Skip to content

Commit e5191f0

Browse files
committed
fix: give the correct code+error if protocol upgrade fails
1 parent 284d1f7 commit e5191f0

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/core/server.ml

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -364,14 +364,14 @@ let client_handle_for (self : t) ~client_addr ic oc : unit =
364364
365365
let handle_upgrade ~(middlewares : Head_middleware.t list) req
366366
(module UP : UPGRADE_HANDLER) : unit =
367-
try
368-
Log.debug (fun k -> k "upgrade connection");
367+
Log.debug (fun k -> k "upgrade connection");
369368
370-
let send_resp resp =
371-
log_response req resp;
372-
Response.Private_.output_ ~bytes:bytes_res oc resp
373-
in
369+
let send_resp resp =
370+
log_response req resp;
371+
Response.Private_.output_ ~bytes:bytes_res oc resp
372+
in
374373
374+
try
375375
(* apply head middlewares *)
376376
let req = List.fold_left Head_middleware.apply' req middlewares in
377377
@@ -399,7 +399,9 @@ let client_handle_for (self : t) ~client_addr ic oc : unit =
399399
400400
(* handshake successful, proceed with the upgrade handler *)
401401
UP.handle_connection handshake_st ic oc
402-
with e ->
402+
with
403+
| Bad_req (code, err) -> send_resp @@ Response.make_raw ~code err
404+
| e ->
403405
let bt = Printexc.get_raw_backtrace () in
404406
handle_bad_req req e bt
405407
in

0 commit comments

Comments
 (0)