Author: mikej Date: Thu Jan 22 16:31:52 2009 New Revision: 11419 Log: mod_xml_rpc: fix http content types sent in responses (r:11099,11148,11150) Modified: freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c Modified: freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/branches/1.0/src/mod/applications/mod_conference/mod_conference.c Thu Jan 22 16:31:52 2009 @@ -3895,7 +3895,7 @@ { char *lbuf = NULL; switch_status_t status = SWITCH_STATUS_SUCCESS; - char *http = NULL; + char *http = NULL, *type = NULL; int argc; char *argv[25] = { 0 }; @@ -3905,11 +3905,14 @@ if (stream->param_event) { http = switch_event_get_header(stream->param_event, "http-host"); + type = switch_event_get_header(stream->param_event, "content-type"); } if (http) { /* Output must be to a web browser */ - stream->write_function(stream, "<pre>\n"); + if (type && !strcasecmp(type, "text/html")) { + stream->write_function(stream, "<pre>\n"); + } } if (!(lbuf = strdup(cmd))) { Modified: freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c ============================================================================== --- freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c (original) +++ freeswitch/branches/1.0/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c Thu Jan 22 16:31:52 2009 @@ -449,7 +449,7 @@ char *fs_user = NULL, *fs_domain = NULL; char *path_info = NULL; abyss_bool ret = TRUE; - int html = 0, text = 0; + int html = 0, text = 0, xml = 0; stream.data = r; stream.write_function = http_stream_write; @@ -467,6 +467,9 @@ } else if ((command = strstr(r->requestInfo.uri, "/txtapi/"))) { command += 8; text++; + } else if ((command = strstr(r->requestInfo.uri, "/xmlapi/"))) { + command += 8; + xml++; } else { return FALSE; } @@ -529,13 +532,15 @@ switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/html"); else if (text) switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/plain"); + else if (xml) + switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "Content-type", "text/xml"); if (fs_user) switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-User", fs_user); if (fs_domain) switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "FreeSWITCH-Domain", fs_domain); if (path_info) switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-Path-Info", path_info); - switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-URI", r->requestInfo.uri); + switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-URI", r->requestInfo.uri); if (r->requestInfo.query) switch_event_add_header_string(stream.param_event, SWITCH_STACK_BOTTOM, "HTTP-QUERY", r->requestInfo.query); if (r->requestInfo.host) @@ -654,6 +659,8 @@ ResponseAddField(r, "Content-Type", "text/html"); } else if (text) { ResponseAddField(r, "Content-Type", "text/plain"); + } else if (xml) { + ResponseAddField(r, "Content-Type", "text/xml"); } for (i = 0; i < r->response_headers.size; i++) { @@ -667,7 +674,7 @@ switch_snprintf(buf, sizeof(buf), "Connection: close\r\n"); ConnWrite(r->conn, buf, (uint32_t) strlen(buf)); - if (html || text) { + if (html || text || xml) { ConnWrite(r->conn, "\r\n", 2); }