Author: stkn Date: Tue Dec 11 16:35:05 2007 New Revision: 6674 Added: freeswitch/branches/stkn/sofia-exp/trunk/conf/directory/default/voipuser.org.noload - copied unchanged from r6673, /freeswitch/trunk/conf/directory/default/voipuser.org.noload Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/conference.conf.xml freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/console.conf.xml freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/local_stream.conf.xml freeswitch/branches/stkn/sofia-exp/trunk/conf/dialplan/default.xml freeswitch/branches/stkn/sofia-exp/trunk/conf/dialplan/public.xml freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/default.xml freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/nat.xml freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/outbound.xml freeswitch/branches/stkn/sofia-exp/trunk/scripts/sipsetup freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_console.h freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_core.h freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_platform.h freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_rtp.h freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_types.h freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_utils.h freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_conference/mod_conference.c freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_enum/mod_enum.c freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_esf/mod_esf.c freeswitch/branches/stkn/sofia-exp/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c freeswitch/branches/stkn/sofia-exp/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_buffer.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_caller.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_channel.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_asr.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_codec.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_file.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_hash.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_io.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_memory.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_port_allocator.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_session.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_speech.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_sqldb.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_state_machine.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_event.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_async.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_bridge.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_originate.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_play_say.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_loadable_module.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_log.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_odbc.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_rtp.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_scheduler.c freeswitch/branches/stkn/sofia-exp/trunk/src/switch_utils.c Log: Merge changes from trunk Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/conference.conf.xml ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/conference.conf.xml (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/conference.conf.xml Tue Dec 11 16:35:05 2007 @@ -1,3 +1,4 @@ +<!-- http://wiki.freeswitch.org/wiki/Mod_conference --> <!-- None of these paths are real if you want any of these options you need to really set them up --> <configuration name="conference.conf" description="Audio Conference"> <!-- Advertise certain presence on startup . --> Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/console.conf.xml ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/console.conf.xml (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/console.conf.xml Tue Dec 11 16:35:05 2007 @@ -6,7 +6,7 @@ name can be a file name, function name or 'all' value is one or more of debug,info,notice,warning,err,crit,alert,all --> - <map name="all" value="debug,info,notice,warning,err,crit,alert"/> + <map name="all" value="info,notice,warning,err,crit,alert"/> </mappings> <settings> <!-- comment or set to false for no color logging --> Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/local_stream.conf.xml ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/local_stream.conf.xml (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/conf/autoload_configs/local_stream.conf.xml Tue Dec 11 16:35:05 2007 @@ -1,5 +1,5 @@ <configuration name="local_stream.conf" description="stream files from local dir"> -<directory name="foo" path="/path/to/moh/files"> +<directory name="demo_moh" path="$${base_dir}/sounds/moh"> <param name="rate" value="8000"/> <param name="channels" value="1"/> <param name="interval" value="2"/> Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/dialplan/default.xml ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/conf/dialplan/default.xml (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/conf/dialplan/default.xml Tue Dec 11 16:35:05 2007 @@ -1,3 +1,4 @@ +<!-- http://wiki.freeswitch.org/wiki/Dialplan_XML --> <include> <context name="default"> <extension name="intercept"> Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/dialplan/public.xml ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/conf/dialplan/public.xml (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/conf/dialplan/public.xml Tue Dec 11 16:35:05 2007 @@ -1,3 +1,4 @@ +<!-- http://wiki.freeswitch.org/wiki/Dialplan_XML --> <include> <context name="public"> Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/default.xml ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/default.xml (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/default.xml Tue Dec 11 16:35:05 2007 @@ -1,3 +1,4 @@ +<!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files --> <profile name="default"> <!--aliases are other names that will work as a valid profile name for this profile--> <aliases> @@ -14,7 +15,7 @@ </domains> <settings> - <param name="debug" value="1"/> + <param name="debug" value="0"/> <param name="context" value="public"/> <param name="rfc2833-pt" value="101"/> <param name="sip-port" value="5060"/> @@ -25,6 +26,7 @@ <param name="rtp-timer-name" value="soft"/> <param name="rtp-ip" value="$${local_ip_v4}"/> <param name="sip-ip" value="$${local_ip_v4}"/> + <param name="hold-music" value="local_stream://demo_moh"/> <!--enable to use presense and mwi --> <param name="manage-presence" value="true"/> <!--max number of open dialogs in proceeding --> Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/nat.xml ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/nat.xml (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/nat.xml Tue Dec 11 16:35:05 2007 @@ -1,10 +1,11 @@ +<!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files --> <profile name="nat"> <gateways> <X-PRE-PROCESS cmd="include" data="nat/*.xml"/> </gateways> <settings> - <param name="debug" value="1"/> + <param name="debug" value="0"/> <param name="rfc2833-pt" value="101"/> <param name="sip-port" value="5070"/> <param name="dialplan" value="XML"/> @@ -12,6 +13,7 @@ <param name="dtmf-duration" value="100"/> <param name="codec-prefs" value="$${global_codec_prefs}"/> <param name="use-rtp-timer" value="true"/> + <param name="hold-music" value="local_stream://demo_moh"/> <param name="rtp-timer-name" value="soft"/> <param name="manage-presence" value="true"/> <param name="inbound-codec-negotiation" value="generous"/> Modified: freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/outbound.xml ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/outbound.xml (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/conf/sip_profiles/outbound.xml Tue Dec 11 16:35:05 2007 @@ -1,3 +1,4 @@ +<!-- http://wiki.freeswitch.org/wiki/Sofia_Configuration_Files --> <profile name="outbound"> <!-- This profile is only for outbound registrations to providers --> <gateways> @@ -9,13 +10,14 @@ </domains> <settings> - <param name="debug" value="1"/> + <param name="debug" value="0"/> <param name="rfc2833-pt" value="101"/> <param name="sip-port" value="5080"/> <param name="dialplan" value="XML"/> <param name="context" value="public"/> <param name="dtmf-duration" value="100"/> <param name="codec-prefs" value="$${global_codec_prefs}"/> + <param name="hold-music" value="local_stream://demo_moh"/> <param name="use-rtp-timer" value="true"/> <param name="rtp-timer-name" value="soft"/> <param name="manage-presence" value="true"/> Modified: freeswitch/branches/stkn/sofia-exp/trunk/scripts/sipsetup ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/scripts/sipsetup (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/scripts/sipsetup Tue Dec 11 16:35:05 2007 @@ -12,159 +12,169 @@ my $PREFIX = "/usr/local/freeswitch"; my $providers = { - "1" => "FWD", - "2" => "SP", - "3" => "IS", - "4" => "AL", - "5" => "SB" - }; + "1" => "FWD", + "2" => "SP", + "3" => "IS", + "4" => "AL", + "5" => "SB", + "6" => "VU" + }; my $FWD = { - "type" => "network", - "register" => "true", - "fields" => [number, password, extension], - "domain" => "pulver.com", - "dialprefix" => "1-393" - }; - -my $SP = { - "type" => "network", - "register" => "true", - "fields" => [username, password, extension], - "domain" => "sipphone.com", - "dialprefix" => "1-747, 1-222" - }; - -my $IS = { - "type" => "network", - "register" => "true", - "fields" => [username, password, extension], - "domain" => "ideasip.com", - "dialprefix" => "1-101" - }; - -my $AL = { - "type" => "pstn", - "register" => "true", - "fields" => [username, password, extension], - "domain" => "asterlink.com", - }; - -my $SB = { - "type" => "peer", - "domain" => "sipbroker.com", - "dialprefix" => "*XXX" - }; + "type" => "network", + "register" => "true", + "fields" => [number, password, extension], + "domain" => "pulver.com", + "dialprefix" => "1-393" + }; + +my $SIPHONE = { + "type" => "network", + "register" => "true", + "fields" => [username, password, extension], + "domain" => "sipphone.com", + "dialprefix" => "1-747, 1-222" + }; + +my $IDEASIP = { + "type" => "network", + "register" => "true", + "fields" => [username, password, extension], + "domain" => "ideasip.com", + "dialprefix" => "1-101" + }; + +my $VOIPUSER = { + "type" => "network", + "register" => "true", + "fields" => [username, password, extension], + "domain" => "voipuser.org" + }; + +my $ASTERLINK = { + "type" => "pstn", + "register" => "true", + "fields" => [username, password, extension], + "domain" => "asterlink.com", +}; + +my $SIPBROKER = { + "type" => "peer", + "domain" => "sipbroker.com", + "dialprefix" => "*XXX" + }; my $TEMPLATES = { - "FWD" => $FWD, - "SP" => $SP, - "IS" => $IS, - "AL" => $AL, - "SB" => $SB - }; + "FWD" => $FWD, + "SP" => $SIPPHONE, + "IS" => $IDEASIP, + "AL" => $ASTERLINK, + "SB" => $SIPBROKER, + "VU" => $VOIPUSER + }; print "\n" x 60; &welcome; sub welcome { - print <<WELCOME + print <<WELCOME - Welcome to the FreeSWITCH setup assistant. + Welcome to the FreeSWITCH setup assistant. - 1. Configure Free World Dialup - 2. Configure SIPPhone.com - 3. Configure ideaSIP.com - 4. Configure Asterlink.com - 5. Configure SIPBroker.com + 1. Configure Free World Dialup + 2. Configure SIPPhone.com + 3. Configure ideaSIP.com + 4. Configure Asterlink.com + 5. Configure SIPBroker.com + 6. Configure voipuser.org - X. Exit + X. Exit WELCOME - ; - print "Which provider do you wish to setup? "; - my $i = <STDIN>; - chomp($i); - if ($i =~ m/X|x/) { - print "Thanks you!\n"; exit; - } elsif ($i > 5) { - print "Invalid Choice\n"; &welcome; - } else { - if (exists($providers->{$i})) { - configure_sip_provider($providers->{$i}); - } - }; - &welcome; +; + print "Which provider do you wish to setup? "; + my $i = <STDIN>; + chomp($i); + if ($i =~ m/X|x/) { + print "Thanks you!\n"; exit; + } elsif ($i > 6) { + print "Invalid Choice\n"; &welcome; + } else { + if (exists($providers->{$i})) { + configure_sip_provider($providers->{$i}); + } + }; + &welcome; } sub configure_sip_provider($) { - my $provider = shift; - my $template = $TEMPLATES->{$provider}; - my $config; - my $check = 1; - foreach $field (@{$template->{fields}}) { - print "\nPlease your $template->{domain} $field: "; - $tmp = "$provider" . uc($field); - $i = <STDIN>; - chomp($i); - $config->{$tmp} = $i; - } + my $provider = shift; + my $template = $TEMPLATES->{$provider}; + my $config; + my $check = 1; + foreach $field (@{$template->{fields}}) { + print "\nPlease your $template->{domain} $field: "; + $tmp = "$provider" . uc($field); + $i = <STDIN>; + chomp($i); + $config->{$tmp} = $i; + } - while($check) { - $check = &are_you_sure; - }; - - if ($template->{type} eq "network") { - do_config($provider, $config); - } - if ($template->{dialprefix}) { - enable_extension($provider, $config); - } - print "\n\n\nConfiguration Complete!!!\n\n\n\n\n"; - sleep(2); - &welcome; + while($check) { + $check = &are_you_sure; + }; + + if ($template->{type} eq "network" || $template->{type} eq "pstn") { + do_config($provider, $config); + } + if ($template->{dialprefix}) { + enable_extension($provider, $config); + } + print "\n\n\nConfiguration Complete!!!\n\n\n\n\n"; + sleep(2); + &welcome; } sub enable_extension($$) { - my $provider = shift; - my $config = shift; + my $provider = shift; + my $config = shift; - my $todo = $TEMPLATES->{$provider}; + my $todo = $TEMPLATES->{$provider}; - copy("$PREFIX/conf/dialplan/extensions/$todo->{domain}.noload", "$PREFIX/conf/dialplan/extensions/$todo->{domain}.xml"); - print "\nExtension prefix $todo->{dialprefix} enabled for dialing $todo->{domain}...\n"; + copy("$PREFIX/conf/dialplan/extensions/$todo->{domain}.noload", "$PREFIX/conf/dialplan/extensions/$todo->{domain}.xml"); + print "\nExtension prefix $todo->{dialprefix} enabled for dialing $todo->{domain}...\n"; } sub do_config($$) { - my $provider = shift; - my $config = shift; - my $todo = $TEMPLATES->{$provider}; - - open(TEMPLATE, "<$PREFIX/conf/directory/default/$todo->{domain}.noload"); - @lines = <TEMPLATE>; - close(TEMPLATE); - open(CONFIG, ">$PREFIX/conf/directory/default/$todo->{domain}.xml"); - foreach $line (@lines) { - foreach $key (sort keys %{$config}) { - $line =~ s/%$key%/$config->{$key}/g; + my $provider = shift; + my $config = shift; + my $todo = $TEMPLATES->{$provider}; + + open(TEMPLATE, "<$PREFIX/conf/directory/default/$todo->{domain}.noload"); + @lines = <TEMPLATE>; + close(TEMPLATE); + open(CONFIG, ">$PREFIX/conf/directory/default/$todo->{domain}.xml"); + foreach $line (@lines) { + foreach $key (sort keys %{$config}) { + $line =~ s/%$key%/$config->{$key}/g; + } + print CONFIG $line; } - print CONFIG $line; - } - close(CONFIG); - print "Config Created...\n"; + close(CONFIG); + print "Config Created...\n"; } sub are_you_sure { - my $sure = 1; - while($sure) { - print "Are you sure? (yes/no)"; - $i = <STDIN>; - chomp($i); - if($i =~ m/No|no|NO|n/) { - &welcome; - } elsif ($i =~ m/Yes|yes|YES|y/) { - return 0; + my $sure = 1; + while($sure) { + print "Are you sure? (yes/no)"; + $i = <STDIN>; + chomp($i); + if($i =~ m/No|no|NO|n/) { + &welcome; + } elsif ($i =~ m/Yes|yes|YES|y/) { + return 0; + } } - } } Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_console.h ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_console.h (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_console.h Tue Dec 11 16:35:05 2007 @@ -44,7 +44,7 @@ SWITCH_BEGIN_EXTERN_C #define SWITCH_CMD_CHUNK_LEN 1024 #define SWITCH_STANDARD_STREAM(s) memset(&s, 0, sizeof(s)); s.data = malloc(SWITCH_CMD_CHUNK_LEN); \ - assert(s.data); \ + switch_assert(s.data); \ memset(s.data, 0, SWITCH_CMD_CHUNK_LEN); \ s.end = s.data; \ s.data_size = SWITCH_CMD_CHUNK_LEN; \ Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_core.h ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_core.h (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_core.h Tue Dec 11 16:35:05 2007 @@ -216,14 +216,16 @@ \return SWITCH_STATUS_SUCCESS if the operation was a success */ SWITCH_DECLARE(switch_status_t) switch_core_port_allocator_new(switch_port_t start, - switch_port_t end, uint8_t inc, switch_core_port_allocator_t **new_allocator); + switch_port_t end, switch_port_flag_t flags, switch_core_port_allocator_t **new_allocator); /*! \brief Get a port from the port allocator \param alloc the allocator object - \return the port + \param port a pointer to the port + \return SUCCESS */ -SWITCH_DECLARE(switch_port_t) switch_core_port_allocator_request_port(switch_core_port_allocator_t *alloc); +SWITCH_DECLARE(switch_status_t) switch_core_port_allocator_request_port(switch_core_port_allocator_t *alloc, switch_port_t *port_ptr); +SWITCH_DECLARE(switch_status_t) switch_core_port_allocator_free_port(switch_core_port_allocator_t *alloc, switch_port_t port); /*! \brief destroythe port allocator Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_platform.h ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_platform.h (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_platform.h Tue Dec 11 16:35:05 2007 @@ -69,6 +69,10 @@ #pragma include_alias(<libteletone_generate.h>, <../../libs/libteletone/src/libteletone_generate.h>) #pragma include_alias(<libteletone_detect.h>, <../../libs/libteletone/src/libteletone_detect.h>) +#if (_MSC_VER >= 1500) // VC9+ +#define switch_assert(expr) assert(expr);__analysis_assume( expr ) +#endif + #if (_MSC_VER >= 1400) // VC8+ #ifndef _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_DEPRECATE @@ -285,6 +289,9 @@ #ifndef TRUE #define TRUE (!FALSE) #endif +#ifndef switch_assert +#define switch_assert(expr) assert(expr) +#endif /* For Emacs: * Local Variables: * mode:c Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_rtp.h ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_rtp.h (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_rtp.h Tue Dec 11 16:35:05 2007 @@ -53,6 +53,7 @@ \note Generally called by the core_init */ SWITCH_DECLARE(void) switch_rtp_init(switch_memory_pool_t *pool); +SWITCH_DECLARE(void) switch_rtp_shutdown(void); /*! \brief Set/Get RTP start port @@ -70,9 +71,10 @@ /*! \brief Request a new port to be used for media + \param ip the ip to request a port from \return the new port to use */ -SWITCH_DECLARE(switch_port_t) switch_rtp_request_port(void); +SWITCH_DECLARE(switch_port_t) switch_rtp_request_port(const char *ip); /*! \brief create a new RTP session handle Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_types.h ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_types.h (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_types.h Tue Dec 11 16:35:05 2007 @@ -137,6 +137,12 @@ typedef uint8_t switch_byte_t; typedef enum { + SPF_NONE = 0, + SPF_ODD = (1 << 0), + SPF_EVEN = (1 << 1) +} switch_port_flag_t; + +typedef enum { ED_MUX_READ = (1 << 0), ED_MUX_WRITE = (1 << 1), ED_DTMF = (1 << 2) Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_utils.h ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_utils.h (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/include/switch_utils.h Tue Dec 11 16:35:05 2007 @@ -352,9 +352,14 @@ #define switch_malloc(ptr, len) (void)( (!!(ptr = malloc(len))) || (fprintf(stderr,"ABORT! Malloc failure at: %s:%s", __FILE__, __LINE__),abort(), 0), ptr ) #define switch_zmalloc(ptr, len) (void)( (!!(ptr = malloc(len))) || (fprintf(stderr,"ABORT! Malloc failure at: %s:%s", __FILE__, __LINE__),abort(), 0), memset(ptr, 0, len)) #else +#if (_MSC_VER >= 1500) // VC9+ +#define switch_malloc(ptr, len) (void)(assert(((ptr) = malloc((len)))),ptr);__analysis_assume( ptr ) +#define switch_zmalloc(ptr, len) (void)(assert((ptr = malloc(len))),memset(ptr, 0, len));__analysis_assume( ptr ) +#else #define switch_malloc(ptr, len) (void)(assert(((ptr) = malloc((len)))),ptr) #define switch_zmalloc(ptr, len) (void)(assert((ptr = malloc(len))),memset(ptr, 0, len)) #endif +#endif SWITCH_END_EXTERN_C #endif Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_conference/mod_conference.c Tue Dec 11 16:35:05 2007 @@ -422,8 +422,8 @@ { conference_member_t *member = NULL; - assert(conference != NULL); - assert(id != 0); + switch_assert(conference != NULL); + switch_assert(id != 0); switch_mutex_lock(conference->member_mutex); for (member = conference->members; member; member = member->next) { @@ -452,7 +452,7 @@ conference_member_t *member = NULL; int count = 0; - assert(conference != NULL); + switch_assert(conference != NULL); switch_mutex_lock(conference->member_mutex); for (member = conference->members; member; member = member->next) { if (switch_test_flag(member, MFLAG_NOCHANNEL) && (!path || !strcmp(path, member->rec_path))) { @@ -517,8 +517,8 @@ call_list_t *call_list = NULL; switch_channel_t *channel; - assert(conference != NULL); - assert(member != NULL); + switch_assert(conference != NULL); + switch_assert(member != NULL); switch_mutex_lock(conference->mutex); switch_mutex_lock(member->audio_in_mutex); @@ -559,9 +559,9 @@ call_list = (call_list_t *) switch_channel_get_private(channel, "_conference_autocall_list_"); if (call_list) { - char msg[1024]; - snprintf(msg, sizeof(msg), "Auto Calling %d parties", call_list->itteration); - conference_member_say(member, msg, 0); + char saymsg[1024]; + snprintf(saymsg, sizeof(saymsg), "Auto Calling %d parties", call_list->itteration); + conference_member_say(member, saymsg, 0); } else { if (switch_strlen_zero(conference->special_announce)) { /* anounce the total number of members in the conference */ @@ -609,8 +609,8 @@ conference_member_t *imember, *last = NULL; switch_event_t *event; - assert(conference != NULL); - assert(member != NULL); + switch_assert(conference != NULL); + switch_assert(member != NULL); switch_mutex_lock(conference->mutex); switch_mutex_lock(conference->member_mutex); @@ -716,8 +716,8 @@ uint8_t *file_frame; uint8_t *async_file_frame; - file_frame = switch_core_alloc(conference->pool, CONF_BUFFER_SIZE); - async_file_frame = switch_core_alloc(conference->pool, CONF_BUFFER_SIZE); + file_frame = switch_core_alloc(conference->pool, SWITCH_RECOMMENDED_BUFFER_SIZE); + async_file_frame = switch_core_alloc(conference->pool, SWITCH_RECOMMENDED_BUFFER_SIZE); if (switch_core_timer_init(&timer, conference->timer_name, conference->interval, samples, conference->pool) == SWITCH_STATUS_SUCCESS) { @@ -1335,13 +1335,13 @@ uint32_t hangover = 40, hangunder = 15, hangover_hits = 0, hangunder_hits = 0, energy_level = 0, diff_level = 400; uint8_t talking = 0; - assert(member != NULL); + switch_assert(member != NULL); channel = switch_core_session_get_channel(member->session); - assert(channel != NULL); + switch_assert(channel != NULL); read_codec = switch_core_session_get_read_codec(member->session); - assert(read_codec != NULL); + switch_assert(read_codec != NULL); /* As long as we have a valid read, feed that data into an input buffer where the conference thread will take it and mux it with any audio from other channels. */ @@ -1521,8 +1521,8 @@ channel = switch_core_session_get_channel(member->session); - assert(channel != NULL); - assert(member->conference != NULL); + switch_assert(channel != NULL); + switch_assert(member->conference != NULL); tsamples = member->orig_read_codec->implementation->samples_per_frame; @@ -1586,7 +1586,7 @@ while (switch_test_flag(member, MFLAG_RUNNING) && switch_test_flag(member, MFLAG_ITHREAD) && switch_channel_ready(channel)) { char dtmf[128] = ""; - uint8_t file_frame[CONF_BUFFER_SIZE] = { 0 }; + uint8_t file_frame[SWITCH_RECOMMENDED_BUFFER_SIZE] = { 0 }; switch_size_t file_data_len = csamples * 2; switch_size_t file_sample_len = csamples; char *digit; @@ -1955,7 +1955,7 @@ uint32_t count = 0; conference_file_node_t *nptr; - assert(conference != NULL); + switch_assert(conference != NULL); switch_mutex_lock(conference->mutex); @@ -2022,7 +2022,7 @@ uint32_t count; char *dfile = NULL, *expanded = NULL; - assert(conference != NULL); + switch_assert(conference != NULL); switch_mutex_lock(conference->mutex); switch_mutex_lock(conference->member_mutex); @@ -2100,10 +2100,10 @@ conference->async_fnode = fnode; if (nptr) { - switch_memory_pool_t *pool; + switch_memory_pool_t *tmppool; switch_core_file_close(&nptr->fh); - pool = nptr->pool; - switch_core_destroy_memory_pool(&pool); + tmppool = nptr->pool; + switch_core_destroy_memory_pool(&tmppool); } } else { @@ -2225,7 +2225,7 @@ switch_memory_pool_t *pool; switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_NONE; - assert(conference != NULL); + switch_assert(conference != NULL); if (!(conference->tts_engine && conference->tts_voice)) { return SWITCH_STATUS_SUCCESS; @@ -2303,7 +2303,7 @@ switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_NONE; uint32_t count; - assert(conference != NULL); + switch_assert(conference != NULL); if (switch_strlen_zero(text)) { return SWITCH_STATUS_GENERR; @@ -2389,9 +2389,9 @@ { conference_member_t *member = NULL; - assert(conference != NULL); - assert(stream != NULL); - assert(pfncallback != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); + switch_assert(pfncallback != NULL); switch_mutex_lock(conference->member_mutex); for (member = conference->members; member; member = member->next) { @@ -2405,8 +2405,8 @@ { conference_member_t *member = NULL; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); switch_mutex_lock(conference->member_mutex); @@ -2433,9 +2433,9 @@ { conference_member_t *member = NULL; - assert(conference != NULL); - assert(stream != NULL); - assert(delim != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); + switch_assert(delim != NULL); switch_mutex_lock(conference->member_mutex); @@ -2813,8 +2813,8 @@ switch_event_t *event; uint8_t async = 0; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); if ((argc == 4 && !strcasecmp(argv[3], "async")) || (argc == 5 && !strcasecmp(argv[4], "async"))) { argc--; @@ -2954,8 +2954,8 @@ int ret_status = SWITCH_STATUS_GENERR; uint8_t current = 0, all = 0; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); if (argc > 2) { current = strcasecmp(argv[2], "current") ? 0 : 1; @@ -2990,8 +2990,8 @@ { int ret_status = SWITCH_STATUS_GENERR; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); if (argc > 4) { uint8_t nospeak = 0, nohear = 0, clear = 0; @@ -3059,8 +3059,8 @@ { switch_event_t *event; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); if (conference->is_locked_sound) { conference_play_file(conference, conference->is_locked_sound, CONF_DEFAULT_LEADIN, NULL, 0); @@ -3081,8 +3081,8 @@ { switch_event_t *event; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); if (conference->is_unlocked_sound) { conference_play_file(conference, conference->is_unlocked_sound, CONF_DEFAULT_LEADIN, NULL, 0); @@ -3104,7 +3104,7 @@ { switch_status_t ret_status = SWITCH_STATUS_SUCCESS; - assert(stream != NULL); + switch_assert(stream != NULL); if (argc > 2) { switch_call_cause_t cause; @@ -3129,7 +3129,7 @@ { switch_status_t ret_status = SWITCH_STATUS_SUCCESS; - assert(stream != NULL); + switch_assert(stream != NULL); if (argc > 2) { if (conference) { @@ -3150,8 +3150,8 @@ { switch_status_t ret_status = SWITCH_STATUS_SUCCESS; char *params = NULL, *chanvars = NULL; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); if (argc > 3 && !switch_strlen_zero(argv[2])) { int x; @@ -3274,8 +3274,8 @@ static switch_status_t conf_api_sub_record(conference_obj_t * conference, switch_stream_handle_t *stream, int argc, char **argv) { switch_status_t ret_status = SWITCH_STATUS_SUCCESS; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); if (argc > 2) { stream->write_function(stream, "Record file %s\n", argv[2]); @@ -3291,8 +3291,8 @@ { switch_status_t ret_status = SWITCH_STATUS_SUCCESS; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); if (argc > 2) { int all = (strcasecmp(argv[2], "all") == 0); @@ -3378,8 +3378,8 @@ { switch_status_t status = SWITCH_STATUS_FALSE; uint32_t i, found = 0; - assert(conference != NULL); - assert(stream != NULL); + switch_assert(conference != NULL); + switch_assert(stream != NULL); /* loop through the command table to find a match */ for (i = 0; i < CONFFUNCAPISIZE && !found; i++) { @@ -3535,7 +3535,7 @@ } switch_thread_rwlock_unlock(conference->rwlock); - } else { + } else if (argv[0]) { /* special case the list command, because it doesn't require a conference argument */ if (strcasecmp(argv[0], "list") == 0) { conf_api_sub_list(NULL, stream, argc, argv); @@ -3573,7 +3573,7 @@ switch_channel_t *channel = NULL; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CUSTOM RING\n"); @@ -3620,7 +3620,7 @@ } peer_channel = switch_core_session_get_channel(peer_session); - assert(peer_channel != NULL); + switch_assert(peer_channel != NULL); rdlock = 1; goto callup; } @@ -3659,7 +3659,7 @@ rdlock = 1; peer_channel = switch_core_session_get_channel(peer_session); - assert(peer_channel != NULL); + switch_assert(peer_channel != NULL); /* make sure the conference still exists */ if (!switch_test_flag(conference, CFLAG_RUNNING)) { @@ -3811,7 +3811,7 @@ /* generate some space infront of the file to be played */ for (x = 0; x < leadin; x++) { switch_frame_t *read_frame; - switch_status_t status = switch_core_session_read_frame(session, &read_frame, 1000, 0); + status = switch_core_session_read_frame(session, &read_frame, 1000, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -3880,7 +3880,7 @@ char *addition = (char *) data; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); call_list = switch_channel_get_private(channel, "_conference_autocall_list_"); @@ -3888,7 +3888,7 @@ call_list = NULL; } else { np = switch_core_session_alloc(session, sizeof(*np)); - assert(np != NULL); + switch_assert(np != NULL); np->string = switch_core_session_strdup(session, addition); if (call_list) { @@ -3931,7 +3931,7 @@ char *params = NULL; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (!mydata) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Pool Failure\n"); @@ -4297,13 +4297,13 @@ switch_xml_free(cxml); } - if (switch_test_flag(&member, MFLAG_KICKED) && conference->kicked_sound) { + if (conference && switch_test_flag(&member, MFLAG_KICKED) && conference->kicked_sound) { char *toplay = NULL; char *dfile = NULL; if (conference->sound_prefix) { dfile = switch_mprintf("%s%s%s", conference->sound_prefix, SWITCH_PATH_SEPARATOR, conference->kicked_sound); - assert(dfile); + switch_assert(dfile); toplay = dfile; } else { toplay = conference->kicked_sound; @@ -4353,6 +4353,7 @@ if (!(rec = switch_core_alloc(pool, sizeof(*rec)))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Alloc Failure\n"); switch_core_destroy_memory_pool(&pool); + return; } rec->conference = conference; @@ -4382,6 +4383,7 @@ if (!(ci = switch_loadable_module_get_chat_interface(proto))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Chat Interface [%s]!\n", proto); + return SWITCH_STATUS_FALSE; } @@ -4432,7 +4434,7 @@ uint32_t i; caller_control_action_t *action; - assert(conference != NULL); + switch_assert(conference != NULL); for (i = 0, status = SWITCH_STATUS_SUCCESS; status == SWITCH_STATUS_SUCCESS && i < CCFNTBL_QTY; i++) { if (!switch_strlen_zero(ccfntbl[i].digits)) { @@ -4460,7 +4462,7 @@ switch_status_t status = SWITCH_STATUS_FALSE; switch_xml_t xml_kvp; - assert(conference != NULL); + switch_assert(conference != NULL); if (!xml_controls) { return status; @@ -4855,8 +4857,6 @@ } if ((conference = (conference_obj_t *) switch_core_hash_find(globals.conference_hash, conf_name))) { - switch_event_t *event; - if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(event, SWITCH_STACK_BOTTOM, "proto", CONF_CHAT_PROTO); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "login", "%s", conference->name); @@ -4919,7 +4919,7 @@ { uint32_t i; size_t nl, ol = 0; - char *p = NULL; + char *p = NULL, *tmp = NULL; switch_chat_interface_t *chat_interface; switch_api_interface_t *api_interface; switch_application_interface_t *app_interface; @@ -4937,13 +4937,17 @@ if (p != NULL) { ol = strlen(p); } - p = realloc(p, ol + nl); - if (p != NULL) { + tmp = realloc(p, ol + nl); + if (tmp != NULL) { + p = tmp; strcat(p, "\t\t"); strcat(p, conf_api_sub_commands[i].psyntax); if (i < CONFFUNCAPISIZE - 1) { strcat(p, "\n"); } + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't realloc\n"); + return SWITCH_STATUS_TERM; } } Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_enum/mod_enum.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_enum/mod_enum.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_enum/mod_enum.c Tue Dec 11 16:35:05 2007 @@ -55,6 +55,7 @@ unsigned char dn[DNS_MAXDN]; enum dns_type qtyp; /* type of the query */ enum_record_t *results; + int errs; }; typedef struct query enum_query_t; @@ -203,9 +204,10 @@ static void dnserror(enum_query_t * q, int errnum) { - + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "unable to lookup %s record for %s: %s\n", dns_typename(q->qtyp), dns_dntosp(q->dn), dns_strerror(errnum)); + q->errs++; } @@ -501,7 +503,7 @@ j += i; - if (j > globals.timeout || query.results) { + if (j > globals.timeout || query.results || query.errs) { break; } @@ -509,8 +511,9 @@ tv.tv_usec = 0; i = select((int) (fd + 1), &fds, 0, 0, &tv); now = time(NULL); - if (i > 0) + if (i > 0) { dns_ioevent(nctx, now); + } } if (!query.results) { Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_esf/mod_esf.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_esf/mod_esf.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/mod/applications/mod_esf/mod_esf.c Tue Dec 11 16:35:05 2007 @@ -153,7 +153,10 @@ } if (ready == SEND_TYPE_RTP) { - rtp_port = switch_rtp_request_port(); + if (!(rtp_port = switch_rtp_request_port(guess_ip))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "RTP Port Error\n"); + goto fail; + } switch_find_local_ip(guess_ip, sizeof(guess_ip), AF_INET); rtp_session = switch_rtp_new(guess_ip, rtp_port, Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c Tue Dec 11 16:35:05 2007 @@ -1697,7 +1697,11 @@ switch_core_session_set_private(*new_session, tech_pvt); tech_pvt->session = *new_session; tech_pvt->codec_index = -1; - tech_pvt->local_port = switch_rtp_request_port(); + if (!(tech_pvt->local_port = switch_rtp_request_port(tech_pvt->profile->ip))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "No RTP port available!\n"); + terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); + return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER; + } tech_pvt->recip = switch_core_session_strdup(*new_session, full_id); tech_pvt->dnis = switch_core_session_strdup(*new_session, dnis); } else { @@ -2584,7 +2588,12 @@ tech_pvt->session = session; tech_pvt->codec_index = -1; tech_pvt->profile = profile; - tech_pvt->local_port = switch_rtp_request_port(); + if (!(tech_pvt->local_port = switch_rtp_request_port(profile->ip))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "No RTP port available!\n"); + terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); + status = LDL_STATUS_FALSE; + goto done; + } switch_set_flag_locked(tech_pvt, TFLAG_ANSWER); tech_pvt->recip = switch_core_session_strdup(session, from); if (!(exten = ldl_session_get_value(dlsession, "dnis"))) { Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Tue Dec 11 16:35:05 2007 @@ -398,7 +398,10 @@ } tech_pvt->local_sdp_audio_ip = ip; - tech_pvt->local_sdp_audio_port = switch_rtp_request_port(); + if (!(tech_pvt->local_sdp_audio_port = switch_rtp_request_port(tech_pvt->profile->rtpip))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "No RTP ports available!\n"); + return SWITCH_STATUS_FALSE; + } sdp_port = tech_pvt->local_sdp_audio_port; if (tech_pvt->profile->extrtpip) { @@ -428,7 +431,10 @@ return SWITCH_STATUS_SUCCESS; } - tech_pvt->local_sdp_video_port = switch_rtp_request_port(); + if (!(tech_pvt->local_sdp_video_port = switch_rtp_request_port(tech_pvt->profile->rtpip))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "No RTP ports available!\n"); + return SWITCH_STATUS_FALSE; + } sdp_port = tech_pvt->local_sdp_video_port; if (tech_pvt->profile->extrtpip) { Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_buffer.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_buffer.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_buffer.c Tue Dec 11 16:35:05 2007 @@ -126,7 +126,7 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_len(switch_buffer_t *buffer) { - assert(buffer != NULL); + switch_assert(buffer != NULL); return buffer->datalen; @@ -135,7 +135,7 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_freespace(switch_buffer_t *buffer) { - assert(buffer != NULL); + switch_assert(buffer != NULL); if (switch_test_flag(buffer, SWITCH_BUFFER_FLAG_DYNAMIC)) { if (buffer->max_len) { @@ -150,7 +150,7 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_inuse(switch_buffer_t *buffer) { - assert(buffer != NULL); + switch_assert(buffer != NULL); return buffer->used; } @@ -159,7 +159,7 @@ { switch_size_t reading = 0; - assert(buffer != NULL); + switch_assert(buffer != NULL); if (buffer->used < 1) { buffer->used = 0; @@ -202,8 +202,8 @@ { switch_size_t reading = 0; - assert(buffer != NULL); - assert(data != NULL); + switch_assert(buffer != NULL); + switch_assert(data != NULL); if (buffer->used < 1) { @@ -227,9 +227,9 @@ { switch_size_t freespace, actual_freespace; - assert(buffer != NULL); - assert(data != NULL); - assert(buffer->data != NULL); + switch_assert(buffer != NULL); + switch_assert(data != NULL); + switch_assert(buffer->data != NULL); if (!datalen) { return buffer->used; @@ -286,8 +286,8 @@ SWITCH_DECLARE(void) switch_buffer_zero(switch_buffer_t *buffer) { - assert(buffer != NULL); - assert(buffer->data != NULL); + switch_assert(buffer != NULL); + switch_assert(buffer->data != NULL); buffer->used = 0; buffer->actually_used = 0; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_caller.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_caller.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_caller.c Tue Dec 11 16:35:05 2007 @@ -54,7 +54,7 @@ switch_caller_profile_t *profile = NULL; profile = switch_core_alloc(pool, sizeof(*profile)); - assert(profile != NULL); + switch_assert(profile != NULL); if (!context) { context = "default"; @@ -85,7 +85,7 @@ switch_caller_profile_t *profile = NULL; profile = switch_core_alloc(pool, sizeof(*profile)); - assert(profile != NULL); + switch_assert(profile != NULL); profile_dup(tocopy->username, profile->username, pool); profile_dup(tocopy->dialplan, profile->dialplan, pool); @@ -294,7 +294,7 @@ { switch_caller_application_t *caller_application = NULL; - assert(session != NULL); + switch_assert(session != NULL); if ((caller_application = switch_core_session_alloc(session, sizeof(switch_caller_application_t))) != 0) { caller_application->application_name = switch_core_session_strdup(session, application_name); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_channel.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_channel.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_channel.c Tue Dec 11 16:35:05 2007 @@ -156,7 +156,7 @@ SWITCH_DECLARE(switch_call_cause_t) switch_channel_get_cause(switch_channel_t *channel) { - assert(channel != NULL); + switch_assert(channel != NULL); return channel->hangup_cause; } @@ -164,7 +164,7 @@ { switch_channel_timetable_t *times = NULL; - assert(channel != NULL); + switch_assert(channel != NULL); if (channel->caller_profile) { switch_mutex_lock(channel->profile_mutex); times = channel->caller_profile->times; @@ -176,7 +176,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_alloc(switch_channel_t **channel, switch_memory_pool_t *pool) { - assert(pool != NULL); + switch_assert(pool != NULL); if (((*channel) = switch_core_alloc(pool, sizeof(switch_channel_t))) == 0) { return SWITCH_STATUS_MEMERR; @@ -200,7 +200,7 @@ { switch_size_t has; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->dtmf_mutex); has = switch_buffer_inuse(channel->dtmf_buffer); switch_mutex_unlock(channel->dtmf_mutex); @@ -215,7 +215,7 @@ switch_size_t wr = 0; const char *p; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->dtmf_mutex); @@ -254,7 +254,7 @@ switch_size_t bytes; switch_event_t *event; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->dtmf_mutex); if ((bytes = switch_buffer_read(channel->dtmf_buffer, dtmf, len)) > 0) { @@ -283,7 +283,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_init(switch_channel_t *channel, switch_core_session_t *session, switch_channel_state_t state, uint32_t flags) { - assert(channel != NULL); + switch_assert(channel != NULL); channel->state = state; channel->flags = flags; channel->session = session; @@ -325,7 +325,7 @@ SWITCH_DECLARE(const char *) switch_channel_get_variable(switch_channel_t *channel, const char *varname) { const char *v = NULL; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); if (!(v = switch_event_get_header(channel->variables, (char*)varname))) { @@ -352,7 +352,7 @@ SWITCH_DECLARE(void) switch_channel_variable_last(switch_channel_t *channel) { - assert(channel != NULL); + switch_assert(channel != NULL); if (!channel->vi) { return; } @@ -365,7 +365,7 @@ { switch_event_header_t *hi = NULL; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); if ((hi = channel->variables->headers)) { channel->vi = 1; @@ -379,7 +379,7 @@ SWITCH_DECLARE(switch_status_t) switch_channel_set_private(switch_channel_t *channel, const char *key, const void *private_info) { - assert(channel != NULL); + switch_assert(channel != NULL); switch_core_hash_insert_locked(channel->private_hash, key, private_info, channel->profile_mutex); return SWITCH_STATUS_SUCCESS; } @@ -387,14 +387,14 @@ SWITCH_DECLARE(void *) switch_channel_get_private(switch_channel_t *channel, const char *key) { void *val; - assert(channel != NULL); + switch_assert(channel != NULL); val = switch_core_hash_find_locked(channel->private_hash, key, channel->profile_mutex); return val; } SWITCH_DECLARE(switch_status_t) switch_channel_set_name(switch_channel_t *channel, const char *name) { - assert(channel != NULL); + switch_assert(channel != NULL); channel->name = NULL; if (name) { char *uuid = switch_core_session_get_uuid(channel->session); @@ -408,13 +408,13 @@ SWITCH_DECLARE(char *) switch_channel_get_name(switch_channel_t *channel) { - assert(channel != NULL); + switch_assert(channel != NULL); return channel->name ? channel->name : "N/A"; } SWITCH_DECLARE(switch_status_t) switch_channel_set_variable(switch_channel_t *channel, const char *varname, const char *value) { - assert(channel != NULL); + switch_assert(channel != NULL); if (!switch_strlen_zero(varname)) { switch_mutex_lock(channel->profile_mutex); @@ -431,7 +431,7 @@ SWITCH_DECLARE(int) switch_channel_test_flag(switch_channel_t *channel, switch_channel_flag_t flags) { - assert(channel != NULL); + switch_assert(channel != NULL); return switch_test_flag(channel, flags) ? 1 : 0; } @@ -439,7 +439,7 @@ { const char *uuid; - assert(channel != NULL); + switch_assert(channel != NULL); if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { switch_core_session_t *session; @@ -457,7 +457,7 @@ { const char *uuid; - assert(channel != NULL); + switch_assert(channel != NULL); if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE))) { switch_core_session_t *session; @@ -489,13 +489,13 @@ SWITCH_DECLARE(void) switch_channel_set_flag(switch_channel_t *channel, switch_channel_flag_t flags) { - assert(channel != NULL); + switch_assert(channel != NULL); switch_set_flag_locked(channel, flags); } SWITCH_DECLARE(void) switch_channel_set_state_flag(switch_channel_t *channel, switch_channel_flag_t flags) { - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->flag_mutex); channel->state_flags |= flags; @@ -504,14 +504,14 @@ SWITCH_DECLARE(void) switch_channel_clear_flag(switch_channel_t *channel, switch_channel_flag_t flags) { - assert(channel != NULL); + switch_assert(channel != NULL); switch_clear_flag_locked(channel, flags); } SWITCH_DECLARE(switch_channel_state_t) switch_channel_get_state(switch_channel_t *channel) { switch_channel_state_t state; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->flag_mutex); state = channel->state; @@ -523,7 +523,7 @@ SWITCH_DECLARE(switch_channel_state_t) switch_channel_get_running_state(switch_channel_t *channel) { switch_channel_state_t state; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->flag_mutex); state = channel->running_state; @@ -536,7 +536,7 @@ { uint8_t ret = 0; - assert(channel != NULL); + switch_assert(channel != NULL); if (!channel->hangup_cause && channel->state > CS_RING && channel->state < CS_HANGUP && channel->state != CS_RESET && !switch_test_flag(channel, CF_TRANSFER)) { @@ -618,7 +618,7 @@ int ok = 0; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->flag_mutex); last_state = channel->state; @@ -800,7 +800,7 @@ /* we won't tolerate an invalid state change so we can make sure we are as robust as a nice cup of dark coffee! */ if (channel->state < CS_HANGUP) { /* not cool lets crash this bad boy and figure out wtf is going on */ - assert(0); + switch_assert(0); } } done: @@ -869,7 +869,7 @@ vval = (char *) hi->value; x++; - assert(vvar && vval); + switch_assert(vvar && vval); snprintf(buf, sizeof(buf), "variable_%s", vvar); switch_event_add_header(event, SWITCH_STACK_BOTTOM, buf, "%s", vval); @@ -882,10 +882,10 @@ SWITCH_DECLARE(void) switch_channel_set_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile) { char *uuid = NULL; - assert(channel != NULL); - assert(channel->session != NULL); + switch_assert(channel != NULL); + switch_assert(channel->session != NULL); switch_mutex_lock(channel->profile_mutex); - assert(caller_profile != NULL); + switch_assert(caller_profile != NULL); uuid = switch_core_session_get_uuid(channel->session); @@ -927,7 +927,7 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_caller_profile(switch_channel_t *channel) { switch_caller_profile_t *profile; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); profile = channel->caller_profile; switch_mutex_unlock(channel->profile_mutex); @@ -936,26 +936,28 @@ SWITCH_DECLARE(void) switch_channel_set_originator_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile) { - assert(channel != NULL); + switch_assert(channel != NULL); + switch_assert(channel->caller_profile != NULL); switch_mutex_lock(channel->profile_mutex); if (channel->caller_profile) { caller_profile->next = channel->caller_profile->originator_caller_profile; channel->caller_profile->originator_caller_profile = caller_profile; } - assert(channel->caller_profile->originator_caller_profile->next != channel->caller_profile->originator_caller_profile); + switch_assert(channel->caller_profile->originator_caller_profile->next != channel->caller_profile->originator_caller_profile); switch_mutex_unlock(channel->profile_mutex); } SWITCH_DECLARE(void) switch_channel_set_originatee_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile) { - assert(channel != NULL); + switch_assert(channel != NULL); + switch_assert(channel->caller_profile != NULL); switch_mutex_lock(channel->profile_mutex); if (channel->caller_profile) { caller_profile->next = channel->caller_profile->originatee_caller_profile; channel->caller_profile->originatee_caller_profile = caller_profile; } - assert(channel->caller_profile->originatee_caller_profile->next != channel->caller_profile->originatee_caller_profile); + switch_assert(channel->caller_profile->originatee_caller_profile->next != channel->caller_profile->originatee_caller_profile); switch_mutex_unlock(channel->profile_mutex); } @@ -963,7 +965,7 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_originator_caller_profile(switch_channel_t *channel) { switch_caller_profile_t *profile = NULL; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); if (channel->caller_profile) { @@ -977,7 +979,7 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_originatee_caller_profile(switch_channel_t *channel) { switch_caller_profile_t *profile = NULL; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); if (channel->caller_profile) { @@ -990,8 +992,8 @@ SWITCH_DECLARE(char *) switch_channel_get_uuid(switch_channel_t *channel) { - assert(channel != NULL); - assert(channel->session != NULL); + switch_assert(channel != NULL); + switch_assert(channel->session != NULL); return switch_core_session_get_uuid(channel->session); } @@ -999,7 +1001,7 @@ { int x, index; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->flag_mutex); for (x = 0; x < SWITCH_MAX_STATE_HANDLERS; x++) { if (channel->state_handlers[x] == state_handler) { @@ -1025,7 +1027,7 @@ { const switch_state_handler_table_t *h = NULL; - assert(channel != NULL); + switch_assert(channel != NULL); if (index > SWITCH_MAX_STATE_HANDLERS || index > channel->state_handler_index) { return NULL; @@ -1046,7 +1048,7 @@ switch_mutex_lock(channel->flag_mutex); - assert(channel != NULL); + switch_assert(channel != NULL); channel->state_handler_index = 0; if (state_handler) { @@ -1072,7 +1074,7 @@ SWITCH_DECLARE(void) switch_channel_set_caller_extension(switch_channel_t *channel, switch_caller_extension_t *caller_extension) { - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); caller_extension->next = channel->caller_profile->caller_extension; @@ -1085,7 +1087,7 @@ { switch_caller_extension_t *extension = NULL; - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); if (channel->caller_profile) { extension = channel->caller_profile->caller_extension; @@ -1098,7 +1100,7 @@ SWITCH_DECLARE(switch_channel_state_t) switch_channel_perform_hangup(switch_channel_t *channel, const char *file, const char *func, int line, switch_call_cause_t hangup_cause) { - assert(channel != NULL); + switch_assert(channel != NULL); switch_mutex_lock(channel->flag_mutex); if (channel->caller_profile && channel->caller_profile->times && !channel->caller_profile->times->hungup) { @@ -1182,7 +1184,7 @@ switch_core_session_message_t msg; switch_status_t status; - assert(channel != NULL); + switch_assert(channel != NULL); if (channel->hangup_cause || channel->state >= CS_HANGUP) { return SWITCH_STATUS_FALSE; @@ -1212,7 +1214,7 @@ switch_core_session_message_t msg; switch_status_t status; - assert(channel != NULL); + switch_assert(channel != NULL); if (channel->hangup_cause || channel->state >= CS_HANGUP) { return SWITCH_STATUS_FALSE; @@ -1243,7 +1245,7 @@ const char *uuid; switch_core_session_t *other_session; - assert(channel != NULL); + switch_assert(channel != NULL); if (channel->hangup_cause || channel->state >= CS_HANGUP) { return SWITCH_STATUS_FALSE; @@ -1286,7 +1288,7 @@ switch_core_session_message_t msg; switch_status_t status; - assert(channel != NULL); + switch_assert(channel != NULL); if (channel->hangup_cause || channel->state >= CS_HANGUP) { return SWITCH_STATUS_FALSE; @@ -1471,7 +1473,7 @@ sub_val = switch_channel_get_variable(channel, vname); if (offset || ooffset) { cloned_sub_val = strdup(sub_val); - assert(cloned_sub_val); + switch_assert(cloned_sub_val); sub_val = cloned_sub_val; } @@ -1583,13 +1585,13 @@ } encode_buf = malloc(encode_len); - assert(encode_buf); + switch_assert(encode_buf); if (!caller_profile) { caller_profile = switch_channel_get_caller_profile(channel); } - assert(caller_profile != NULL); + switch_assert(caller_profile != NULL); prof[0] = caller_profile->context; prof[1] = caller_profile->destination_number; @@ -1647,7 +1649,7 @@ encode_len = new_len; tmp = realloc(encode_buf, encode_len); - assert(tmp); + switch_assert(tmp); encode_buf = tmp; } Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core.c Tue Dec 11 16:35:05 2007 @@ -182,10 +182,10 @@ switch_frame_t *read_frame; int stream_id = *stream_id_p; - assert(thread != NULL); - assert(session != NULL); + switch_assert(thread != NULL); + switch_assert(session != NULL); channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_channel_set_flag(channel, CF_SERVICE); while (data->running > 0) { @@ -536,7 +536,9 @@ #ifdef WIN32 snprintf(path, sizeof(path), "Global\\Freeswitch.%d", getpid()); shutdown_event = CreateEvent(NULL, FALSE, FALSE, path); - WaitForSingleObject(shutdown_event, INFINITE); + if (shutdown_event) { + WaitForSingleObject(shutdown_event, INFINITE); + } #else runtime.running = 1; while (runtime.running) { @@ -568,8 +570,8 @@ const char *check = (const char *) switch_core_hash_find(runtime.mime_types, ext); switch_status_t status = SWITCH_STATUS_FALSE; - assert(type); - assert(ext); + switch_assert(type); + switch_assert(ext); if (!check) { char *ptype = switch_core_permanent_strdup(type); @@ -578,7 +580,7 @@ char *argv[20] = { 0 }; int x; - assert(ext_list); + switch_assert(ext_list); if ((argc = switch_separate_string(ext_list, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) { @@ -603,7 +605,7 @@ char *mime_path = NULL; mime_path = switch_mprintf("%s/%s", SWITCH_GLOBAL_dirs.conf_dir, cf); - assert(mime_path); + switch_assert(mime_path); fd = open(mime_path, O_RDONLY); if (fd <= 0) { @@ -664,7 +666,7 @@ *err = "FATAL ERROR! Could noat allocate memory pool\n"; return SWITCH_STATUS_MEMERR; } - assert(runtime.memory_pool != NULL); + switch_assert(runtime.memory_pool != NULL); switch_mutex_init(&runtime.throttle_mutex, SWITCH_MUTEX_NESTED, runtime.memory_pool); switch_core_set_globals(); switch_core_session_init(runtime.memory_pool); @@ -750,7 +752,7 @@ runtime.console = stdout; } - assert(runtime.memory_pool != NULL); + switch_assert(runtime.memory_pool != NULL); switch_log_init(runtime.memory_pool); switch_event_init(runtime.memory_pool); @@ -994,13 +996,12 @@ } switch_scheduler_task_thread_stop(); + switch_rtp_shutdown(); switch_xml_destroy(); switch_core_memory_stop(); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Finalizing Shutdown.\n"); switch_log_shutdown(); - - if (runtime.console && runtime.console != stdout && runtime.console != stderr) { fclose(runtime.console); runtime.console = NULL; @@ -1028,6 +1029,18 @@ return SWITCH_STATUS_SUCCESS; } +SWITCH_DECLARE(switch_status_t) switch_core_management_exec(char *relative_oid, switch_management_action_t action, char *data, switch_size_t datalen) +{ + const switch_management_interface_t *ptr; + switch_status_t status = SWITCH_STATUS_FALSE; + + if ((ptr = switch_loadable_module_get_management_interface(relative_oid))) { + status = ptr->management_function(relative_oid, action, data, datalen); + } + + return status; +} + SWITCH_DECLARE(void) switch_core_memory_reclaim_all(void) { switch_core_memory_reclaim_logger(); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_asr.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_asr.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_asr.c Tue Dec 11 16:35:05 2007 @@ -54,7 +54,7 @@ } } - assert(ah != NULL); + switch_assert(ah != NULL); if ((ah->asr_interface = switch_loadable_module_get_asr_interface(module_name)) == 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "invalid asr module [%s]!\n", module_name); @@ -86,7 +86,7 @@ char *epath = NULL; switch_status_t status; - assert(ah != NULL); + switch_assert(ah != NULL); if (!switch_is_file_path(path)) { epath = switch_mprintf("%s%s%s", SWITCH_GLOBAL_dirs.grammar_dir, SWITCH_PATH_SEPARATOR, path); @@ -103,7 +103,7 @@ { switch_status_t status; - assert(ah != NULL); + switch_assert(ah != NULL); status = ah->asr_interface->asr_unload_grammar(ah, grammar); return status; @@ -111,42 +111,42 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_pause(switch_asr_handle_t *ah) { - assert(ah != NULL); + switch_assert(ah != NULL); return ah->asr_interface->asr_pause(ah); } SWITCH_DECLARE(switch_status_t) switch_core_asr_resume(switch_asr_handle_t *ah) { - assert(ah != NULL); + switch_assert(ah != NULL); return ah->asr_interface->asr_resume(ah); } SWITCH_DECLARE(switch_status_t) switch_core_asr_close(switch_asr_handle_t *ah, switch_asr_flag_t *flags) { - assert(ah != NULL); + switch_assert(ah != NULL); return ah->asr_interface->asr_close(ah, flags); } SWITCH_DECLARE(switch_status_t) switch_core_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags) { - assert(ah != NULL); + switch_assert(ah != NULL); return ah->asr_interface->asr_feed(ah, data, len, flags); } SWITCH_DECLARE(switch_status_t) switch_core_asr_check_results(switch_asr_handle_t *ah, switch_asr_flag_t *flags) { - assert(ah != NULL); + switch_assert(ah != NULL); return ah->asr_interface->asr_check_results(ah, flags); } SWITCH_DECLARE(switch_status_t) switch_core_asr_get_results(switch_asr_handle_t *ah, char **xmlstr, switch_asr_flag_t *flags) { - assert(ah != NULL); + switch_assert(ah != NULL); return ah->asr_interface->asr_get_results(ah, xmlstr, flags); } Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_codec.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_codec.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_codec.c Tue Dec 11 16:35:05 2007 @@ -40,7 +40,7 @@ switch_channel_t *channel; char tmp[30]; - assert(session != NULL); + switch_assert(session != NULL); channel = switch_core_session_get_channel(session); if (switch_event_create(&event, SWITCH_EVENT_CODEC) == SWITCH_STATUS_SUCCESS) { @@ -77,7 +77,7 @@ switch_channel_t *channel; char tmp[30]; - assert(session != NULL); + switch_assert(session != NULL); channel = switch_core_session_get_channel(session); @@ -112,8 +112,8 @@ const switch_codec_implementation_t *iptr, *implementation = NULL; char *mode = fmtp; - assert(codec != NULL); - assert(codec_name != NULL); + switch_assert(codec != NULL); + switch_assert(codec_name != NULL); memset(codec, 0, sizeof(*codec)); @@ -199,9 +199,9 @@ uint32_t decoded_rate, void *encoded_data, uint32_t * encoded_data_len, uint32_t * encoded_rate, unsigned int *flag) { - assert(codec != NULL); - assert(encoded_data != NULL); - assert(decoded_data != NULL); + switch_assert(codec != NULL); + switch_assert(encoded_data != NULL); + switch_assert(decoded_data != NULL); if (!codec->implementation) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Codec is not initilized!\n"); @@ -227,9 +227,9 @@ void *decoded_data, uint32_t * decoded_data_len, uint32_t * decoded_rate, unsigned int *flag) { - assert(codec != NULL); - assert(encoded_data != NULL); - assert(decoded_data != NULL); + switch_assert(codec != NULL); + switch_assert(encoded_data != NULL); + switch_assert(decoded_data != NULL); @@ -251,7 +251,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_codec_destroy(switch_codec_t *codec) { - assert(codec != NULL); + switch_assert(codec != NULL); if (!codec->implementation) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Codec is not initilized!\n"); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_file.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_file.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_file.c Tue Dec 11 16:35:05 2007 @@ -94,16 +94,16 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_read(switch_file_handle_t *fh, void *data, switch_size_t *len) { - assert(fh != NULL); - assert(fh->file_interface != NULL); + switch_assert(fh != NULL); + switch_assert(fh->file_interface != NULL); return fh->file_interface->file_read(fh, data, len); } SWITCH_DECLARE(switch_status_t) switch_core_file_write(switch_file_handle_t *fh, void *data, switch_size_t *len) { - assert(fh != NULL); - assert(fh->file_interface != NULL); + switch_assert(fh != NULL); + switch_assert(fh->file_interface != NULL); return fh->file_interface->file_write(fh, data, len); } @@ -112,8 +112,8 @@ { switch_status_t status; - assert(fh != NULL); - assert(fh->file_interface != NULL); + switch_assert(fh != NULL); + switch_assert(fh->file_interface != NULL); switch_set_flag(fh, SWITCH_FILE_SEEK); status = fh->file_interface->file_seek(fh, cur_pos, samples, whence); @@ -125,16 +125,16 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_set_string(switch_file_handle_t *fh, switch_audio_col_t col, const char *string) { - assert(fh != NULL); - assert(fh->file_interface != NULL); + switch_assert(fh != NULL); + switch_assert(fh->file_interface != NULL); return fh->file_interface->file_set_string(fh, col, string); } SWITCH_DECLARE(switch_status_t) switch_core_file_get_string(switch_file_handle_t *fh, switch_audio_col_t col, const char **string) { - assert(fh != NULL); - assert(fh->file_interface != NULL); + switch_assert(fh != NULL); + switch_assert(fh->file_interface != NULL); return fh->file_interface->file_get_string(fh, col, string); @@ -143,8 +143,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_close(switch_file_handle_t *fh) { - assert(fh != NULL); - assert(fh->file_interface != NULL); + switch_assert(fh != NULL); + switch_assert(fh->file_interface != NULL); switch_clear_flag(fh, SWITCH_FILE_OPEN); return fh->file_interface->file_close(fh); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_hash.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_hash.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_hash.c Tue Dec 11 16:35:05 2007 @@ -47,7 +47,7 @@ switch_hash_t *newhash; newhash = switch_core_alloc(pool, sizeof(*newhash)); - assert(newhash); + switch_assert(newhash); sqlite3HashInit(&newhash->table, SQLITE_HASH_STRING, 1); *hash = newhash; @@ -58,7 +58,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_hash_destroy(switch_hash_t **hash) { - assert(hash != NULL && *hash != NULL); + switch_assert(hash != NULL && *hash != NULL); sqlite3HashClear(&(*hash)->table); *hash = NULL; return SWITCH_STATUS_SUCCESS; @@ -145,9 +145,9 @@ { if (key) { *key = sqliteHashKey((HashElem *) hi); - } - if (klen) { - *klen = strlen((char *) *key) + 1; + if (klen) { + *klen = strlen((char *) *key) + 1; + } } if (val) { *val = sqliteHashData((HashElem *) hi); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_io.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_io.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_io.c Tue Dec 11 16:35:05 2007 @@ -76,8 +76,8 @@ goto done; } - assert(session != NULL); - assert(*frame != NULL); + switch_assert(session != NULL); + switch_assert(*frame != NULL); if (switch_test_flag(*frame, SFF_CNG)) { status = SWITCH_STATUS_SUCCESS; @@ -101,7 +101,7 @@ status = SWITCH_STATUS_FALSE; need_codec = perfect = 0; - assert(session != NULL); + switch_assert(session != NULL); *frame = NULL; if (switch_channel_test_flag(session->channel, CF_HOLD)) { @@ -128,8 +128,8 @@ goto done; } - assert(session != NULL); - assert(*frame != NULL); + switch_assert(session != NULL); + switch_assert(*frame != NULL); if (switch_test_flag(*frame, SFF_CNG)) { @@ -137,7 +137,7 @@ goto done; } - assert((*frame)->codec != NULL); + switch_assert((*frame)->codec != NULL); if ((session->read_codec && (*frame)->codec && session->read_codec->implementation != (*frame)->codec->implementation)) { need_codec = TRUE; } @@ -313,9 +313,9 @@ } session->enc_read_frame.datalen = session->enc_read_frame.buflen; - assert(session->read_codec != NULL); - assert(enc_frame != NULL); - assert(enc_frame->data != NULL); + switch_assert(session->read_codec != NULL); + switch_assert(enc_frame != NULL); + switch_assert(enc_frame->data != NULL); status = switch_core_codec_encode(session->read_codec, enc_frame->codec, @@ -433,8 +433,8 @@ unsigned int flag = 0, need_codec = 0, perfect = 0, do_bugs = 0, do_write = 0, do_resample = 0; switch_io_flag_t io_flag = SWITCH_IO_FLAG_NOOP; - assert(session != NULL); - assert(frame != NULL); + switch_assert(session != NULL); + switch_assert(frame != NULL); if (switch_channel_test_flag(session->channel, CF_HOLD)) { @@ -450,7 +450,7 @@ return SWITCH_STATUS_SUCCESS; } - assert(frame->codec != NULL); + switch_assert(frame->codec != NULL); if ((session->write_codec && frame->codec && session->write_codec->implementation != frame->codec->implementation)) { need_codec = TRUE; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_memory.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_memory.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_memory.c Tue Dec 11 16:35:05 2007 @@ -45,8 +45,8 @@ SWITCH_DECLARE(switch_memory_pool_t *) switch_core_session_get_pool(switch_core_session_t *session) { - assert(session != NULL); - assert(session->pool != NULL); + switch_assert(session != NULL); + switch_assert(session->pool != NULL); return session->pool; } @@ -55,8 +55,8 @@ SWITCH_DECLARE(void *) switch_core_session_alloc(switch_core_session_t *session, switch_size_t memory) { void *ptr = NULL; - assert(session != NULL); - assert(session->pool != NULL); + switch_assert(session != NULL); + switch_assert(session->pool != NULL); #ifdef LOCK_MORE switch_mutex_lock(memory_manager.mem_lock); @@ -67,7 +67,7 @@ #endif ptr = apr_palloc(session->pool, memory); - assert(ptr != NULL); + switch_assert(ptr != NULL); memset(ptr, 0, memory); @@ -84,7 +84,7 @@ SWITCH_DECLARE(void *) switch_core_permanent_alloc(switch_size_t memory) { void *ptr = NULL; - assert(memory_manager.memory_pool != NULL); + switch_assert(memory_manager.memory_pool != NULL); #ifdef LOCK_MORE switch_mutex_lock(memory_manager.mem_lock); @@ -96,7 +96,7 @@ ptr = apr_palloc(memory_manager.memory_pool, memory); - assert(ptr != NULL); + switch_assert(ptr != NULL); memset(ptr, 0, memory); #ifdef LOCK_MORE @@ -110,7 +110,7 @@ { char *duped = NULL; switch_size_t len; - assert(memory_manager.memory_pool != NULL); + switch_assert(memory_manager.memory_pool != NULL); if (!todup) return NULL; @@ -121,7 +121,7 @@ len = strlen(todup) + 1; duped = apr_pstrmemdup(memory_manager.memory_pool, todup, len); - assert(duped != NULL); + switch_assert(duped != NULL); #ifdef DEBUG_ALLOC printf("Perm Allocate %d\n", (int)len); @@ -143,12 +143,12 @@ switch_mutex_lock(memory_manager.mem_lock); #endif - assert(session != NULL); - assert(session->pool != NULL); + switch_assert(session != NULL); + switch_assert(session->pool != NULL); va_start(ap, fmt); result = apr_pvsprintf(session->pool, fmt, ap); - assert(result != NULL); + switch_assert(result != NULL); va_end(ap); @@ -164,7 +164,7 @@ va_list ap; char *result = NULL; - assert(pool != NULL); + switch_assert(pool != NULL); #ifdef LOCK_MORE switch_mutex_lock(memory_manager.mem_lock); @@ -173,7 +173,7 @@ va_start(ap, fmt); result = apr_pvsprintf(pool, fmt, ap); - assert(result != NULL); + switch_assert(result != NULL); va_end(ap); #ifdef LOCK_MORE @@ -188,8 +188,8 @@ { char *duped = NULL; switch_size_t len; - assert(session != NULL); - assert(session->pool != NULL); + switch_assert(session != NULL); + switch_assert(session->pool != NULL); if (!todup) { return NULL; @@ -206,7 +206,7 @@ #endif duped = apr_pstrmemdup(session->pool, todup, len); - assert(duped != NULL); + switch_assert(duped != NULL); #ifdef LOCK_MORE @@ -221,7 +221,7 @@ { char *duped = NULL; switch_size_t len; - assert(pool != NULL); + switch_assert(pool != NULL); if (!todup) { return NULL; @@ -238,7 +238,7 @@ #endif duped = apr_pstrmemdup(pool, todup, len); - assert(duped != NULL); + switch_assert(duped != NULL); #ifdef LOCK_MORE switch_mutex_unlock(memory_manager.mem_lock); @@ -253,13 +253,13 @@ void *pop; switch_mutex_lock(memory_manager.mem_lock); - assert(pool != NULL); + switch_assert(pool != NULL); if (switch_queue_trypop(memory_manager.pool_recycle_queue, &pop) == SWITCH_STATUS_SUCCESS) { *pool = (switch_memory_pool_t *) pop; } else { apr_pool_create(pool, NULL); - assert(*pool != NULL); + switch_assert(*pool != NULL); } #ifdef DEBUG_ALLOC2 @@ -276,7 +276,7 @@ //char tmp[128] = ""; - assert(pool != NULL); + switch_assert(pool != NULL); #ifdef DEBUG_ALLOC2 printf("Free Pool %s %s:%d\n", file, func, line); @@ -296,7 +296,7 @@ { void *ptr = NULL; - assert(pool != NULL); + switch_assert(pool != NULL); #ifdef LOCK_MORE switch_mutex_lock(memory_manager.mem_lock); @@ -304,11 +304,11 @@ #ifdef DEBUG_ALLOC printf("Allocate %d\n", (int)memory); - /*assert(memory < 20000);*/ + /*switch_assert(memory < 20000);*/ #endif ptr = apr_palloc(pool, memory); - assert(ptr != NULL); + switch_assert(ptr != NULL); memset(ptr, 0, memory); @@ -413,7 +413,7 @@ memset(&memory_manager, 0, sizeof(memory_manager)); apr_pool_create(&memory_manager.memory_pool, NULL); - assert(memory_manager.memory_pool != NULL); + switch_assert(memory_manager.memory_pool != NULL); switch_mutex_init(&memory_manager.mem_lock, SWITCH_MUTEX_NESTED, memory_manager.memory_pool); switch_queue_create(&memory_manager.pool_queue, 50000, memory_manager.memory_pool); switch_queue_create(&memory_manager.pool_recycle_queue, 50000, memory_manager.memory_pool); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_port_allocator.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_port_allocator.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_port_allocator.c Tue Dec 11 16:35:05 2007 @@ -38,18 +38,21 @@ switch_port_t start; switch_port_t end; switch_port_t next; - uint8_t inc; + switch_byte_t *track; + uint32_t track_len; + uint32_t track_used; + switch_port_flag_t flags; switch_mutex_t *mutex; switch_memory_pool_t *pool; }; SWITCH_DECLARE(switch_status_t) switch_core_port_allocator_new(switch_port_t start, - switch_port_t end, uint8_t inc, switch_core_port_allocator_t **new_allocator) + switch_port_t end, switch_port_flag_t flags, switch_core_port_allocator_t **new_allocator) { switch_status_t status; switch_memory_pool_t *pool; switch_core_port_allocator_t *alloc; - + if ((status = switch_core_new_memory_pool(&pool)) != SWITCH_STATUS_SUCCESS) { return status; } @@ -58,13 +61,21 @@ switch_core_destroy_memory_pool(&pool); return SWITCH_STATUS_MEMERR; } + + alloc->track_len = (end - start) + 2; + alloc->flags = flags; + + if (!(switch_test_flag(alloc, SPF_EVEN) && switch_test_flag(alloc, SPF_ODD))) { + alloc->track_len /= 2; + } + + alloc->track = switch_core_alloc(pool, (alloc->track_len + 2) * sizeof(switch_byte_t)); alloc->start = start; alloc->next = start; alloc->end = end; - if (!(alloc->inc = inc)) { - alloc->inc = 2; - } + + switch_mutex_init(&alloc->mutex, SWITCH_MUTEX_NESTED, pool); alloc->pool = pool; *new_allocator = alloc; @@ -72,34 +83,89 @@ return SWITCH_STATUS_SUCCESS; } -SWITCH_DECLARE(switch_status_t) switch_core_management_exec(char *relative_oid, switch_management_action_t action, char *data, switch_size_t datalen) + +SWITCH_DECLARE(switch_status_t) switch_core_port_allocator_request_port(switch_core_port_allocator_t *alloc, switch_port_t *port_ptr) { - const switch_management_interface_t *ptr; + switch_port_t port = 0; switch_status_t status = SWITCH_STATUS_FALSE; + int even = switch_test_flag(alloc, SPF_EVEN); + int odd = switch_test_flag(alloc, SPF_ODD); + + switch_mutex_lock(alloc->mutex); + srand(getpid() + (unsigned)time(NULL)); + + while(alloc->track_used < alloc->track_len) { + double r; + uint32_t index; + int tries = 0; + + do { + r = ((double)rand() / ((double)(RAND_MAX)+(double)(1))); + index = (int) (r * alloc->track_len); + tries++; + } while((alloc->track[index] || index >= alloc->track_len) && tries < 10000); + + while(alloc->track[index]) { + if (++index >= alloc->track_len) { + index = 0; + } + } + + if (index < alloc->track_len) { + alloc->track[index] = 1; + alloc->track_used++; + status = SWITCH_STATUS_SUCCESS; + + if ((even && odd)) { + port = (switch_port_t)(index + alloc->start); + } else { + port = (switch_port_t)(index + (alloc->start / 2)); + port *= 2; + } + goto end; + } + } + + + end: - if ((ptr = switch_loadable_module_get_management_interface(relative_oid))) { - status = ptr->management_function(relative_oid, action, data, datalen); + switch_mutex_unlock(alloc->mutex); + + if (status == SWITCH_STATUS_SUCCESS) { + *port_ptr = port; + } else { + *port_ptr = 0; } + return status; + } - -SWITCH_DECLARE(switch_port_t) switch_core_port_allocator_request_port(switch_core_port_allocator_t *alloc) +SWITCH_DECLARE(switch_status_t) switch_core_port_allocator_free_port(switch_core_port_allocator_t *alloc, switch_port_t port) { - switch_port_t port; + switch_status_t status = SWITCH_STATUS_FALSE; + int even = switch_test_flag(alloc, SPF_EVEN); + int odd = switch_test_flag(alloc, SPF_ODD); + int index = port - alloc->start; + + if (!(even && odd)) { + index /= 2; + } switch_mutex_lock(alloc->mutex); - port = alloc->next; - alloc->next = alloc->next + alloc->inc; - if (alloc->next > alloc->end) { - alloc->next = alloc->start; + if (alloc->track[index]) { + alloc->track[index] = 0; + alloc->track_used--; + status = SWITCH_STATUS_SUCCESS; } switch_mutex_unlock(alloc->mutex); - return port; + + return status; } + SWITCH_DECLARE(void) switch_core_port_allocator_destroy(switch_core_port_allocator_t **alloc) { switch_memory_pool_t *pool = (*alloc)->pool; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_session.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_session.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_session.c Tue Dec 11 16:35:05 2007 @@ -144,14 +144,14 @@ SWITCH_DECLARE(void *) switch_core_session_get_private(switch_core_session_t *session) { - assert(session != NULL); + switch_assert(session != NULL); return session->private_info; } SWITCH_DECLARE(switch_status_t) switch_core_session_set_private(switch_core_session_t *session, void *private_info) { - assert(session != NULL); + switch_assert(session != NULL); session->private_info = private_info; return SWITCH_STATUS_SUCCESS; } @@ -231,7 +231,7 @@ return SWITCH_CAUSE_CHAN_NOT_IMPLEMENTED; } - assert(*new_session != NULL); + switch_assert(*new_session != NULL); if (*new_session) { switch_caller_profile_t *profile = NULL, *peer_profile = NULL, *cloned_profile = NULL; @@ -270,13 +270,13 @@ int x; for (x = 0; x < argc; x++) { - const char *val; - if ((val = switch_channel_get_variable(channel, argv[x]))) { - char *var = argv[x]; - if (!strncasecmp(var, "nolocal:", 8)) { - var += 8; + const char *vval; + if ((vval = switch_channel_get_variable(channel, argv[x]))) { + char *vvar = argv[x]; + if (!strncasecmp(vvar, "nolocal:", 8)) { + vvar += 8; } - switch_channel_set_variable(peer_channel, var, val); + switch_channel_set_variable(peer_channel, vvar, vval); } } } @@ -321,7 +321,7 @@ switch_io_event_hook_receive_message_t *ptr; switch_status_t status = SWITCH_STATUS_SUCCESS; - assert(session != NULL); + switch_assert(session != NULL); if (session->endpoint_interface->io_routines->receive_message) { status = session->endpoint_interface->io_routines->receive_message(session, message); @@ -348,10 +348,10 @@ switch_channel_t *channel; switch_status_t status = SWITCH_STATUS_SUCCESS; - assert(session != NULL); + switch_assert(session != NULL); channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) { msg.message_id = indication; @@ -385,7 +385,7 @@ { switch_status_t status = SWITCH_STATUS_FALSE; - assert(session != NULL); + switch_assert(session != NULL); if (session->message_queue) { if (switch_queue_trypush(session->message_queue, message) == SWITCH_STATUS_SUCCESS) { @@ -401,7 +401,7 @@ switch_status_t status = SWITCH_STATUS_FALSE; void *pop; - assert(session != NULL); + switch_assert(session != NULL); if (session->message_queue) { if ((status = (switch_status_t) switch_queue_trypop(session->message_queue, &pop)) == SWITCH_STATUS_SUCCESS) { @@ -433,7 +433,7 @@ switch_io_event_hook_receive_event_t *ptr; switch_status_t status = SWITCH_STATUS_FALSE; - assert(session != NULL); + switch_assert(session != NULL); /* Acquire a read lock on the session or forget it the channel is dead */ if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) { @@ -470,7 +470,7 @@ { switch_status_t status = SWITCH_STATUS_FALSE; - assert(session != NULL); + switch_assert(session != NULL); if (session->event_queue) { if (switch_queue_trypush(session->event_queue, *event) == SWITCH_STATUS_SUCCESS) { @@ -496,7 +496,7 @@ switch_status_t status = SWITCH_STATUS_FALSE; void *pop; - assert(session != NULL); + switch_assert(session != NULL); if (session->event_queue) { if ((status = (switch_status_t) switch_queue_trypop(session->event_queue, &pop)) == SWITCH_STATUS_SUCCESS) { @@ -511,7 +511,7 @@ { switch_status_t status = SWITCH_STATUS_FALSE; - assert(session != NULL); + switch_assert(session != NULL); if (session->private_event_queue) { (*event)->event_id = SWITCH_EVENT_PRIVATE_COMMAND; @@ -540,10 +540,10 @@ void *pop; switch_channel_t *channel; - assert(session != NULL); + switch_assert(session != NULL); channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (switch_channel_test_flag(channel, CF_EVENT_LOCK)) { @@ -849,8 +849,8 @@ SWITCH_DECLARE(uint8_t) switch_core_session_compare(switch_core_session_t *a, switch_core_session_t *b) { - assert(a != NULL); - assert(b != NULL); + switch_assert(a != NULL); + switch_assert(b != NULL); return (uint8_t) (a->endpoint_interface == b->endpoint_interface); } @@ -911,7 +911,7 @@ log = switch_core_session_alloc(session, sizeof(*log)); - assert(log != NULL); + switch_assert(log != NULL); log->app = switch_core_session_strdup(session, application_interface->interface_name); log->arg = switch_core_session_strdup(session, arg); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_speech.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_speech.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_speech.c Tue Dec 11 16:35:05 2007 @@ -87,14 +87,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_speech_feed_tts(switch_speech_handle_t *sh, char *text, switch_speech_flag_t *flags) { - assert(sh != NULL); + switch_assert(sh != NULL); return sh->speech_interface->speech_feed_tts(sh, text, flags); } SWITCH_DECLARE(void) switch_core_speech_flush_tts(switch_speech_handle_t *sh) { - assert(sh != NULL); + switch_assert(sh != NULL); if (sh->speech_interface->speech_flush_tts) { sh->speech_interface->speech_flush_tts(sh); @@ -103,7 +103,7 @@ SWITCH_DECLARE(void) switch_core_speech_text_param_tts(switch_speech_handle_t *sh, char *param, const char *val) { - assert(sh != NULL); + switch_assert(sh != NULL); if (sh->speech_interface->speech_text_param_tts) { sh->speech_interface->speech_text_param_tts(sh, param, val); @@ -112,7 +112,7 @@ SWITCH_DECLARE(void) switch_core_speech_numeric_param_tts(switch_speech_handle_t *sh, char *param, int val) { - assert(sh != NULL); + switch_assert(sh != NULL); if (sh->speech_interface->speech_numeric_param_tts) { sh->speech_interface->speech_numeric_param_tts(sh, param, val); @@ -121,7 +121,7 @@ SWITCH_DECLARE(void) switch_core_speech_float_param_tts(switch_speech_handle_t *sh, char *param, double val) { - assert(sh != NULL); + switch_assert(sh != NULL); if (sh->speech_interface->speech_float_param_tts) { sh->speech_interface->speech_float_param_tts(sh, param, val); @@ -131,7 +131,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_speech_read_tts(switch_speech_handle_t *sh, void *data, switch_size_t *datalen, uint32_t * rate, switch_speech_flag_t *flags) { - assert(sh != NULL); + switch_assert(sh != NULL); return sh->speech_interface->speech_read_tts(sh, data, datalen, rate, flags); } Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_sqldb.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_sqldb.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_sqldb.c Tue Dec 11 16:35:05 2007 @@ -154,10 +154,12 @@ uint8_t trans = 0, nothing_in_queue = 0; uint32_t target = 1000; switch_size_t len = 0, sql_len = SQLLEN; - char *sqlbuf = (char *) malloc(sql_len); + char *tmp, *sqlbuf = (char *) malloc(sql_len); char *sql; switch_size_t newlen; + switch_assert(sqlbuf); + if (!sql_manager.event_db) { sql_manager.event_db = switch_core_db_handle(); } @@ -180,10 +182,12 @@ itterations++; if (len + newlen > sql_len) { sql_len = len + SQLLEN; - if (!(sqlbuf = realloc(sqlbuf, sql_len))) { + if (!(tmp = realloc(sqlbuf, sql_len))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL thread ending on mem err\n"); + abort(); break; } + sqlbuf = tmp; } sprintf(sqlbuf + len, "%s;\n", sql); len += newlen; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_state_machine.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_state_machine.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_core_state_machine.c Tue Dec 11 16:35:05 2007 @@ -201,19 +201,19 @@ static void switch_core_standard_on_transmit(switch_core_session_t *session) { - assert(session != NULL); + switch_assert(session != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Standard TRANSMIT\n"); } static void switch_core_standard_on_hold(switch_core_session_t *session) { - assert(session != NULL); + switch_assert(session != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Standard HOLD\n"); } static void switch_core_standard_on_hibernate(switch_core_session_t *session) { - assert(session != NULL); + switch_assert(session != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Standard HIBERNATE\n"); } @@ -368,14 +368,14 @@ */ - assert(session != NULL); + switch_assert(session != NULL); session->thread_running = 1; endpoint_interface = session->endpoint_interface; - assert(endpoint_interface != NULL); + switch_assert(endpoint_interface != NULL); driver_state_handler = endpoint_interface->state_handler; - assert(driver_state_handler != NULL); + switch_assert(driver_state_handler != NULL); switch_mutex_lock(session->mutex); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_event.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_event.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_event.c Tue Dec 11 16:35:05 2007 @@ -89,7 +89,7 @@ { size_t len = strlen (s) + 1; void *new = malloc (len); - assert(new); + switch_assert(new); return (char *) memcpy (new, s, len); } @@ -207,13 +207,13 @@ void *pop; int i, len[3] = { 0, 0, 0 }; - assert(thread != NULL); - assert(obj == NULL); - assert(POOL_LOCK != NULL); - assert(RUNTIME_POOL != NULL); - assert(EVENT_QUEUE_MUTEX != NULL); - assert(EVENT_QUEUE_HAVEMORE_MUTEX != NULL); - assert(EVENT_QUEUE_CONDITIONAL != NULL); + switch_assert(thread != NULL); + switch_assert(obj == NULL); + switch_assert(POOL_LOCK != NULL); + switch_assert(RUNTIME_POOL != NULL); + switch_assert(EVENT_QUEUE_MUTEX != NULL); + switch_assert(EVENT_QUEUE_HAVEMORE_MUTEX != NULL); + switch_assert(EVENT_QUEUE_CONDITIONAL != NULL); THREAD_RUNNING = 1; queues[0] = EVENT_QUEUE[SWITCH_PRIORITY_HIGH]; @@ -319,8 +319,8 @@ SWITCH_DECLARE(char *) switch_event_name(switch_event_types_t event) { - assert(BLOCK != NULL); - assert(RUNTIME_POOL != NULL); + switch_assert(BLOCK != NULL); + switch_assert(RUNTIME_POOL != NULL); return EVENT_NAMES[event]; } @@ -328,8 +328,8 @@ SWITCH_DECLARE(switch_status_t) switch_name_event(char *name, switch_event_types_t *type) { switch_event_types_t x; - assert(BLOCK != NULL); - assert(RUNTIME_POOL != NULL); + switch_assert(BLOCK != NULL); + switch_assert(RUNTIME_POOL != NULL); for (x = 0; x <= SWITCH_EVENT_ALL; x++) { if ((strlen(name) > 13 && !strcasecmp(name + 13, EVENT_NAMES[x])) || !strcasecmp(name, EVENT_NAMES[x])) { @@ -347,8 +347,8 @@ switch_event_subclass_t *subclass; - assert(RUNTIME_POOL != NULL); - assert(CUSTOM_HASH != NULL); + switch_assert(RUNTIME_POOL != NULL); + switch_assert(CUSTOM_HASH != NULL); if (switch_core_hash_find(CUSTOM_HASH, subclass_name)) { return SWITCH_STATUS_INUSE; @@ -448,7 +448,7 @@ switch_find_local_ip(guess_ip_v4, sizeof(guess_ip_v4), AF_INET); switch_find_local_ip(guess_ip_v6, sizeof(guess_ip_v6), AF_INET6); - assert(pool != NULL); + switch_assert(pool != NULL); THRUNTIME_POOL = RUNTIME_POOL = pool; /* @@ -501,7 +501,7 @@ *event = (switch_event_t *) pop; } else { *event = ALLOC(sizeof(switch_event_t)); - assert(*event); + switch_assert(*event); } memset(*event, 0, sizeof(switch_event_t)); @@ -594,7 +594,7 @@ header = (switch_event_header_t *) pop; } else { header = ALLOC(sizeof(*header)); - assert(header); + switch_assert(header); } memset(header, 0, sizeof(*header)); @@ -850,6 +850,7 @@ ret = vasprintf(&data, fmt, ap); #else data = (char *) malloc(2048); + switch_assert(data); ret = vsnprintf(data, 2048, fmt, ap); #endif va_end(ap); @@ -899,12 +900,12 @@ switch_size_t retsize; switch_time_t ts = switch_timestamp_now(); - assert(BLOCK != NULL); - assert(RUNTIME_POOL != NULL); - assert(EVENT_QUEUE_HAVEMORE_MUTEX != NULL); - assert(EVENT_QUEUE_MUTEX != NULL); - assert(EVENT_QUEUE_CONDITIONAL != NULL); - assert(RUNTIME_POOL != NULL); + switch_assert(BLOCK != NULL); + switch_assert(RUNTIME_POOL != NULL); + switch_assert(EVENT_QUEUE_HAVEMORE_MUTEX != NULL); + switch_assert(EVENT_QUEUE_MUTEX != NULL); + switch_assert(EVENT_QUEUE_CONDITIONAL != NULL); + switch_assert(RUNTIME_POOL != NULL); if (THREAD_RUNNING <= 0) { /* sorry we're closed */ @@ -976,8 +977,8 @@ switch_event_node_t *event_node; switch_event_subclass_t *subclass = NULL; - assert(BLOCK != NULL); - assert(RUNTIME_POOL != NULL); + switch_assert(BLOCK != NULL); + switch_assert(RUNTIME_POOL != NULL); if (subclass_name) { if ((subclass = switch_core_hash_find(CUSTOM_HASH, subclass_name)) == 0) { Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr.c Tue Dec 11 16:35:05 2007 @@ -45,7 +45,7 @@ int32_t left, elapsed; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); start = switch_time_now(); @@ -125,7 +125,7 @@ int sanity = 0; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (!switch_channel_test_flag(channel, CF_UNICAST)) { return SWITCH_STATUS_FALSE; @@ -163,10 +163,10 @@ switch_codec_t *read_codec; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); conninfo = switch_core_session_alloc(session, sizeof(*conninfo)); - assert(conninfo != NULL); + switch_assert(conninfo != NULL); conninfo->local_ip = switch_core_session_strdup(session, local_ip); conninfo->local_port = local_port; @@ -269,8 +269,8 @@ char *event_lock = switch_event_get_header(event, "event-lock"); switch_status_t status = SWITCH_STATUS_FALSE; - assert(channel != NULL); - assert(event != NULL); + switch_assert(channel != NULL); + switch_assert(event != NULL); if (switch_strlen_zero(cmd)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Command!\n"); @@ -382,7 +382,7 @@ switch_channel_t *channel; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); while (switch_core_session_dequeue_private_event(session, &event) == SWITCH_STATUS_SUCCESS) { switch_ivr_parse_event(session, event); @@ -404,7 +404,7 @@ switch_codec_t *read_codec = switch_core_session_get_read_codec(session); channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (!switch_channel_test_flag(channel, CF_ANSWERED)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Careful, Channel is unaswered. Pre-answering...\n"); @@ -539,7 +539,7 @@ uint32_t elapsed; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (!args->input_callback) { return SWITCH_STATUS_GENERR; @@ -606,7 +606,7 @@ uint32_t elapsed; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (terminator != NULL) *terminator = '\0'; @@ -680,7 +680,7 @@ msg.from = __FILE__; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_channel_set_flag(channel, CF_HOLD); switch_channel_set_flag(channel, CF_SUSPEND); @@ -711,7 +711,7 @@ msg.from = __FILE__; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_channel_clear_flag(channel, CF_HOLD); switch_channel_clear_flag(channel, CF_SUSPEND); @@ -747,7 +747,7 @@ if ((session = switch_core_session_locate(uuid))) { channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((flags & SMF_REBRIDGE) && !switch_channel_test_flag(channel, CF_ORIGINATOR)) { swap = 1; } @@ -760,7 +760,7 @@ && (other_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE)) && (other_session = switch_core_session_locate(other_uuid))) { other_channel = switch_core_session_get_channel(other_session); - assert(other_channel != NULL); + switch_assert(other_channel != NULL); switch_core_session_receive_message(other_session, &msg); switch_channel_clear_state_handler(other_channel, NULL); switch_core_session_rwunlock(other_session); @@ -800,7 +800,7 @@ if ((session = switch_core_session_locate(uuid))) { status = SWITCH_STATUS_SUCCESS; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((flags & SMF_REBRIDGE) && !switch_channel_test_flag(channel, CF_ORIGINATOR)) { swap = 1; @@ -812,7 +812,7 @@ if ((flags & SMF_REBRIDGE) && (other_uuid = switch_channel_get_variable(channel, SWITCH_BRIDGE_VARIABLE)) && (other_session = switch_core_session_locate(other_uuid))) { other_channel = switch_core_session_get_channel(other_session); - assert(other_channel != NULL); + switch_assert(other_channel != NULL); switch_core_session_receive_message(other_session, &msg); switch_channel_clear_state_handler(other_channel, NULL); @@ -843,11 +843,11 @@ switch_channel_t *other_channel = NULL; const char *uuid = NULL; - assert(session != NULL); + switch_assert(session != NULL); switch_core_session_reset(session); channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); /* clear all state handlers */ switch_channel_clear_state_handler(channel, NULL); @@ -893,7 +893,7 @@ if (uuid && (other_session = switch_core_session_locate(uuid))) { other_channel = switch_core_session_get_channel(other_session); - assert(other_channel != NULL); + switch_assert(other_channel != NULL); switch_channel_set_variable(other_channel, SWITCH_SIGNAL_BOND_VARIABLE, NULL); switch_core_session_rwunlock(other_session); } @@ -901,7 +901,7 @@ if ((uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) { other_channel = switch_core_session_get_channel(other_session); - assert(other_channel != NULL); + switch_assert(other_channel != NULL); switch_channel_set_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL); switch_channel_set_variable(other_channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL); @@ -1309,7 +1309,7 @@ int cdr_off = 0, v_off = 0; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (!(cdr = switch_xml_new("cdr"))) { return SWITCH_STATUS_SUCCESS; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_async.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_async.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_async.c Tue Dec 11 16:35:05 2007 @@ -174,7 +174,7 @@ switch_media_bug_t *bug; switch_channel_t *channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((bug = switch_channel_get_private(channel, file))) { switch_channel_set_private(channel, file, NULL); switch_core_media_bug_remove(session, &bug); @@ -196,7 +196,7 @@ channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((bug = switch_channel_get_private(channel, file))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Only 1 of the same file per channel please!\n"); @@ -210,7 +210,7 @@ read_codec = switch_core_session_get_read_codec(session); - assert(read_codec != NULL); + switch_assert(read_codec != NULL); dh->fh.channels = read_codec->implementation->number_of_channels; dh->fh.samplerate = read_codec->implementation->actual_samples_per_second; @@ -272,9 +272,9 @@ switch_channel_t *channel; session = switch_core_media_bug_get_session(bug); - assert(session != NULL); + switch_assert(session != NULL); channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (switch_core_media_bug_read(bug, &frame) == SWITCH_STATUS_SUCCESS) { int doit = 1; @@ -302,7 +302,7 @@ switch_media_bug_t *bug; switch_channel_t *channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((bug = switch_channel_get_private(channel, file))) { switch_channel_set_private(channel, file, NULL); switch_core_media_bug_remove(session, &bug); @@ -595,7 +595,7 @@ switch_media_bug_flag_t flags = SMBF_READ_STREAM | SMBF_WRITE_STREAM; uint8_t channels; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((bug = switch_channel_get_private(channel, file))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Only 1 of the same file per channel please!\n"); @@ -609,7 +609,7 @@ } read_codec = switch_core_session_get_read_codec(session); - assert(read_codec != NULL); + switch_assert(read_codec != NULL); channels = read_codec->implementation->number_of_channels; @@ -703,7 +703,7 @@ char digit_str[80]; switch_channel_t *channel = switch_core_session_get_channel(pvt->session); - assert(channel != NULL); + switch_assert(channel != NULL); frame.data = data; frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE; @@ -735,7 +735,7 @@ switch_media_bug_t *bug; switch_channel_t *channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((bug = switch_channel_get_private(channel, "dtmf"))) { switch_channel_set_private(channel, "dtmf", NULL); switch_core_media_bug_remove(session, &bug); @@ -755,10 +755,10 @@ switch_inband_dtmf_t *pvt; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); read_codec = switch_core_session_get_read_codec(session); - assert(read_codec != NULL); + switch_assert(read_codec != NULL); if (!(pvt = switch_core_session_alloc(session, sizeof(*pvt)))) { return SWITCH_STATUS_MEMERR; @@ -885,7 +885,7 @@ switch_media_bug_t *bug; switch_channel_t *channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((bug = switch_channel_get_private(channel, "dtmf_generate"))) { switch_channel_set_private(channel, "dtmf_generate", NULL); switch_core_media_bug_remove(session, &bug); @@ -905,10 +905,10 @@ switch_inband_dtmf_generate_t *pvt; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); read_codec = switch_core_session_get_read_codec(session); - assert(read_codec != NULL); + switch_assert(read_codec != NULL); if (!(pvt = switch_core_session_alloc(session, sizeof(*pvt)))) { return SWITCH_STATUS_MEMERR; @@ -1014,7 +1014,7 @@ switch_channel_t *channel = switch_core_session_get_channel(session); switch_tone_container_t *cont; - assert(channel != NULL); + switch_assert(channel != NULL); if ((cont = switch_channel_get_private(channel, "_tone_detect_"))) { switch_channel_set_private(channel, "_tone_detect_", NULL); switch_core_media_bug_remove(session, &cont->bug); @@ -1040,10 +1040,10 @@ switch_media_bug_flag_t bflags = 0; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); read_codec = switch_core_session_get_read_codec(session); - assert(read_codec != NULL); + switch_assert(read_codec != NULL); if (switch_strlen_zero(key)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Key Specified!\n"); @@ -1268,7 +1268,7 @@ switch_channel_t *channel = switch_core_session_get_channel(session); struct speech_thread_handle *sth; - assert(channel != NULL); + switch_assert(channel != NULL); if ((sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY))) { switch_channel_set_private(channel, SWITCH_SPEECH_KEY, NULL); switch_core_media_bug_remove(session, &sth->bug); @@ -1286,7 +1286,7 @@ switch_channel_t *channel = switch_core_session_get_channel(session); struct speech_thread_handle *sth; - assert(channel != NULL); + switch_assert(channel != NULL); if ((sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY))) { switch_core_asr_pause(sth->ah); return SWITCH_STATUS_SUCCESS; @@ -1301,7 +1301,7 @@ switch_channel_t *channel = switch_core_session_get_channel(session); struct speech_thread_handle *sth; - assert(channel != NULL); + switch_assert(channel != NULL); if ((sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY))) { switch_core_asr_resume(sth->ah); return SWITCH_STATUS_SUCCESS; @@ -1318,7 +1318,7 @@ switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; struct speech_thread_handle *sth; - assert(channel != NULL); + switch_assert(channel != NULL); if ((sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY))) { if (switch_core_asr_load_grammar(sth->ah, grammar, path) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error loading Grammar\n"); @@ -1340,7 +1340,7 @@ switch_asr_flag_t flags = SWITCH_ASR_FLAG_NONE; struct speech_thread_handle *sth; - assert(channel != NULL); + switch_assert(channel != NULL); if ((sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY))) { if (switch_core_asr_unload_grammar(sth->ah, grammar) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Error unloading Grammar\n"); @@ -1376,10 +1376,10 @@ } channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); read_codec = switch_core_session_get_read_codec(session); - assert(read_codec != NULL); + switch_assert(read_codec != NULL); if ((val = switch_channel_get_variable(channel, "fire_asr_events"))) { @@ -1443,7 +1443,7 @@ switch_core_session_t *session, *other_session; const char *other_uuid; - assert(task); + switch_assert(task); helper = (struct hangup_helper *) task->cmd_arg; @@ -1492,7 +1492,7 @@ struct transfer_helper *helper; switch_core_session_t *session; - assert(task); + switch_assert(task); helper = (struct transfer_helper *) task->cmd_arg; @@ -1558,7 +1558,7 @@ SWITCH_STANDARD_SCHED_FUNC(sch_broadcast_callback) { struct broadcast_helper *helper; - assert(task); + switch_assert(task); helper = (struct broadcast_helper *) task->cmd_arg; switch_ivr_broadcast(helper->uuid_str, helper->path, helper->flags); @@ -1593,7 +1593,7 @@ const char *other_uuid = NULL; char *app = "playback"; - assert(path); + switch_assert(path); if ((session = switch_core_session_locate(uuid))) { char *cause = NULL; @@ -1603,7 +1603,7 @@ master = session; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((switch_channel_test_flag(channel, CF_EVENT_PARSE))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Channel [%s] already broadcasting...broadcast aborted\n", Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_bridge.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_bridge.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_bridge.c Tue Dec 11 16:35:05 2007 @@ -233,7 +233,7 @@ switch_ivr_bridge_data_t *bd; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((bd = (switch_ivr_bridge_data_t *) switch_channel_get_private(channel, "_bridge_"))) { switch_channel_set_private(channel, "_bridge_", NULL); @@ -260,7 +260,7 @@ switch_channel_t *channel = NULL; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM RING\n", switch_channel_get_name(channel)); @@ -274,7 +274,7 @@ switch_channel_t *channel = NULL; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM HOLD\n", switch_channel_get_name(channel)); @@ -298,7 +298,7 @@ switch_channel_t *channel = NULL; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM RESET\n", switch_channel_get_name(channel)); @@ -318,7 +318,7 @@ const char *other_uuid = NULL; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM TRANSMIT\n", switch_channel_get_name(channel)); switch_channel_clear_state_handler(channel, NULL); @@ -407,7 +407,7 @@ switch_channel_t *channel = NULL; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_channel_clear_flag(channel, CF_TRANSFER); switch_channel_set_variable(channel, SWITCH_BRIDGE_VARIABLE, switch_channel_get_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE)); @@ -423,7 +423,7 @@ switch_event_t *event; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (switch_channel_test_flag(channel, CF_ORIGINATOR)) { switch_channel_clear_flag(channel, CF_ORIGINATOR); @@ -439,7 +439,7 @@ switch_channel_t *other_channel = NULL; other_channel = switch_core_session_get_channel(other_session); - assert(other_channel != NULL); + switch_assert(other_channel != NULL); switch_channel_set_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL); switch_channel_set_variable(other_channel, SWITCH_SIGNAL_BRIDGE_VARIABLE, NULL); @@ -480,10 +480,10 @@ switch_event_t *event; caller_channel = switch_core_session_get_channel(session); - assert(caller_channel != NULL); + switch_assert(caller_channel != NULL); peer_channel = switch_core_session_get_channel(peer_session); - assert(peer_channel != NULL); + switch_assert(peer_channel != NULL); if (!switch_channel_ready(peer_channel)) { switch_channel_hangup(caller_channel, switch_channel_get_cause(peer_channel)); @@ -547,21 +547,21 @@ int stream_id = 0; switch_status_t status = SWITCH_STATUS_SUCCESS; - assert(session != NULL); - assert(peer_session != NULL); + switch_assert(session != NULL); + switch_assert(peer_session != NULL); caller_channel = switch_core_session_get_channel(session); - assert(caller_channel != NULL); + switch_assert(caller_channel != NULL); switch_channel_set_flag(caller_channel, CF_ORIGINATOR); peer_channel = switch_core_session_get_channel(peer_session); - assert(peer_channel != NULL); + switch_assert(peer_channel != NULL); a_leg = switch_core_session_alloc(session, sizeof(*a_leg)); b_leg = switch_core_session_alloc(peer_session, sizeof(*b_leg)); - assert(a_leg && b_leg); + switch_assert(a_leg && b_leg); b_leg->session = peer_session; switch_copy_string(b_leg->b_uuid, switch_core_session_get_uuid(session), sizeof(b_leg->b_uuid)); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_originate.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_originate.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_originate.c Tue Dec 11 16:35:05 2007 @@ -38,7 +38,7 @@ switch_channel_t *channel = NULL; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); /* put the channel in a passive state so we can loop audio to it */ @@ -323,7 +323,7 @@ switch_event_header_t *hi; caller_channel = switch_core_session_get_channel(session); - assert(caller_channel != NULL); + switch_assert(caller_channel != NULL); /* Copy all the applicable channel variables into the event */ if ((hi = switch_channel_variable_first(caller_channel))) { @@ -444,7 +444,7 @@ for (try = 0; try < retries; try++) { switch_safe_free(loop_data); loop_data = strdup(data); - assert(loop_data); + switch_assert(loop_data); or_argc = switch_separate_string(loop_data, '|', pipe_names, (sizeof(pipe_names) / sizeof(pipe_names[0]))); if (caller_channel && or_argc > 1 && !ringback_data) { @@ -574,7 +574,7 @@ caller_profiles[i] = new_profile; peer_sessions[i] = new_session; peer_channels[i] = switch_core_session_get_channel(new_session); - assert(peer_channels[i] != NULL); + switch_assert(peer_channels[i] != NULL); if (var_event) { @@ -585,7 +585,7 @@ switch_channel_set_variable(peer_channels[i], header->name, header->value); } switch_event_create(&event, SWITCH_EVENT_CHANNEL_ORIGINATE); - assert(event); + switch_assert(event); switch_channel_event_set_data(peer_channels[i], event); switch_event_fire(&event); } Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_play_say.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_play_say.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_ivr_play_say.c Tue Dec 11 16:35:05 2007 @@ -103,7 +103,7 @@ int matches = 0; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (!macro_name) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No phrase macro specified.\n"); @@ -356,10 +356,10 @@ } channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); read_codec = switch_core_session_get_read_codec(session); - assert(read_codec != NULL); + switch_assert(read_codec != NULL); fh->channels = read_codec->implementation->number_of_channels; @@ -602,10 +602,10 @@ switch_byte_t data[1024]; switch_channel_t *channel; - assert(session != NULL); + switch_assert(session != NULL); channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); switch_channel_pre_answer(channel); read_codec = switch_core_session_get_read_codec(session); @@ -711,7 +711,7 @@ const char *prebuf; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); prefix = switch_channel_get_variable(channel, "sound_prefix"); timer_name = switch_channel_get_variable(channel, "timer_name"); @@ -819,7 +819,7 @@ "ARTIST=%s\n" "COMMENT=%s\n" "DATE=%s\n", file, fh->samplerate, fh->channels, title, copyright, software, artist, comment, date); #endif - assert(read_codec != NULL); + switch_assert(read_codec != NULL); interval = read_codec->implementation->microseconds_per_frame / 1000; if (!fh->audio_buffer) { @@ -1137,7 +1137,7 @@ channel = switch_core_session_get_channel(session); //Make sure somebody is home - assert(channel != NULL); + switch_assert(channel != NULL); //Answer the channel if it hasn't already been answered switch_channel_answer(channel); @@ -1254,7 +1254,7 @@ switch_size_t starlen, poundlen; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if (!sh) { return SWITCH_STATUS_FALSE; @@ -1320,7 +1320,7 @@ write_frame.samples = len / 2; write_frame.codec = codec; - assert(codec->implementation != NULL); + switch_assert(codec->implementation != NULL); for (x = 0; !done && x < lead_in_out; x++) { switch_yield(codec->implementation->microseconds_per_frame); @@ -1502,7 +1502,7 @@ switch_channel_t *channel; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); if ((cache_obj = switch_channel_get_private(channel, SWITCH_CACHE_SPEECH_HANDLES_OBJ_NAME))) { switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_NONE; @@ -1539,7 +1539,7 @@ int need_create = 1, need_alloc = 1; channel = switch_core_session_get_channel(session); - assert(channel != NULL); + switch_assert(channel != NULL); sh = ↰ codec = &lcodec; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_loadable_module.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_loadable_module.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_loadable_module.c Tue Dec 11 16:35:05 2007 @@ -83,8 +83,8 @@ switch_loadable_module_t *module = ts->objs[0]; int restarts; - assert(thread != NULL); - assert(module != NULL); + switch_assert(thread != NULL); + switch_assert(module != NULL); for (restarts = 0; status != SWITCH_STATUS_TERM; restarts++) { status = module->switch_module_runtime(); @@ -653,7 +653,7 @@ char derr[512] = ""; switch_memory_pool_t *pool; - assert(path != NULL); + switch_assert(path != NULL); switch_core_new_memory_pool(&pool); *new_module = NULL; @@ -1030,7 +1030,6 @@ while (apr_dir_read(&finfo, finfo_flags, module_dir_handle) == APR_SUCCESS) { const char *fname = finfo.fname; - const char *err; if (finfo.filetype != APR_REG) { continue; @@ -1060,7 +1059,7 @@ static void do_shutdown(switch_loadable_module_t *module) { - assert(module != NULL); + switch_assert(module != NULL); switch_loadable_module_unprocess(module); if (module->switch_module_shutdown) { @@ -1328,9 +1327,9 @@ switch_api_interface_t *api; switch_status_t status; - assert(stream != NULL); - assert(stream->data != NULL); - assert(stream->write_function != NULL); + switch_assert(stream != NULL); + switch_assert(stream->data != NULL); + switch_assert(stream->write_function != NULL); if (!stream->event) { switch_event_create(&stream->event, SWITCH_EVENT_API); @@ -1366,7 +1365,7 @@ switch_loadable_module_interface_t *mod; mod = switch_core_alloc(pool, sizeof(switch_loadable_module_interface_t)); - assert(mod != NULL); + switch_assert(mod != NULL); mod->pool = pool; @@ -1378,7 +1377,7 @@ #define ALLOC_INTERFACE(_TYPE_) { \ switch_##_TYPE_##_interface_t *i, *ptr; \ i = switch_core_alloc(mod->pool, sizeof(switch_##_TYPE_##_interface_t)); \ - assert(i != NULL); \ + switch_assert(i != NULL); \ for (ptr = mod->_TYPE_##_interface; ptr && ptr->next; ptr = ptr->next); \ if (ptr) { \ ptr->next = i; \ Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_log.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_log.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_log.c Tue Dec 11 16:35:05 2007 @@ -77,10 +77,10 @@ char *p = strdup(str); switch_log_level_t level; - assert(p); + switch_assert(p); if ((argc = switch_separate_string(p, ',', argv, (sizeof(argv) / sizeof(argv[0]))))) { - for (x = 0; x < argc; x++) { + for (x = 0; x < argc && argv[x]; x++) { if (!strcasecmp(argv[x], "all")) { mask = 0xFF; break; @@ -121,7 +121,7 @@ SWITCH_DECLARE(switch_status_t) switch_log_bind_logger(switch_log_function_t function, switch_log_level_t level) { switch_log_binding_t *binding = NULL, *ptr = NULL; - assert(function != NULL); + switch_assert(function != NULL); if (!(binding = switch_core_alloc(LOG_POOL, sizeof(*binding)))) { return SWITCH_STATUS_MEMERR; @@ -221,6 +221,7 @@ len = (uint32_t) (strlen(extra_fmt) + strlen(date) + strlen(filep) + 32 + strlen(funcp) + strlen(fmt)); new_fmt = malloc(len + 1); + switch_assert(new_fmt); snprintf(new_fmt, len, extra_fmt, date, switch_log_level2str(level), filep, line, funcp, 128, fmt); fmt = new_fmt; } @@ -263,7 +264,7 @@ node = (switch_log_node_t *) pop; } else { node = malloc(sizeof(*node)); - assert(node); + switch_assert(node); } node->data = data; @@ -292,7 +293,7 @@ switch_thread_t *thread; switch_threadattr_t *thd_attr;; - assert(pool != NULL); + switch_assert(pool != NULL); LOG_POOL = pool; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_odbc.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_odbc.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_odbc.c Tue Dec 11 16:35:05 2007 @@ -320,7 +320,7 @@ SQLLEN m = 0, t = 0; int result; - assert(callback != NULL); + switch_assert(callback != NULL); if (!db_is_up(handle)) { goto error; @@ -358,7 +358,7 @@ names = calloc(c, sizeof(*names)); vals = calloc(c, sizeof(*vals)); - assert(names && vals); + switch_assert(names && vals); for (x = 1; x <= c; x++) { SQLSMALLINT NameLength, DataType, DecimalDigits, Nullable; @@ -407,9 +407,10 @@ { switch_odbc_handle_t *handle = NULL; - if (handlep) { - handle = *handlep; + if (!handlep) { + return; } + handle = *handlep; if (handle) { switch_odbc_handle_disconnect(handle); Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_rtp.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_rtp.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_rtp.c Tue Dec 11 16:35:05 2007 @@ -67,7 +67,7 @@ #pragma pack() #endif - +static switch_hash_t *alloc_hash = NULL; typedef struct { srtp_hdr_t header; @@ -147,7 +147,8 @@ uint32_t flags; switch_memory_pool_t *pool; switch_sockaddr_t *from_addr; - + char *rx_host; + switch_port_t rx_port; char *ice_user; char *user_ice; char *timer_name; @@ -182,8 +183,8 @@ unsigned int elapsed; switch_size_t bytes; - assert(rtp_session != NULL); - assert(rtp_session->ice_user != NULL); + switch_assert(rtp_session != NULL); + switch_assert(rtp_session->ice_user != NULL); if (rtp_session->stuncount != 0) { rtp_session->stuncount--; @@ -261,12 +262,17 @@ if (global_init) { return; } - + switch_core_hash_init(&alloc_hash, pool); srtp_init(); switch_mutex_init(&port_lock, SWITCH_MUTEX_NESTED, pool); global_init = 1; } +SWITCH_DECLARE(void) switch_rtp_shutdown(void) +{ + switch_core_hash_destroy(&alloc_hash); +} + SWITCH_DECLARE(switch_port_t) switch_rtp_set_start_port(switch_port_t port) { if (port) { @@ -304,16 +310,43 @@ return END_PORT; } -SWITCH_DECLARE(switch_port_t) switch_rtp_request_port(void) +static void release_port(switch_rtp_t *rtp_session) { - switch_port_t port; + switch_core_port_allocator_t *alloc = NULL; + if (!rtp_session->rx_host) { + return; + } + + switch_mutex_lock(port_lock); + if ((alloc = switch_core_hash_find(alloc_hash, rtp_session->rx_host))) { + switch_core_port_allocator_free_port(alloc, rtp_session->rx_port); + } + switch_mutex_unlock(port_lock); + +} + +SWITCH_DECLARE(switch_port_t) switch_rtp_request_port(const char *ip) +{ + switch_port_t port = 0; + switch_core_port_allocator_t *alloc = NULL; + switch_mutex_lock(port_lock); - port = NEXT_PORT; - NEXT_PORT += 2; - if (NEXT_PORT > END_PORT) { - NEXT_PORT = START_PORT; + alloc = switch_core_hash_find(alloc_hash, ip); + if (!alloc) { + if (switch_core_port_allocator_new(START_PORT, END_PORT, SPF_EVEN, &alloc) != SWITCH_STATUS_SUCCESS) { + port = 0; + goto end; + } + + switch_core_hash_insert(alloc_hash, ip, alloc); + } + + if (switch_core_port_allocator_request_port(alloc, &port) != SWITCH_STATUS_SUCCESS) { + port = 0; } + + end: switch_mutex_unlock(port_lock); return port; } @@ -379,7 +412,8 @@ *err = "Send myself a packet failed!"; goto done; } - + release_port(rtp_session); + old_sock = rtp_session->sock; rtp_session->sock = new_sock; new_sock = NULL; @@ -395,7 +429,9 @@ done: - if (status != SWITCH_STATUS_SUCCESS) { + if (status == SWITCH_STATUS_SUCCESS) { + rtp_session->rx_host = switch_core_strdup(rtp_session->pool, host); + rtp_session->rx_port = port; rtp_session->ready = 1; } @@ -632,10 +668,10 @@ SWITCH_DECLARE(void) switch_rtp_kill_socket(switch_rtp_t *rtp_session) { - assert(rtp_session != NULL); + switch_assert(rtp_session != NULL); switch_mutex_lock(rtp_session->flag_mutex); if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO)) { - assert(rtp_session->sock != NULL); + switch_assert(rtp_session->sock != NULL); switch_socket_shutdown(rtp_session->sock, SWITCH_SHUTDOWN_READWRITE); switch_clear_flag(rtp_session, SWITCH_RTP_FLAG_IO); } @@ -653,6 +689,7 @@ return; } + (*rtp_session)->ready = 0; switch_mutex_lock((*rtp_session)->flag_mutex); @@ -683,6 +720,8 @@ switch_core_timer_destroy(&(*rtp_session)->timer); } + release_port(*rtp_session); + switch_mutex_unlock((*rtp_session)->flag_mutex); return; } @@ -1553,7 +1592,7 @@ return -1; } - assert(frame != NULL); + switch_assert(frame != NULL); if (switch_test_flag(frame, SFF_CNG)) { payload = rtp_session->cng_pt; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_scheduler.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_scheduler.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_scheduler.c Tue Dec 11 16:35:05 2007 @@ -158,7 +158,7 @@ switch_mutex_lock(globals.task_mutex); switch_zmalloc(container, sizeof(*container)); - assert(func); + switch_assert(func); container->func = func; container->task.created = time(NULL); container->task.runtime = task_runtime; Modified: freeswitch/branches/stkn/sofia-exp/trunk/src/switch_utils.c ============================================================================== --- freeswitch/branches/stkn/sofia-exp/trunk/src/switch_utils.c (original) +++ freeswitch/branches/stkn/sofia-exp/trunk/src/switch_utils.c Tue Dec 11 16:35:05 2007 @@ -45,7 +45,7 @@ s++; } - if (*s == open) { + if (s && *s == open) { depth++; for (e = s + 1; e && *e; e++) { if (*e == open) { @@ -86,7 +86,7 @@ { char *p, *q; switch_size_t x = 0; - assert(s); + switch_assert(s); q = buf; @@ -266,11 +266,11 @@ } if (file) { - const char *filename = switch_cut_path(file); + const char *stipped_file = switch_cut_path(file); const char *new_type; char *ext; - if ((ext = strrchr(filename, '.'))) { + if ((ext = strrchr(stipped_file, '.'))) { ext++; if ((new_type = switch_core_mime_ext2type(ext))) { mime_type = new_type; @@ -283,7 +283,7 @@ "Content-Transfer-Encoding: base64\n" "Content-Description: Sound attachment.\n" "Content-Disposition: attachment; filename=\"%s\"\n\n", - bound, mime_type, filename, filename); + bound, mime_type, stipped_file, stipped_file); if (!write_buf(fd, buf)) return SWITCH_FALSE; @@ -379,6 +379,11 @@ SWITCH_DECLARE(switch_bool_t) switch_ast2regex(char *pat, char *rbuf, size_t len) { char *p = pat; + + if (!pat) { + return SWITCH_FALSE; + } + memset(rbuf, 0, len); *(rbuf + strlen(rbuf)) = '^'; @@ -408,7 +413,7 @@ if (dup) { p = strdup(str); - assert(p); + switch_assert(p); } else { p = str; } @@ -926,7 +931,7 @@ SWITCH_DECLARE(char *) get_addr(char *buf, switch_size_t len, struct in_addr *in) { - assert(buf); + switch_assert(buf); *buf = '\0'; if (in) { switch_inet_ntop(AF_INET, in, buf, len); @@ -1098,22 +1103,27 @@ size_t replace_len = strlen(replace); size_t i, n; size_t dest_len = 0; - char *dest; + char *dest, *tmp; dest = (char *) malloc(sizeof(char)); + switch_assert(dest); for (i = 0; i < string_len; i++) { if (switch_string_match(string + i, string_len - i, search, search_len) == SWITCH_STATUS_SUCCESS) { for (n = 0; n < replace_len; n++) { dest[dest_len] = replace[n]; dest_len++; - dest = (char *) realloc(dest, sizeof(char) * (dest_len + 1)); + tmp = (char *) realloc(dest, sizeof(char) * (dest_len + 1)); + switch_assert(tmp); + dest = tmp; } i += search_len - 1; } else { dest[dest_len] = string[i]; dest_len++; - dest = (char *) realloc(dest, sizeof(char) * (dest_len + 1)); + tmp = (char *) realloc(dest, sizeof(char) * (dest_len + 1)); + switch_assert(tmp); + dest = tmp; } }