[commit] r4937 - in freeswitch/branches/mikej/sofiasip-upgrade/src/mod: applications/mod_commands endpoints/mod_sofia endpoints/mod_wanpipe event_handlers/mod_cdr xml_int/mod_xml_curl
Author: mikej Date: Sat Apr 14 21:33:25 2007 New Revision: 4937 Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/applications/mod_commands/mod_commands.c freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/mod_sofia.c freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/mod_sofia.h freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/sofia.c freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/sofia_glue.c freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c freeswitch/branches/mikej/sofiasip-upgrade/src/mod/event_handlers/mod_cdr/mysqlcdr.cpp freeswitch/branches/mikej/sofiasip-upgrade/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c Log: merged changes from trunk revisions 4927-4936. Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/applications/mod_commands/mod_commands.c ============================================================================== --- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/applications/mod_commands/mod_commands.c (original) +++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/applications/mod_commands/mod_commands.c Sat Apr 14 21:33:25 2007 @@ -844,7 +844,7 @@ } snprintf(id, sizeof(id), "%d", holder->rows); - switch_xml_set_attr_d(row, "id", id); + switch_xml_set_attr_d(row, "row_id", id); for(x = 0; x < argc; x++) { if ((field = switch_xml_add_child_d(row, columnNames[x], f_off++))) { @@ -990,15 +990,20 @@ } else if (!strcasecmp(as, "xml")) { switch_core_db_exec(db, sql, show_as_xml_callback, &holder, &errmsg); if (holder.xml) { - char *xmlstr = switch_xml_toxml(holder.xml); + char count[50]; + char *xmlstr; + snprintf(count, sizeof(count), "%d", holder.count); + switch_xml_set_attr_d(holder.xml, "row_count", count); + xmlstr = switch_xml_toxml(holder.xml); + if (xmlstr) { holder.stream->write_function(holder.stream, "%s", xmlstr); free(xmlstr); } else { - holder.stream->write_function(holder.stream, "ERROR\n"); + holder.stream->write_function(holder.stream, "<result row_count=\"0\"/>\n"); } } else { - holder.stream->write_function(holder.stream, "ERROR\n"); + holder.stream->write_function(holder.stream, "<result row_count=\"0\"/>\n"); } } else { holder.stream->write_function(holder.stream, "Cannot find format %s\n", as); Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/mod_sofia.c Sat Apr 14 21:33:25 2007 @@ -1002,8 +1002,13 @@ switch_core_hash_init(&mod_sofia_globals.gateway_hash, module_pool); switch_mutex_init(&mod_sofia_globals.hash_mutex, SWITCH_MUTEX_NESTED, module_pool); - config_sofia(0); + if (config_sofia(0) != SWITCH_STATUS_SUCCESS) { + return SWITCH_STATUS_GENERR; + } + switch_mutex_lock(mod_sofia_globals.mutex); + mod_sofia_globals.running = 1; + switch_mutex_unlock(mod_sofia_globals.mutex); if (switch_event_bind((char *) modname, SWITCH_EVENT_PRESENCE_IN, SWITCH_EVENT_SUBCLASS_ANY, sofia_presence_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { @@ -1045,17 +1050,21 @@ SWITCH_MOD_DECLARE(switch_status_t) switch_module_shutdown(void) { - + int sanity = 0; + sofia_presence_cancel(); switch_mutex_lock(mod_sofia_globals.mutex); if (mod_sofia_globals.running == 1) { - mod_sofia_globals.running = -1; + mod_sofia_globals.running = 0; } switch_mutex_unlock(mod_sofia_globals.mutex); - while (mod_sofia_globals.running) { + while (mod_sofia_globals.threads) { switch_yield(1000); + if (++sanity >= 5000) { + break; + } } su_deinit(); Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/mod_sofia.h ============================================================================== --- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/mod_sofia.h (original) +++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/mod_sofia.h Sat Apr 14 21:33:25 2007 @@ -146,6 +146,7 @@ switch_mutex_t *hash_mutex; uint32_t callid; int32_t running; + int32_t threads; switch_mutex_t *mutex; char guess_ip[80]; }; Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/sofia.c Sat Apr 14 21:33:25 2007 @@ -240,6 +240,10 @@ uint32_t gateway_loops = 0; switch_event_t *s_event; + switch_mutex_lock(mod_sofia_globals.mutex); + mod_sofia_globals.threads++; + switch_mutex_unlock(mod_sofia_globals.mutex); + profile->s_root = su_root_create(NULL); profile->home = su_home_new(sizeof(*profile->home)); @@ -287,7 +291,7 @@ if (!sofia_glue_init_sql(profile)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot Open SQL Database!\n"); - return NULL; + goto end; } @@ -350,8 +354,11 @@ su_root_destroy(profile->s_root); pool = profile->pool; switch_core_destroy_memory_pool(&pool); + + end: + switch_mutex_lock(mod_sofia_globals.mutex); - mod_sofia_globals.running = 0; + mod_sofia_globals.threads--; switch_mutex_unlock(mod_sofia_globals.mutex); return NULL; @@ -402,9 +409,7 @@ switch_status_t status = SWITCH_STATUS_SUCCESS; sofia_profile_t *profile = NULL; char url[512] = ""; - switch_mutex_lock(mod_sofia_globals.mutex); - mod_sofia_globals.running = 1; - switch_mutex_unlock(mod_sofia_globals.mutex); + if (!reload) { su_init(); @@ -937,7 +942,7 @@ switch_core_session_thread_launch(session); goto done; } else { - sdp_parser_t *parser = sdp_parse(tech_pvt->sofia_private->home, r_sdp, (int) strlen(r_sdp), 0); + sdp_parser_t *parser = sdp_parse(NULL, r_sdp, (int) strlen(r_sdp), 0); sdp_session_t *sdp; uint8_t match = 0; @@ -1018,7 +1023,7 @@ if (switch_test_flag(tech_pvt, TFLAG_NOMEDIA)) { goto done; } else { - sdp_parser_t *parser = sdp_parse(tech_pvt->sofia_private->home, r_sdp, (int) strlen(r_sdp), 0); + sdp_parser_t *parser = sdp_parse(NULL, r_sdp, (int) strlen(r_sdp), 0); sdp_session_t *sdp; uint8_t match = 0; @@ -1086,7 +1091,7 @@ } goto done; } else { - sdp_parser_t *parser = sdp_parse(tech_pvt->sofia_private->home, r_sdp, (int) strlen(r_sdp), 0); + sdp_parser_t *parser = sdp_parse(NULL, r_sdp, (int) strlen(r_sdp), 0); sdp_session_t *sdp; uint8_t match = 0; @@ -1648,7 +1653,7 @@ sofia_glue_sofia_glue_tech_set_codecs(tech_pvt); switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "INBOUND CALL"); - sofia_presence_set_chat_hash(tech_pvt, sip); + if (switch_test_flag(tech_pvt, TFLAG_INB_NOMEDIA)) { switch_set_flag_locked(tech_pvt, TFLAG_NOMEDIA); @@ -1734,7 +1739,7 @@ } memset(tech_pvt->sofia_private, 0, sizeof(*tech_pvt->sofia_private)); tech_pvt->sofia_private->home = su_home_new(sizeof(*tech_pvt->sofia_private->home)); - + sofia_presence_set_chat_hash(tech_pvt, sip); switch_copy_string(tech_pvt->sofia_private->uuid, switch_core_session_get_uuid(session), sizeof(tech_pvt->sofia_private->uuid)); nua_handle_bind(nh, tech_pvt->sofia_private); tech_pvt->nh = nh; Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_sofia/sofia_glue.c Sat Apr 14 21:33:25 2007 @@ -543,7 +543,7 @@ sdp_media_t *m; sdp_connection_t *connection; - if ((parser = sdp_parse(tech_pvt->sofia_private->home, sdp_str, (int) strlen(sdp_str), 0))) { + if ((parser = sdp_parse(NULL, sdp_str, (int) strlen(sdp_str), 0))) { if ((sdp = sdp_session(parser))) { for (m = sdp->sdp_media; m; m = m->m_next) { if (m->m_type != sdp_media_audio) { @@ -774,7 +774,7 @@ switch_status_t sofia_glue_tech_media(private_object_t *tech_pvt, char *r_sdp) { - sdp_parser_t *parser = sdp_parse(tech_pvt->sofia_private->home, r_sdp, (int) strlen(r_sdp), 0); + sdp_parser_t *parser = sdp_parse(NULL, r_sdp, (int) strlen(r_sdp), 0); sdp_session_t *sdp; uint8_t match = 0; switch_channel_t *channel = switch_core_session_get_channel(tech_pvt->session); Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c ============================================================================== --- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c (original) +++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c Sat Apr 14 21:33:25 2007 @@ -876,6 +876,10 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); + if (switch_test_flag(tech_pvt, TFLAG_BYE) || tech_pvt->wpsock->fd < 0) { + return SWITCH_STATUS_GENERR; + } + if (!tech_pvt->dtmf_buffer) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Allocate DTMF Buffer...."); if (switch_buffer_create_dynamic(&tech_pvt->dtmf_buffer, 1024, 3192, 0) != SWITCH_STATUS_SUCCESS) { @@ -907,6 +911,9 @@ tech_pvt = (private_object_t *) switch_core_session_get_private(session); assert(tech_pvt != NULL); + if (switch_test_flag(tech_pvt, TFLAG_BYE) || tech_pvt->wpsock->fd < 0) { + return SWITCH_STATUS_GENERR; + } switch (msg->message_id) { case SWITCH_MESSAGE_INDICATE_NOMEDIA: Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/event_handlers/mod_cdr/mysqlcdr.cpp ============================================================================== --- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/event_handlers/mod_cdr/mysqlcdr.cpp (original) +++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/event_handlers/mod_cdr/mysqlcdr.cpp Sat Apr 14 21:33:25 2007 @@ -245,7 +245,10 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot connect to MySQL Server. The error was: %s\n", error1); } else + { connectionstate = 1; + conn->reconnect = false; + } mysql_autocommit(conn,0); stmt = mysql_stmt_init(conn); Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c ============================================================================== --- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c (original) +++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/xml_int/mod_xml_curl/mod_xml_curl.c Sat Apr 14 21:33:25 2007 @@ -104,7 +104,7 @@ } config_data.name = filename; - if ((config_data.fd = open(filename, O_CREAT | O_RDWR | O_TRUNC)) > -1) { + if ((config_data.fd = open(filename, O_CREAT | O_RDWR | O_TRUNC, S_IRUSR | S_IWUSR)) > -1) { if (!switch_strlen_zero(binding->cred)) { curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY); curl_easy_setopt(curl_handle, CURLOPT_USERPWD, binding->cred);
participants (1)
-
Freeswitch SVN