From 23e333a9fc3dad4b227659f2a31fb65321970f1e Mon Sep 17 00:00:00 2001 From: Eliot Gable Date: Mon, 4 Jan 2016 12:46:41 +0000 Subject: [PATCH] FS-8706: Fix a segfault where no response status was set previously, and try to prevent future ones by setting default response status of 500. --- src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c index a71726c357..3ef840ea87 100644 --- a/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c +++ b/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c @@ -534,6 +534,7 @@ static abyss_bool http_directory_auth(TSession *r, char *domain_name) ResponseAddField(r, "freeswitch-user", (box ? box : user)); ResponseAddField(r, "freeswitch-domain", domain_name); + ResponseStatus(r, 200); rval = TRUE; goto done; } @@ -707,6 +708,11 @@ abyss_bool auth_hook(TSession * r) char *domain_name, *e; abyss_bool ret = FALSE; + /* Default to 500 status to avoid assert. It should be + overridden later if we actually handle it or if the + default handler in abyss handles it. */ + ResponseStatus(r, 500); + if (globals.enable_websocket && !strncmp(r->requestInfo.uri, "/socket", 7)) { // Chrome has no Authorization support yet // https://code.google.com/p/chromium/issues/detail?id=123862 @@ -827,6 +833,11 @@ abyss_bool handler_hook(TSession * r) return FALSE; } + /* Default to 500 status to avoid assert. It should be + overridden later if we actually handle it or if the + default handler in abyss handles it. */ + ResponseStatus(r, 500); + stream.data = r; stream.write_function = http_stream_write; stream.raw_write_function = http_stream_raw_write;