res_http_websocket.c: Fix some off nominal path cleanup.
authorRichard Mudgett <rmudgett@digium.com>
Tue, 18 Aug 2015 21:06:54 +0000 (16:06 -0500)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 18 Aug 2015 21:38:19 +0000 (16:38 -0500)
* Remove extraneous unlock on off-nominal path.
* Add missing HTTP error reply.

Change-Id: I1f402bfe448fba8696b507477cab5f060ccd9b2b

res/res_http_websocket.c

index a29daa8..86ec00c 100644 (file)
@@ -209,7 +209,6 @@ int AST_OPTIONAL_API_NAME(ast_websocket_server_add_protocol)(struct ast_websocke
 
        protocol = ast_websocket_sub_protocol_alloc(name);
        if (!protocol) {
 
        protocol = ast_websocket_sub_protocol_alloc(name);
        if (!protocol) {
-               ao2_unlock(server->protocols);
                return -1;
        }
        protocol->session_established = callback;
                return -1;
        }
        protocol->session_established = callback;
@@ -840,6 +839,7 @@ int AST_OPTIONAL_API_NAME(ast_websocket_uri_cb)(struct ast_tcptls_session_instan
                    && protocol_handler->session_attempted(ser, get_vars, headers, session->session_id)) {
                        ast_debug(3, "WebSocket connection from '%s' rejected by protocol handler '%s'\n",
                                ast_sockaddr_stringify(&ser->remote_address), protocol_handler->name);
                    && protocol_handler->session_attempted(ser, get_vars, headers, session->session_id)) {
                        ast_debug(3, "WebSocket connection from '%s' rejected by protocol handler '%s'\n",
                                ast_sockaddr_stringify(&ser->remote_address), protocol_handler->name);
+                       websocket_bad_request(ser);
                        ao2_ref(protocol_handler, -1);
                        return 0;
                }
                        ao2_ref(protocol_handler, -1);
                        return 0;
                }