[commit] r8394 - in freeswitch/branches/lukedashjr/syslibs: freeswitch freeswitch/build freeswitch/build/config freeswitch/conf freeswitch/conf/autoload_configs freeswitch/conf/sip_profiles freeswitch/conf/sip_profiles/default freeswitch/conf/sip_profiles/external freeswitch/conf/sip_profiles/internal freeswitch/conf/sip_profiles/nat freeswitch/conf/sip_profiles/outbound freeswitch/debian freeswitch/debian/default freeswitch/docs freeswitch/scripts/contrib/jpalley freeswitch/scripts/co
Author: lukedashjr Date: Tue May 13 23:37:33 2008 New Revision: 8394 Added: freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/external/ - copied from r8393, /freeswitch/tags/1.0.rc5/conf/sip_profiles/external/ freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/external.xml - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/conf/sip_profiles/external.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/external/example.xml - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/conf/sip_profiles/external/example.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/internal/ - copied from r8393, /freeswitch/tags/1.0.rc5/conf/sip_profiles/internal/ freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/internal.xml - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/conf/sip_profiles/internal.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/internal/example.xml - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/conf/sip_profiles/internal/example.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch-lang-it.install - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/debian/freeswitch-lang-it.install freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch-lua.conffiles - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/debian/freeswitch-lua.conffiles freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch-lua.install - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/debian/freeswitch-lua.install freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch-perl.conffiles - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/debian/freeswitch-perl.conffiles freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch-perl.install - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/debian/freeswitch-perl.install freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/jpalley/ - copied from r8393, /freeswitch/tags/1.0.rc5/scripts/contrib/jpalley/ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/DeflectCmd.cs - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/DeflectCmd.cs freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/answer.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/answer.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/frame.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/frame.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/iax-client.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/iax-client.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/iax-mutex.c - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/iax-mutex.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/iax-mutex.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/iax-mutex.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/iax.c - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/iax.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/iax.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/iax.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/iax2-parser.c - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/iax2-parser.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/iax2-parser.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/iax2-parser.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/iax2.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/iax2.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/jitterbuf.c - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/jitterbuf.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/jitterbuf.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/jitterbuf.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/md5.c - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/md5.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/md5.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/md5.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/winpoop.h - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/endpoints/mod_iax/winpoop.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.cpp - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/src/mod/languages/mod_lua/mod_lua.cpp freeswitch/branches/lukedashjr/syslibs/libs/voipcodecs/src/bit_operations.c - copied unchanged from r8393, /freeswitch/tags/1.0.rc5/libs/voipcodecs/src/bit_operations.c Removed: freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/default/ freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/default.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/outbound/ freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/outbound.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.c freeswitch/branches/lukedashjr/syslibs/libs/apr-iconv-1.1.1/ freeswitch/branches/lukedashjr/syslibs/libs/iax/ freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-iconv/ Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/Freeswitch.2008.sln freeswitch/branches/lukedashjr/syslibs/freeswitch/Freeswitch.sln freeswitch/branches/lukedashjr/syslibs/freeswitch/Makefile.am freeswitch/branches/lukedashjr/syslibs/freeswitch/build/config/ax_check_java.m4 freeswitch/branches/lukedashjr/syslibs/freeswitch/build/modmake.rules.in freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/autoload_configs/ivr.conf.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/autoload_configs/switch.conf.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/freeswitch.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/nat/example.xml freeswitch/branches/lukedashjr/syslibs/freeswitch/configure.in freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/changelog freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/control freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/default/freeswitch freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/files freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch.conffiles freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch.install freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/rules freeswitch/branches/lukedashjr/syslibs/freeswitch/docs/ChangeLog freeswitch/branches/lukedashjr/syslibs/freeswitch/freeswitch.spec freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/trixter/call-progress.pl freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/CallManager.cs freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SendMsg.cs freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/lua/mwi_event.lua freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/perl/mwi_event.pl freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/private/switch_core_pvt.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_core.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_core_event_hook.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_cpp.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_event.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_ivr.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_module_interfaces.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_rtp.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_stun.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_types.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_conference/mod_conference.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_dptools/mod_dptools.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_esf/mod_esf.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_fifo/mod_fifo.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_fsv/mod_fsv.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_limit/mod_limit.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_rss/mod_rss.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_voicemail/mod_voicemail.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_alsa/mod_alsa.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_dingaling/mod_dingaling.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/Makefile freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.2008.vcproj freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.vcproj freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/mod_portaudio.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/pa_ringbuffer.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/pablio.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_reference/mod_reference.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia_presence.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia_reg.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma/sangoma_pri.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_woomera/mod_woomera.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/formats/mod_local_stream/mod_local_stream.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/formats/mod_shout/layer3.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/switch_swig_wrap.cpp freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/freeswitch_lua.cpp freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/freeswitch_lua.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/hack.diff freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.2008.vcproj freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.vcproj freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua_wrap.cpp freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/Makefile freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch.pm freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch_perl.cpp freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch_perl.h freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/hack.diff freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/mod_perl.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/mod_perl_wrap.cpp freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/freeswitch.py freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/mod_python_wrap.cpp freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/switch_swig_wrap.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/xml_int/mod_xml_ldap/Makefile freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_channel.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_event_hook.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_io.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_sqldb.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_state_machine.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_cpp.cpp freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_event.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_async.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_bridge.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_originate.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_play_say.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_loadable_module.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_rtp.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_stun.c freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_time.c freeswitch/branches/lukedashjr/syslibs/freeswitch/w32/Setup/Setup.2008.vdproj freeswitch/branches/lukedashjr/syslibs/freeswitch/w32/Setup/Setup.vdproj freeswitch/branches/lukedashjr/syslibs/libs/apr-util/.update freeswitch/branches/lukedashjr/syslibs/libs/apr-util/build-outputs.mk freeswitch/branches/lukedashjr/syslibs/libs/apr-util/crypto/getuuid.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/.update freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/nta.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/nta_internal.h freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta.h freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.h freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_subnotref.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua.h freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/test_simple.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/test_sip_events.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/soa/soa_static.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/soa/test_soa.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/su/su_log.c freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c freeswitch/branches/lukedashjr/syslibs/libs/voipcodecs/src/Makefile.am freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-util/libaprutil.2008.vcproj freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-util/libaprutil.vcproj Log: MERGE to: http://svn.freeswitch.org/svn/freeswitch/tags/1.0.rc5 Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/Freeswitch.2008.sln ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/Freeswitch.2008.sln (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/Freeswitch.2008.sln Tue May 13 23:37:33 2008 @@ -125,9 +125,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "sip_profiles", "sip_profiles", "{8E2E8798-8B6F-4A55-8E4F-4E6FDE40ED26}" ProjectSection(SolutionItems) = preProject - conf\sip_profiles\default.xml = conf\sip_profiles\default.xml conf\sip_profiles\nat.xml = conf\sip_profiles\nat.xml - conf\sip_profiles\outbound.xml = conf\sip_profiles\outbound.xml EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lang", "lang", "{09455AA9-C243-4F16-A1A1-A016881A2765}" @@ -390,7 +388,6 @@ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3} {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750} - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} EndProjectSection EndProject @@ -410,7 +407,6 @@ ProjectSection(ProjectDependencies) = postProject {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.2008.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}" @@ -542,8 +538,6 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\codec\ilbc\libilbc.2008.vcproj", "{989BB874-7AF1-44CB-8E5C-CC8113D267E8}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libiax2", "libs\iax\libiax2.2008.vcproj", "{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2008.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}" ProjectSection(ProjectDependencies) = postProject {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3} @@ -565,15 +559,9 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2008.vcproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapriconv", "libs\win32\apr-iconv\libapriconv.2008.vcproj", "{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}" - ProjectSection(ProjectDependencies) = postProject - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.2008.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}" ProjectSection(ProjectDependencies) = postProject {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libspeex", "libs\win32\speex\libspeex.2008.vcproj", "{1C469CDD-A3AF-4A94-A592-B2CF12F2D918}" @@ -1043,12 +1031,6 @@ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.ActiveCfg = Debug|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.Build.0 = Debug|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|x64.ActiveCfg = Debug|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.ActiveCfg = Release|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.Build.0 = Release|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|x64.ActiveCfg = Release|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32 @@ -1091,12 +1073,6 @@ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Win32.ActiveCfg = Debug|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Win32.Build.0 = Debug|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|x64.ActiveCfg = Debug|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Win32.ActiveCfg = Release|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Win32.Build.0 = Release|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|x64.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|Win32 @@ -1515,7 +1491,6 @@ {ACFD96F2-58AA-491D-B4C0-33BD0BD57FDE} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} @@ -1523,7 +1498,6 @@ {1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/Freeswitch.sln ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/Freeswitch.sln (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/Freeswitch.sln Tue May 13 23:37:33 2008 @@ -15,7 +15,6 @@ {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3} {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EEF031CB-FED8-451E-A471-91EC8D4F6750} - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} EndProjectSection EndProject @@ -35,7 +34,6 @@ ProjectSection(ProjectDependencies) = postProject {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF} {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_PortAudio", "src\mod\endpoints\mod_portaudio\mod_PortAudio.vcproj", "{5FD31A25-5D83-4794-8BEE-904DAD84CE71}" @@ -193,8 +191,6 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libilbc", "libs\codec\ilbc\libilbc.vcproj", "{989BB874-7AF1-44CB-8E5C-CC8113D267E8}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libiax2", "libs\iax\libiax2.vcproj", "{5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.vcproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}" ProjectSection(ProjectDependencies) = postProject {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {F057DA7F-79E5-4B00-845C-EF446EF055E3} @@ -216,15 +212,9 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.vcproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapriconv", "libs\win32\apr-iconv\libapriconv.vcproj", "{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}" - ProjectSection(ProjectDependencies) = postProject - {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.vcproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}" ProjectSection(ProjectDependencies) = postProject {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Downloads", "_Downloads", "{C120A020-773F-4EA3-923F-B67AF28B750D}" @@ -1046,12 +1036,6 @@ {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.ActiveCfg = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|Win32.Build.0 = Release|Win32 {989BB874-7AF1-44CB-8E5C-CC8113D267E8}.Release|x64.ActiveCfg = Release|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.ActiveCfg = Debug|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|Win32.Build.0 = Debug|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Debug|x64.ActiveCfg = Debug|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.ActiveCfg = Release|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|Win32.Build.0 = Release|Win32 - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E}.Release|x64.ActiveCfg = Release|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32 {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|Win32 @@ -1094,12 +1078,6 @@ {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.ActiveCfg = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Win32.ActiveCfg = Debug|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|Win32.Build.0 = Debug|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Debug|x64.ActiveCfg = Debug|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Win32.ActiveCfg = Release|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|Win32.Build.0 = Release|Win32 - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED}.Release|x64.ActiveCfg = Release|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32 {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|Win32 @@ -1503,7 +1481,6 @@ {EC3E5C7F-EE09-47E2-80FE-546363D14A98} = {B8F5B47B-8568-46EB-B320-64C17D2A98BC} {89385C74-5860-4174-9CAF-A39E7C48909C} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {989BB874-7AF1-44CB-8E5C-CC8113D267E8} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} - {5CC054B7-6DAA-46BF-9A08-3B33B83E8D3E} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} @@ -1511,7 +1488,6 @@ {1CED5987-A529-46DC-B30F-870D85FF9C94} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {50AD0E28-B8D7-4FCC-8FC3-599F6AC69761} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} - {101130D1-3EA6-4ED2-B65D-CEB5243A20ED} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {1C469CDD-A3AF-4A94-A592-B2CF12F2D918} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/Makefile.am ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/Makefile.am (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/Makefile.am Tue May 13 23:37:33 2008 @@ -250,6 +250,10 @@ sync: svn update + $(MAKE) install + +speedy-sync: + svn update $(MAKE) -j install update-clean: clean modwipe uninstall Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/build/config/ax_check_java.m4 ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/build/config/ax_check_java.m4 (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/build/config/ax_check_java.m4 Tue May 13 23:37:33 2008 @@ -9,9 +9,9 @@ AC_DEFUN([AX_CHECK_JAVA], [ AC_ARG_WITH([java], - AC_HELP_STRING([ --with-java=PFX], [prefix where 'java' is installed.]), - [with_java_prefix=$withval], - [with_java_prefix=${JAVA_INSTALL_PATH:-/usr/java/j2sdk1.4.1_01}]) + [AC_HELP_STRING([--with-java=PFX], [prefix where 'java' is installed.])], + [with_java_prefix="$withval"], + [with_java_prefix="${JAVA_INSTALL_PATH:-/usr/java/j2sdk1.4.1_01}"]) have_java='no' LIB_JAVA='' JAVA_FLAGS='' Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/build/modmake.rules.in ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/build/modmake.rules.in (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/build/modmake.rules.in Tue May 13 23:37:33 2008 @@ -87,7 +87,7 @@ @if test ! -f $@; then \ if ! pwd | grep $(switch_srcdir)/src/mod ; then rulesdir=$(switch_srcdir) ; else rulesdir=../../../.. ; fi ; \ echo BASE=$$rulesdir > Makefile ; \ - echo "include $(BASE)/build/modmake.rules" >> Makefile ; \ + echo 'include $$(BASE)/build/modmake.rules' >> Makefile ; \ fi ; LINK_OUTPUT_REDIR=> .libs/$(MODNAME).log || error="yes" ; \ Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/autoload_configs/ivr.conf.xml ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/autoload_configs/ivr.conf.xml (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/autoload_configs/ivr.conf.xml Tue May 13 23:37:33 2008 @@ -10,11 +10,7 @@ timeout ="10000" inter-digit-timeout="2000" max-failures="3" - confirm-macro="demo_ivr_count" - confirm-key="1" - confirm-attempts="3" - digit-len="4" - > + digit-len="4"> <entry action="menu-exec-app" digits="1" param="bridge sofia/$${domain}/888@conference.freeswitch.org"/> <entry action="menu-exec-app" digits="2" param="transfer 9996 XML default"/> <!-- FS echo --> <entry action="menu-exec-app" digits="3" param="transfer 9999 XML default"/> <!-- MOH --> @@ -28,7 +24,8 @@ greet-long="phrase:demo_ivr_sub_menu" greet-short="phrase:demo_ivr_sub_menu_short" invalid-sound="voicemail/vm-hello.wav" - exit-sound="voicemail/vm-goodbye.wav" timeout="15" + exit-sound="voicemail/vm-goodbye.wav" + timeout="15000" max-failures="3"> <entry action="menu-top" digits="*"/> </menu> @@ -45,7 +42,8 @@ greet-long="say:Press 1 to join the conference, Press 2 to join the other conference" greet-short="say:Press 1 to join the conference, Press 2 to join the other conference" invalid-sound="say:invalid extension" - exit-sound="say:exit sound" timeout ="15" + exit-sound="say:exit sound" + timeout ="15000" max-failures="3"> <entry action="menu-exit" digits="*"/> <entry action="menu-playback" digits="1" param="say:You pressed 1"/> Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/autoload_configs/switch.conf.xml ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/autoload_configs/switch.conf.xml (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/autoload_configs/switch.conf.xml Tue May 13 23:37:33 2008 @@ -9,7 +9,7 @@ <key name="6" value="reloadxml"/> <key name="7" value="console loglevel 0"/> <key name="8" value="console loglevel 7"/> - <key name="9" value="sofia status profile default"/> + <key name="9" value="sofia status profile internal"/> <key name="10" value="fsctl pause"/> <key name="11" value="fsctl resume"/> <key name="12" value="version"/> Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/freeswitch.xml ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/freeswitch.xml (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/freeswitch.xml Tue May 13 23:37:33 2008 @@ -37,7 +37,7 @@ <!-- phrases section (under development still) --> <section name="phrases" description="Speech Phrase Management"> <macros> - <X-PRE-PROCESS cmd="include" data="lang/*/*.xml"/> + <X-PRE-PROCESS cmd="include" data="lang/en/*.xml"/> </macros> </section> Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/nat/example.xml ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/nat/example.xml (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/conf/sip_profiles/nat/example.xml Tue May 13 23:37:33 2008 @@ -10,8 +10,6 @@ <!--<param name="from-domain" value="asterlink.com"/>--> <!--/// account password *required* ///--> <!--<param name="password" value="2007"/>--> - <!--/// replace the INVITE from user with the channel's caller-id ///--> - <!--<param name="caller-id-in-from" value="false"/>--> <!--/// extension for inbound calls: *optional* same as username, if blank ///--> <!--<param name="extension" value="cluecon"/>--> <!--/// proxy host: *optional* same as realm, if blank ///--> Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/configure.in ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/configure.in (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/configure.in Tue May 13 23:37:33 2008 @@ -3,11 +3,11 @@ # Must change all of the below together # For a release, set revision for that tagged release as well and uncomment -AC_INIT([freeswitch], [1.0.rc4], BUG-REPORT-ADDRESS) +AC_INIT([freeswitch], [1.0.rc5], BUG-REPORT-ADDRESS) AC_SUBST(SWITCH_VERSION_MAJOR, [1]) AC_SUBST(SWITCH_VERSION_MINOR, [0]) -AC_SUBST(SWITCH_VERSION_MICRO, [rc4]) -AC_SUBST(SWITCH_VERSION_REVISION, [8261]) +AC_SUBST(SWITCH_VERSION_MICRO, [rc5]) +AC_SUBST(SWITCH_VERSION_REVISION, [8381]) AC_CONFIG_FILES([src/include/switch_version.h.in:src/include/switch_version.h.template]) @@ -31,7 +31,8 @@ AC_SUBST(switch_builddir) # Where to install the modules -AC_ARG_WITH(modinstdir, [ --with-modinstdir (default=$prefix/mod)], modinstdir=$withval, modinstdir="${prefix}/mod") +AC_ARG_WITH([modinstdir], + [AS_HELP_STRING([--with-modinstdir=DIR], [Install modules into this location (default: $prefix/mod)])], [modinstdir="$withval"], [modinstdir="${prefix}/mod"]) AC_SUBST(modinstdir) AC_DEFINE_UNQUOTED([SWITCH_MOD_DIR],"${modinstdir}",[where to install the modules to]) @@ -64,12 +65,10 @@ fi -AM_CONDITIONAL([WANT_DEBUG],[test "${enable_debug}" = "yes"]) - # Optional Features AC_ARG_ENABLE(resample, -[AC_HELP_STRING([--enable-resample],[build with embedded resampler])],[enable_resample="$enable_resample"],[enable_resample="yes"]) +[AC_HELP_STRING([--disable-resample],[build without embedded resampler])],[enable_resample="$enableval"],[enable_resample="yes"]) # We should add checking for out of tree libresample here RESAMPLE_LIB= @@ -142,9 +141,10 @@ APR_ADDTO(SWITCH_AM_CFLAGS, -Werror) fi -# Enable debugging +# Enable debugging (default: on) +# (rename option if the default is changed) AC_ARG_ENABLE(debug, -[AC_HELP_STRING([--enable-debug],[build with debug information])],[enable_debug="$enable_debug"],[enable_debug="yes"]) +[AC_HELP_STRING([--disable-debug],[build without debug information])],[enable_debug="$enableval"],[enable_debug="yes"]) if test "${enable_debug}" = "yes"; then AC_DEFINE([DEBUG],[],[Enable extra debugging.]) @@ -157,6 +157,8 @@ fi +AM_CONDITIONAL([WANT_DEBUG],[test "${enable_debug}" = "yes"]) + # tweak platform specific flags case "$host" in @@ -546,10 +548,10 @@ AC_ARG_ENABLE(core-odbc-support, - [ --enable-core-odbc-support Compile with ODBC Support],,[enable_core_odbc_support="no"]) + [AS_HELP_STRING([--enable-core-odbc-support], [Compile with ODBC Support])],,[enable_core_odbc_support="no"]) AC_ARG_ENABLE(core-libedit-support, - [ --disable-core-libedit-support Compile without libedit Support],,[enable_core_libedit_support="yes"]) + [AS_HELP_STRING([--disable-core-libedit-support], [Compile without libedit Support])], [enable_core_libedit_support="$enableval"], [enable_core_libedit_support="yes"]) if test "$enable_core_libedit_support" = "yes" ; then AC_CHECK_LIB(ncurses, tgetent,, Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/changelog ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/changelog (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/changelog Tue May 13 23:37:33 2008 @@ -1,3 +1,45 @@ +freeswitch (1.0~rc5-1) unstable; urgency=low + + * Changed internal state names to avoid confusion + Fixed video negotiation + Enhanced accuracy of windows timer + Fixed mod_ldap build + Added dialplan and context to sql table for channels + Multiple fixes to mod_lua and mod_perl + Fixed logic bug in fifo causing segfault + internal changes to sip stack so we can remove a hash redundant to the stack + Fixed multiple memory leaks in mod_sofia + Fixed event fetch segfault on sip subscribe + Fixed segfault on timer rollover in sofia on 64bit + Fixed audio timing issues in mod_portaudio + Changed names of sip profiles in default config to avoid confusion + Fixed memory usage leak-like behavior when playing files requiring resampling + Removed some unused api's + Fix rtp timeout when playing moh + Removed some un-needed libraries and files from tree + Fixed multiple issues in sip stack including multiple segfaults + Added support for sip transfers on bypass_media and proxy_media calls + Added say application + Fixed --disable-debug configure option + Enhanced switch_cpp wrapper (and perl, python, lua, java) + Fixed segfault on inavalid stun response + Fixed configure help output + Fixed segfault on mp3 playback + Fixed assert on invalid sdp (missing m= line) + Added configurable windows service name + Fixed proxy mode call transition to non proxy call + Fixed solaris build of voipcodecs + Fixed sofia seg when call failure edge case + + -- Michael Jerris <mike@jerris.com> Tue, 13 May 2008 02:01:00 -0400 + +freeswitch (1.0~8327) unstable; urgency=low + + * Adding perl and lua separate packages + * Adding mod_voipcodecs + + -- root <root@fs.navynet.it> Tue, 6 May 2008 09:46:26 +0000 + freeswitch (1.0~rc4-1) unstable; urgency=low * Add tab completion in cli Add "inline" dialplan @@ -31,6 +73,16 @@ Fixed MSVC build Fixed segfault on sip SUBSCRIBE with Expires: 0 Added mod_say_zh + Added --with-pyton and --with-pyton-config configure options + Added mod_lua + Enhanced switch_cpp wrapper in core and normalized interfaces for perl, python, lua, and java + Fixed multiple issues in cpp wrapper and the languages perl, python, lua and java + Added back mod_perl + Added sofia gateway option ping to adjust options ping frequency + Added .net event socket lib to contrib + Fixed passing of exact response codes of sip across a bridge + Added mod_reference, reference endpoint module + Enhanced build so you can now make commented out modules using "make mod_name" -- Michael Jerris <mike@jerris.com> Wed, 23 Apr 2008 12:58:00 -0400 Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/control ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/control (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/control Tue May 13 23:37:33 2008 @@ -2,7 +2,7 @@ Maintainer: Michal Bielicki <michal.bielicki@voiceworks.pl> Section: net Priority: extra -Build-Depends: debhelper (>= 5), automake1.9, autoconf, libtool, unixodbc-dev, libasound2-dev, libcurl3-dev, libssl-dev, ncurses-dev +Build-Depends: debhelper (>= 5), automake1.9, autoconf, libtool, unixodbc-dev, libasound2-dev, libcurl3-dev|libcurl4-openssl-dev, libssl-dev, ncurses-dev, libogg-dev, libvorbis-dev, libperl-dev, libgdbm-dev, libdb4.4-dev, libgnutls-dev Standards-Version: 3.7.2 Package: freeswitch @@ -17,18 +17,34 @@ control the callflow. Homepage: http://www.freeswitch.org/ +Package: freeswitch-dev +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch +Description: Development Package for the FreeSwitch open source telephony platform +Homepage: http://www.freeswitch.org/ + + Package: freeswitch-spidermonkey Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch Description: A Javascript engine for freeswitch Homepage: http://www.freeswitch.org/ -Package: freeswitch-dev +Package: freeswitch-perl Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch -Description: Development Package for the FreeSwitch open source telephony platform +Description: A perl engine for freeswitch Homepage: http://www.freeswitch.org/ +Package: freeswitch-lua +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch +Description: A lua engine for freeswitch +Homepage: http://www.freeswitch.org/ + + + + Package: freeswitch-codec-passthru-g7231 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch @@ -47,6 +63,9 @@ Description: Pass through g729 Codec support for the FreeSWITCH open source telephony platform Homepage: http://www.freeswitch.org/ + + + Package: freeswitch-lang-en Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch @@ -64,3 +83,9 @@ Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch Description: French language files for the FreeSWITCH open source telephony platform Homepage: http://www.freeswitch.org/ + +Package: freeswitch-lang-it +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, freeswitch +Description: Italian language files for the FreeSWITCH open source telephony platform +Homepage: http://www.freeswitch.org/ Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/default/freeswitch ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/default/freeswitch (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/default/freeswitch Tue May 13 23:37:33 2008 @@ -3,4 +3,5 @@ # start and stop of freeswitch # Enable initd (let init handle start and stop of freeswitch) + USE_INIT="false" Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/files ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/files (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/files Tue May 13 23:37:33 2008 @@ -1,9 +1,10 @@ -freeswitch_1.0~rc4-1_i386.deb net extra -freeswitch-spidermonkey_1.0~rc4-1_i386.deb net extra -freeswitch-dev_1.0~rc4-1_i386.deb net extra -freeswitch-codec-passthru-g7231_1.0~rc4-1_i386.deb net extra -freeswitch-codec-passthru-amr_1.0~rc4-1_i386.deb net extra -freeswitch-codec-passthru-g729_1.0~rc4-1_i386.deb net extra -freeswitch-lang-en_1.0~rc4-1_i386.deb net extra -freeswitch-lang-de_1.0~rc4-1_i386.deb net extra -freeswitch-lang-fr_1.0~rc4-1_i386.deb net extra +freeswitch_1.0~rc5-1_i386.deb net extra +freeswitch-spidermonkey_1.0~rc5-1_i386.deb net extra +freeswitch-dev_1.0~rc5-1_i386.deb net extra +freeswitch-codec-passthru-g7231_1.0~rc5-1_i386.deb net extra +freeswitch-codec-passthru-amr_1.0~rc5-1_i386.deb net extra +freeswitch-codec-passthru-g729_1.0~rc5-1_i386.deb net extra +freeswitch-lang-en_1.0~rc5-1_i386.deb net extra +freeswitch-lang-de_1.0~rc5-1_i386.deb net extra +freeswitch-lang-fr_1.0~rc5-1_i386.deb net extra +freeswitch-lang-it_1.0~rc5-1_i386.deb net extra Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch.conffiles ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch.conffiles (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch.conffiles Tue May 13 23:37:33 2008 @@ -1,15 +1,20 @@ -/opt/freeswitch/conf/dialplan/public.xml -/opt/freeswitch/conf/dialplan/default.xml /opt/freeswitch/conf/vars.xml /opt/freeswitch/conf/mime.types /opt/freeswitch/conf/web-vm.tpl /opt/freeswitch/conf/tetris.ttml -/opt/freeswitch/conf/sip_profiles/outbound.xml +/opt/freeswitch/conf/fur_elise.ttml +/opt/freeswitch/conf/voicemail.tpl +/opt/freeswitch/conf/freeswitch.xml +/opt/freeswitch/conf/extensions.conf +/opt/freeswitch/conf/dialplan/public.xml +/opt/freeswitch/conf/dialplan/default.xml +/opt/freeswitch/conf/dialplan/features.xml +/opt/freeswitch/conf/sip_profiles/external.xml /opt/freeswitch/conf/sip_profiles/nat.xml /opt/freeswitch/conf/sip_profiles/nat/example.xml -/opt/freeswitch/conf/sip_profiles/default/example.xml -/opt/freeswitch/conf/sip_profiles/default.xml -/opt/freeswitch/conf/sip_profiles/outbound/example.xml +/opt/freeswitch/conf/sip_profiles/internal/example.xml +/opt/freeswitch/conf/sip_profiles/internal.xml +/opt/freeswitch/conf/sip_profiles/external/example.xml /opt/freeswitch/conf/directory/default/1007.xml /opt/freeswitch/conf/directory/default/1001.xml /opt/freeswitch/conf/directory/default/1008.xml @@ -33,10 +38,6 @@ /opt/freeswitch/conf/directory/default/1016.xml /opt/freeswitch/conf/directory/default/1012.xml /opt/freeswitch/conf/directory/default.xml -/opt/freeswitch/conf/fur_elise.ttml -/opt/freeswitch/conf/voicemail.tpl -/opt/freeswitch/conf/freeswitch.xml -/opt/freeswitch/conf/extensions.conf /opt/freeswitch/conf/autoload_configs/ivr.conf.xml /opt/freeswitch/conf/autoload_configs/voicemail.conf.xml /opt/freeswitch/conf/autoload_configs/switch.conf.xml Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch.install ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch.install (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/freeswitch.install Tue May 13 23:37:33 2008 @@ -2,6 +2,7 @@ opt/freeswitch/bin/freeswitch opt/freeswitch/bin/scripts/* opt/freeswitch/lib/libfreeswitch*.so* +opt/freeswitch/mod/mod_shout* opt/freeswitch/mod/mod_console.so* opt/freeswitch/mod/mod_expr.so* opt/freeswitch/mod/mod_rss.so* @@ -35,19 +36,21 @@ opt/freeswitch/mod/mod_xml_*.so* opt/freeswitch/mod/mod_fsv.so* opt/freeswitch/mod/mod_tone_stream.so* -opt/freeswitch/conf/dialplan/public.xml -opt/freeswitch/conf/dialplan/default.xml -opt/freeswitch/conf/dialplan/extensions opt/freeswitch/conf/vars.xml opt/freeswitch/conf/mime.types opt/freeswitch/conf/web-vm.tpl opt/freeswitch/conf/tetris.ttml -opt/freeswitch/conf/sip_profiles/outbound.xml +opt/freeswitch/conf/fur_elise.ttml +opt/freeswitch/conf/dialplan/public.xml +opt/freeswitch/conf/dialplan/default.xml +opt/freeswitch/conf/dialplan/features.xml +opt/freeswitch/conf/dialplan/extensions +opt/freeswitch/conf/sip_profiles/external.xml opt/freeswitch/conf/sip_profiles/nat.xml opt/freeswitch/conf/sip_profiles/nat/example.xml -opt/freeswitch/conf/sip_profiles/default/example.xml -opt/freeswitch/conf/sip_profiles/default.xml -opt/freeswitch/conf/sip_profiles/outbound/example.xml +opt/freeswitch/conf/sip_profiles/internal/example.xml +opt/freeswitch/conf/sip_profiles/internal.xml +opt/freeswitch/conf/sip_profiles/external/example.xml opt/freeswitch/conf/directory/default/1007.xml opt/freeswitch/conf/directory/default/1001.xml opt/freeswitch/conf/directory/default/1008.xml @@ -71,7 +74,6 @@ opt/freeswitch/conf/directory/default/1016.xml opt/freeswitch/conf/directory/default/1012.xml opt/freeswitch/conf/directory/default.xml -opt/freeswitch/conf/fur_elise.ttml opt/freeswitch/conf/voicemail.tpl opt/freeswitch/conf/freeswitch.xml opt/freeswitch/conf/extensions.conf Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/rules ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/rules (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/debian/rules Tue May 13 23:37:33 2008 @@ -9,20 +9,20 @@ export DEB_DH_INSTALL_SOURCEDIR=debian/tmp export PASSTHRU_CODEC_MODULES=codecs/mod_g729 codecs/mod_g723_1 codecs/mod_amr export SPIDERMONKEY_MODULES=languages/mod_spidermonkey languages/mod_spidermonkey_core_db languages/mod_spidermonkey_odbc languages/mod_spidermonkey_socket languages/mod_spidermonkey_teletone -export APPLICATIONS_MODULES=applications/mod_commands applications/mod_conference applications/mod_dptools applications/mod_enum applications/mod_esf applications/mod_expr applications/mod_fifo applications/mod_limit applications/mod_rss applications/mod_voicemail applications/mod_fsv +export APPLICATIONS_MODULES=applications/mod_commands applications/mod_conference applications/mod_dptools applications/mod_enum applications/mod_esf applications/mod_expr applications/mod_fifo applications/mod_limit applications/mod_rss applications/mod_voicemail applications/mod_fsv export ASR_TTS_MODULES=asr_tts/mod_openmrcp -export CODECS_MODULES=codecs/mod_ilbc codecs/mod_h26x codecs/mod_speex mod_voipcodecs +export CODECS_MODULES=codecs/mod_ilbc codecs/mod_h26x codecs/mod_speex codecs/mod_voipcodecs export DIALPLANS_MODULES=dialplans/mod_dialplan_asterisk dialplans/mod_dialplan_directory dialplans/mod_dialplan_xml export DIRECTORIES_MODULES= export DOTNET_MODULES= export ENDPOINTS_MODULES=endpoints/mod_dingaling endpoints/mod_iax endpoints/mod_portaudio endpoints/mod_sofia endpoints/mod_woomera ../../libs/openzap/mod_openzap export EVENT_HANDLERS_MODULES=event_handlers/mod_event_multicast event_handlers/mod_event_socket -export FORMATS_MODULES=formats/mod_local_stream formats/mod_native_file formats/mod_sndfile formats/mod_tone_stream -export LANGUAGES_MODULES= +export FORMATS_MODULES=formats/mod_local_stream formats/mod_native_file formats/mod_sndfile formats/mod_tone_stream formats/mod_shout +export LANGUAGES_MODULES=languages/mod_perl languages/mod_lua export LOGGERS_MODULES=loggers/mod_console loggers/mod_logfile loggers/mod_syslog -export SAY_MODULES=say/mod_say_de say/mod_say_en say/mod_say_fr +export SAY_MODULES=say/mod_say_de say/mod_say_en say/mod_say_fr say/mod_say_it export TIMERS_MODULES= -export DISABLED_MODULES=applications/mod_soundtouch directories/mod_ldap languages/mod_java languages/mod_python languages/mod_spidermonkey_skel ast_tts/mod_cepstral asr_tts/mod_lumenvox endpoints/mod_wanpipe event_handlers/mod_event_test event_handlers/mod_radius_cdr event_handlers/mod_zeroconf formats/mod_shout say/mod_say_it say/mod_say_es say/mod_say_nl +export DISABLED_MODULES=applications/mod_soundtouch directories/mod_ldap languages/mod_java languages/mod_python languages/mod_spidermonkey_skel ast_tts/mod_cepstral asr_tts/mod_lumenvox endpoints/mod_wanpipe event_handlers/mod_event_test event_handlers/mod_radius_cdr event_handlers/mod_zeroconf say/mod_say_es say/mod_say_nl export XML_INT_MODULES=xml_int/mod_xml_rpc xml_int/mod_xml_curl xml_int/mod_xml_cdr export MYMODULES=$(PASSTHRU_CODEC_MODULES) $(SPIDERMONKEY_MODULES) $(APPLICATIONS_MODULES) $(ASR_TTS_MODULES) $(CODECS_MODULES) $(DIALPLANS_MODULES) $(DIRECTORIES_MODULES) $(DOTNET_MODULES) $(ENDPOINTS_MODULES) $(EVENT_HANDLERS_MODULES) $(FORMATS_MODULES) $(LANGUAGES_MODULES) $(LOGGERS_MODULES) $(SAY_MODULES) $(TIMERS_MODULES) $(XML_INT_MODULES) export MODULES=$(MYMODULES) @@ -53,10 +53,7 @@ touch modules.conf echo $(MODULES) for i in $(MODULES); do echo $$i >> modules.conf; done - ./configure --prefix=/opt/freeswitch \ - --host=$(DEB_HOST_GNU_TYPE) \ - --build=$(DEB_BUILD_GNU_TYPE) \ - CFLAGS="-D__VIA_HACK__" ${FEATURES} + ./configure --prefix=/opt/freeswitch --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) ${FEATURES} configure: bootstrap.sh AUTOCONF=${AUTOCONF} ./bootstrap.sh Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/docs/ChangeLog ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/docs/ChangeLog (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/docs/ChangeLog Tue May 13 23:37:33 2008 @@ -1,3 +1,36 @@ +freeswitch (1.0.rc5) + + Changed internal state names to avoid confusion + Fixed video negotiation + Enhanced accuracy of windows timer + Fixed mod_ldap build + Added dialplan and context to sql table for channels + Multiple fixes to mod_lua and mod_perl + Fixed logic bug in fifo causing segfault + internal changes to sip stack so we can remove a hash redundant to the stack + Fixed multiple memory leaks in mod_sofia + Fixed event fetch segfault on sip subscribe + Fixed segfault on timer rollover in sofia on 64bit + Fixed audio timing issues in mod_portaudio + Changed names of sip profiles in default config to avoid confusion + Fixed memory usage leak-like behavior when playing files requiring resampling + Removed some unused api's + Fix rtp timeout when playing moh + Removed some un-needed libraries and files from tree + Fixed multiple issues in sip stack including multiple segfaults + Added support for sip transfers on bypass_media and proxy_media calls + Added say application + Fixed --disable-debug configure option + Enhanced switch_cpp wrapper (and perl, python, lua, java) + Fixed segfault on inavalid stun response + Fixed configure help output + Fixed segfault on mp3 playback + Fixed assert on invalid sdp (missing m= line) + Added configurable windows service name + Fixed proxy mode call transition to non proxy call + Fixed solaris build of voipcodecs + Fixed sofia seg when call failure edge case + freeswitch (1.0.rc4) Add tab completion in cli @@ -32,6 +65,16 @@ Fixed MSVC build Fixed segfault on sip SUBSCRIBE with Expires: 0 Added mod_say_zh + Added --with-pyton and --with-pyton-config configure options + Added mod_lua + Enhanced switch_cpp wrapper in core and normalized interfaces for perl, python, lua, and java + Fixed multiple issues in cpp wrapper and the languages perl, python, lua and java + Added back mod_perl + Added sofia gateway option ping to adjust options ping frequency + Added .net event socket lib to contrib + Fixed passing of exact response codes of sip across a bridge + Added mod_reference, reference endpoint module + Enhanced build so you can now make commented out modules using "make mod_name" freeswitch (1.0.rc3) Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/freeswitch.spec ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/freeswitch.spec (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/freeswitch.spec Tue May 13 23:37:33 2008 @@ -5,7 +5,7 @@ Summary: FreeSWITCH open source telephony platform License: MPL Group: Productivity/Telephony/Servers -Version: 1.0.rc4 +Version: 1.0.rc5 Release: 1 URL: http://www.freeswitch.org/ Packager: Michal Bielicki @@ -250,7 +250,6 @@ %postun %{?run_ldconfig:%run_ldconfig} -%{__rm} -rf %{prefix} userdel freeswitch %clean Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/trixter/call-progress.pl ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/trixter/call-progress.pl (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/trixter/call-progress.pl Tue May 13 23:37:33 2008 @@ -138,7 +138,7 @@ } elsif (watchedChannel($myhash->{'channel-name'})) { if ($myhash->{'event-name'} eq "CHANNEL_ANSWER") { ## deal with answers do_answer($myhash); - } elsif ($myhash->{'event-name'} eq "CHANNEL_STATE" && $myhash->{'channel-state'} eq "CS_RING") { + } elsif ($myhash->{'event-name'} eq "CHANNEL_STATE" && $myhash->{'channel-state'} eq "CS_ROUTING") { do_ring($myhash); } elsif ($myhash->{'event-name'} eq "CHANNEL_HANGUP") { ## last thing done on a channel do_hangup($myhash); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/CallManager.cs ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/CallManager.cs (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/EventWatcher/CallManager.cs Tue May 13 23:37:33 2008 @@ -60,7 +60,7 @@ if (theEvent is EventPresenceIn) { EventPresenceIn ep = (EventPresenceIn) theEvent; - //Channel-State: CS_RING + //Channel-State: CS_ROUTING //Channel-Name: sofia/default/jonas%40192.168.1.102%3A5070 //Unique-ID: 2f87ba27-2f71-d64d-8c64-9966ee894eac //Call-Direction: inbound @@ -68,7 +68,7 @@ //Event-Name: PRESENCE_IN CallState state = CallState.Unknown; string destination = string.Empty; - if (ep.ChannelState.ChannelInfo.State == ChannelState.Ring) + if (ep.ChannelState.ChannelInfo.State == ChannelState.Routing) { if (IsInbound(ep)) { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents/EventChannelHangup.cs Tue May 13 23:37:33 2008 @@ -1,77 +1,16 @@ using System; -using System.Collections.Generic; -using System.Text; namespace FreeSwitch.EventSocket { public class EventChannelHangup : EventChannelState { - private Causes m_hangupCause; + private HangupCause _hangupCause; - public enum Causes - { - Success, - NoRouteTransitNet, - NoRouteDestination, - ChannelUnacceptable, - CallAwardedDelivered, - NormalClearing, - UserBusy, - NoUserResponse, - NoAnswer, - SubscriberAbsent, - CallRejected, - NumberChanged, - RedirectionToNewDestination, - ExchangeRoutingError, - DestinationOutOfOrder, - InvalidNumberFormat, - FacilityRejected, - ResponseToStatusEnquiry, - NormalUnspecified, - NormalCircuitCongestion, - NetworkOutOfOrder, - NormalTemporaryFailure, - SwitchCongestion, - AccessInfoDiscarded, - RequestedChanUnavail, - PreEmpted, - FacilityNotSubscribed, - OutgoingCallBarred, - IncomingCallBarred, - BearercapabilityNotauth, - BearercapabilityNotavail, - ServiceUnavailable, - ChanNotImplemented, - FacilityNotImplemented, - ServiceNotImplemented, - InvalidCallReference, - IncompatibleDestination, - InvalidMsgUnspecified, - MandatoryIeMissing, - MessageTypeNonexist, - WrongMessage, - IeNonexist, - InvalidIeContents, - WrongCallState, - RecoveryOnTimerExpire, - MandatoryIeLengthError, - ProtocolError, - Interworking, - OriginatorCancel, - Crash, - SystemShutdown, - LoseRace, - ManagerRequest, - BlindTransfer, - AttendedTransfer, - AllottedTimeout - } - public Causes Cause + public HangupCause Cause { - get { return m_hangupCause; } - set { m_hangupCause = value; } + get { return _hangupCause; } + set { _hangupCause = value; } } public override bool ParseCommand(string name, string value) @@ -79,7 +18,14 @@ if (name == "hangupcause" || name == "hangup-cause") { string cause = StringHelper.UpperCaseToCamelCase(value); - m_hangupCause = (Causes)Enum.Parse(typeof(Causes), cause); + try + { + _hangupCause = (HangupCause)Enum.Parse(typeof(HangupCause), cause, true); + } + catch(ArgumentException) + { + _hangupCause = HangupCause.Unknown; + } } else return base.ParseCommand(name, value); @@ -88,4 +34,67 @@ } } + + public enum HangupCause + { + Success, + NoRouteTransitNet, + NoRouteDestination, + ChannelUnacceptable, + CallAwardedDelivered, + NormalClearing, + UserBusy, + NoUserResponse, + NoAnswer, + SubscriberAbsent, + CallRejected, + NumberChanged, + RedirectionToNewDestination, + ExchangeRoutingError, + DestinationOutOfOrder, + InvalidNumberFormat, + FacilityRejected, + ResponseToStatusEnquiry, + NormalUnspecified, + NormalCircuitCongestion, + NetworkOutOfOrder, + NormalTemporaryFailure, + SwitchCongestion, + AccessInfoDiscarded, + RequestedChanUnavail, + PreEmpted, + FacilityNotSubscribed, + OutgoingCallBarred, + IncomingCallBarred, + BearercapabilityNotauth, + BearercapabilityNotavail, + ServiceUnavailable, + ChanNotImplemented, + FacilityNotImplemented, + ServiceNotImplemented, + InvalidCallReference, + IncompatibleDestination, + InvalidMsgUnspecified, + MandatoryIeMissing, + MessageTypeNonexist, + WrongMessage, + IeNonexist, + InvalidIeContents, + WrongCallState, + RecoveryOnTimerExpire, + MandatoryIeLengthError, + ProtocolError, + Interworking, + OriginatorCancel, + Crash, + SystemShutdown, + LoseRace, + ManagerRequest, + BlindTransfer, + AttendedTransfer, + AllottedTimeout, + UnAllocated, + Unknown + } + } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelInfo.cs Tue May 13 23:37:33 2008 @@ -3,32 +3,32 @@ #region enum ChannelState public enum ChannelState { - New, // Channel is newly created - Init, // Channel has been initilized - Ring, // Channel is looking for a dialplan - Transmit, // Channel is in a passive transmit state - Execute, // Channel is executing it's dialplan - Loopback, // Channel is in loopback - Hold, // Channel is on hold - Hibernate, // Channel is in a sleep state - Hangup, // Channel is flagged for hangup and ready to end - Done, // Channel is ready to be destroyed and out of the state machine + New, // Channel is newly created + Init, // Channel has been initilized + Routing, // Channel is looking for a dialplan + SoftExecute, // Channel is in a passive transmit state + Execute, // Channel is executing it's dialplan + ExchangeMedia, // Channel is exchanging media + ConsumeMedia, // Channel is consuming media + Hibernate, // Channel is in a sleep state + Hangup, // Channel is flagged for hangup and ready to end + Done, // Channel is ready to be destroyed and out of the state machine Unknown } #endregion public class ChannelInfo { - private ChannelState m_state; - private int m_stateNumber; + private ChannelState _state; + private int _stateNumber; private string _profile; - private string m_address; + private string _address; private string _hostName; - private string m_protocol = string.Empty; - private string m_readCodecName; - private int m_readCodecRate; - private string m_writeCodecName; - private int m_writeCodecRate; + private string _protocol = string.Empty; + private string _readCodecName; + private int _readCodecRate; + private string _writeCodecName; + private int _writeCodecRate; /// <summary> /// Coded used to read information from the channel. @@ -36,8 +36,8 @@ /// </summary> public string ReadCodecName { - get { return m_readCodecName; } - set { m_readCodecName = value; } + get { return _readCodecName; } + set { _readCodecName = value; } } /// <summary> @@ -46,8 +46,8 @@ /// </summary> public int ReadCodecRate { - get { return m_readCodecRate; } - set { m_readCodecRate = value; } + get { return _readCodecRate; } + set { _readCodecRate = value; } } /// <summary> @@ -56,8 +56,8 @@ /// </summary> public string WriteCodecName { - get { return m_writeCodecName; } - set { m_writeCodecName = value; } + get { return _writeCodecName; } + set { _writeCodecName = value; } } /// <summary> @@ -66,8 +66,8 @@ /// </summary> public int WriteCodecRate { - get { return m_writeCodecRate; } - set { m_writeCodecRate = value; } + get { return _writeCodecRate; } + set { _writeCodecRate = value; } } /// <summary> @@ -75,8 +75,8 @@ /// </summary> public ChannelState State { - get { return m_state; } - set { m_state = value; } + get { return _state; } + set { _state = value; } } /// <summary> @@ -84,8 +84,8 @@ /// </summary> public int StateNumber { - get { return m_stateNumber; } - set { m_stateNumber = value; } + get { return _stateNumber; } + set { _stateNumber = value; } } /// <summary> @@ -98,22 +98,22 @@ /// <seealso cref="HostName"/> public string Name { - get { return m_protocol + "/" + _profile + "/" + m_address + "@" + _hostName; } + get { return _protocol + "/" + _profile + "/" + _address + "@" + _hostName; } set { string[] bits = value.Split('/'); if (bits.Length == 3) { - m_protocol = bits[0]; + _protocol = bits[0]; _profile = bits[1]; string[] userParts = bits[2].Split('@'); if (userParts.Length == 2) { - m_address = userParts[0]; + _address = userParts[0]; HostName = userParts[1]; } else - m_address = bits[2]; + _address = bits[2]; } } @@ -133,8 +133,8 @@ /// </summary> public string Address { - get { return m_address; } - set { m_address = value; } + get { return _address; } + set { _address = value; } } /// <summary> @@ -165,7 +165,7 @@ /// </summary> public string Protocol { - get { return m_protocol; } + get { return _protocol; } } public bool Parse(string name, string value) @@ -173,25 +173,25 @@ switch (name) { case "channel-state": - m_state = StateFromString(value); + _state = StateFromString(value); break; case "channel-state-number": - int.TryParse(value, out m_stateNumber); + int.TryParse(value, out _stateNumber); break; case "channel-name": Name = value; break; case "channel-read-codec-name": - m_readCodecName = value; + _readCodecName = value; break; case "channel-read-codec-rate": - int.TryParse(value, out m_readCodecRate); + int.TryParse(value, out _readCodecRate); break; case "channel-write-codec-name": - m_writeCodecName = value; + _writeCodecName = value; break; case "channel-write-codec-rate": - int.TryParse(value, out m_writeCodecRate); + int.TryParse(value, out _writeCodecRate); break; default: return false; @@ -205,11 +205,11 @@ { case "CS_NEW": return ChannelState.New; case "CS_INIT": return ChannelState.Init; - case "CS_RING": return ChannelState.Ring; - case "CS_TRANSMIT": return ChannelState.Transmit; + case "CS_ROUTING": return ChannelState.Routing; + case "CS_SOFT_EXECUTE": return ChannelState.SoftExecute; case "CS_EXECUTE": return ChannelState.Execute; - case "CS_LOOPBACK": return ChannelState.Loopback; - case "CS_HOLD": return ChannelState.Hold; + case "CS_EXCHANGE_MEDIA": return ChannelState.ExchangeMedia; + case "CS_CONSUME_MEDIA": return ChannelState.ConsumeMedia; case "CS_HIBERNATE": return ChannelState.Hibernate; case "CS_HANGUP": return ChannelState.Hangup; case "CS_DONE": return ChannelState.Done; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SendMsg.cs ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SendMsg.cs (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands/SendMsg.cs Tue May 13 23:37:33 2008 @@ -1,3 +1,5 @@ +using System; + namespace FreeSwitch.EventSocket.Commands { public abstract class SendMsg : CmdBase @@ -7,11 +9,18 @@ public SendMsg(string uuid) { + if (string.IsNullOrEmpty(uuid)) + throw new ArgumentNullException("uuid"); _uuid = uuid; } public SendMsg(string uuid, string callCommand) { + if (string.IsNullOrEmpty(uuid)) + throw new ArgumentNullException("uuid"); + if (string.IsNullOrEmpty(callCommand)) + throw new ArgumentNullException("callCommand"); + _callCommand = callCommand; _uuid = uuid; } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/FreeSwitch.EventSocket.csproj Tue May 13 23:37:33 2008 @@ -54,6 +54,7 @@ <Compile Include="Commands\AuthCommand.cs" /> <Compile Include="Commands\CmdBase.cs" /> <Compile Include="Commands\CommandReply.cs" /> + <Compile Include="Commands\DeflectCmd.cs" /> <Compile Include="Commands\ExecuteJavascript.cs" /> <Compile Include="Commands\GetVariable.cs" /> <Compile Include="Commands\HoldCmd.cs" /> Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents/EventPresence.cs Tue May 13 23:37:33 2008 @@ -34,7 +34,7 @@ } /// <summary> - /// Caller is only specified on state CS_RING + /// Caller is only specified on state CS_ROUTING /// and not on CS_HANGUP /// </summary> public PartyInfo Caller Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/lua/mwi_event.lua ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/lua/mwi_event.lua (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/lua/mwi_event.lua Tue May 13 23:37:33 2008 @@ -5,4 +5,5 @@ local event = freeswitch.Event("message_waiting"); event:addHeader("MWI-Messages-Waiting", "no"); event:addHeader("MWI-Message-Account", "sip:1000@10.0.1.100"); +-- event:addHeader("Sofia-Profile", "internal"); event:fire(); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/perl/mwi_event.pl ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/perl/mwi_event.pl (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/scripts/perl/mwi_event.pl Tue May 13 23:37:33 2008 @@ -3,6 +3,9 @@ freeswitch::console_log("info", "Perl in da house!!!\n"); $event = new freeswitch::Event("message_waiting"); -$event->add_header("MWI-Messages-Waiting", "yes"); -$event->add_header("MWI-Message-Account", 'sip:1002@10.0.1.100'); +$event->addHeader("MWI-Messages-Waiting", "yes"); +$event->addHeader("MWI-Message-Account", 'sip:1002@10.0.1.100'); + +#$event->addHeader("Sofia-Profile", 'internal'); + $event->fire(); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/private/switch_core_pvt.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/private/switch_core_pvt.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/private/switch_core_pvt.h Tue May 13 23:37:33 2008 @@ -186,6 +186,8 @@ char *mailer_app_args; uint32_t max_dtmf_duration; uint32_t default_dtmf_duration; + switch_frame_t dummy_cng_frame; + char dummy_data[5]; }; extern struct switch_runtime runtime; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_core.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_core.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_core.h Tue May 13 23:37:33 2008 @@ -809,10 +809,10 @@ \param stream_id which logical media channel to use \return SWITCH_STATUS_SUCCESS a the frame was read */ -SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(_In_ switch_core_session_t *session, switch_frame_t **frame, int timeout, int stream_id); +SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(_In_ switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); -SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(_In_ switch_core_session_t *session, switch_frame_t **frame, int timeout, int stream_id); -SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(_In_ switch_core_session_t *session, switch_frame_t *frame, int timeout, int stream_id); +SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(_In_ switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(_In_ switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); /*! \brief Reset the buffers and resampler on a session @@ -828,7 +828,7 @@ \param stream_id which logical media channel to use \return SWITCH_STATUS_SUCCESS a the frame was written */ -SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(_In_ switch_core_session_t *session, switch_frame_t *frame, int timeout, int stream_id); +SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(_In_ switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); SWITCH_DECLARE(switch_status_t) switch_core_session_perform_kill_channel(_In_ switch_core_session_t *session, @@ -842,24 +842,6 @@ #define switch_core_session_kill_channel(session, sig) switch_core_session_perform_kill_channel(session, __FILE__, __SWITCH_FUNC__, __LINE__, sig) /*! - \brief Wait for a session to be ready for input - \param session session to wait for - \param timeout number of milliseconds to wait for data - \param stream_id which logical media channel to use - \return SWITCH_STATUS_SUCCESS if data is available for read within timeframe specified -*/ -SWITCH_DECLARE(switch_status_t) switch_core_session_waitfor_read(_In_ switch_core_session_t *session, int timeout, int stream_id); - -/*! - \brief Wait for a session to be ready for output - \param session session to wait for - \param timeout number of milliseconds to wait for data - \param stream_id which logical media channel to use - \return SWITCH_STATUS_SUCCESS if the session is available for write within timeframe specified -*/ -SWITCH_DECLARE(switch_status_t) switch_core_session_waitfor_write(_In_ switch_core_session_t *session, int timeout, int stream_id); - -/*! \brief Send DTMF to a session \param session session to send DTMF to \param dtmf string to send to the session Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_core_event_hook.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_core_event_hook.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_core_event_hook.h Tue May 13 23:37:33 2008 @@ -43,8 +43,6 @@ typedef struct switch_io_event_hook_write_frame switch_io_event_hook_write_frame_t; typedef struct switch_io_event_hook_video_write_frame switch_io_event_hook_video_write_frame_t; typedef struct switch_io_event_hook_kill_channel switch_io_event_hook_kill_channel_t; -typedef struct switch_io_event_hook_waitfor_read switch_io_event_hook_waitfor_read_t; -typedef struct switch_io_event_hook_waitfor_write switch_io_event_hook_waitfor_write_t; typedef struct switch_io_event_hook_send_dtmf switch_io_event_hook_send_dtmf_t; typedef struct switch_io_event_hook_recv_dtmf switch_io_event_hook_recv_dtmf_t; typedef struct switch_io_event_hook_state_change switch_io_event_hook_state_change_t; @@ -53,13 +51,11 @@ (switch_core_session_t *, switch_caller_profile_t *, switch_core_session_t *, switch_originate_flag_t); typedef switch_status_t (*switch_receive_message_hook_t) (switch_core_session_t *, switch_core_session_message_t *); typedef switch_status_t (*switch_receive_event_hook_t) (switch_core_session_t *, switch_event_t *); -typedef switch_status_t (*switch_read_frame_hook_t) (switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int); -typedef switch_status_t (*switch_video_read_frame_hook_t) (switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int); -typedef switch_status_t (*switch_write_frame_hook_t) (switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int); -typedef switch_status_t (*switch_video_write_frame_hook_t) (switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int); +typedef switch_status_t (*switch_read_frame_hook_t) (switch_core_session_t *, switch_frame_t **, switch_io_flag_t, int); +typedef switch_status_t (*switch_video_read_frame_hook_t) (switch_core_session_t *, switch_frame_t **, switch_io_flag_t, int); +typedef switch_status_t (*switch_write_frame_hook_t) (switch_core_session_t *, switch_frame_t *, switch_io_flag_t, int); +typedef switch_status_t (*switch_video_write_frame_hook_t) (switch_core_session_t *, switch_frame_t *, switch_io_flag_t, int); typedef switch_status_t (*switch_kill_channel_hook_t) (switch_core_session_t *, int); -typedef switch_status_t (*switch_waitfor_read_hook_t) (switch_core_session_t *, int, int); -typedef switch_status_t (*switch_waitfor_write_hook_t) (switch_core_session_t *, int, int); typedef switch_status_t (*switch_send_dtmf_hook_t) (switch_core_session_t *, const switch_dtmf_t *); typedef switch_status_t (*switch_recv_dtmf_hook_t) (switch_core_session_t *, const switch_dtmf_t *); typedef switch_status_t (*switch_state_change_hook_t) (switch_core_session_t *); @@ -120,20 +116,6 @@ struct switch_io_event_hook_kill_channel *next; }; -/*! \brief Node in which to store custom waitfor read channel callback hooks */ -struct switch_io_event_hook_waitfor_read { - /*! the waitfor read channel callback hook */ - switch_waitfor_read_hook_t waitfor_read; - struct switch_io_event_hook_waitfor_read *next; -}; - -/*! \brief Node in which to store custom waitfor write channel callback hooks */ -struct switch_io_event_hook_waitfor_write { - /*! the waitfor write channel callback hook */ - switch_waitfor_write_hook_t waitfor_write; - struct switch_io_event_hook_waitfor_write *next; -}; - /*! \brief Node in which to store custom send dtmf channel callback hooks */ struct switch_io_event_hook_send_dtmf { /*! the send dtmf channel callback hook */ @@ -179,10 +161,6 @@ switch_io_event_hook_video_write_frame_t *video_write_frame; /*! a list of kill channel hooks */ switch_io_event_hook_kill_channel_t *kill_channel; - /*! a list of wait for read hooks */ - switch_io_event_hook_waitfor_read_t *waitfor_read; - /*! a list of wait for write hooks */ - switch_io_event_hook_waitfor_write_t *waitfor_write; /*! a list of send dtmf hooks */ switch_io_event_hook_send_dtmf_t *send_dtmf; /*! a list of recv dtmf hooks */ @@ -244,8 +222,6 @@ NEW_HOOK_DECL_ADD_P(video_read_frame); NEW_HOOK_DECL_ADD_P(video_write_frame); NEW_HOOK_DECL_ADD_P(kill_channel); -NEW_HOOK_DECL_ADD_P(waitfor_read); -NEW_HOOK_DECL_ADD_P(waitfor_write); NEW_HOOK_DECL_ADD_P(send_dtmf); NEW_HOOK_DECL_ADD_P(recv_dtmf); NEW_HOOK_DECL_ADD_P(resurrect_session); @@ -259,8 +235,6 @@ NEW_HOOK_DECL_REM_P(video_read_frame); NEW_HOOK_DECL_REM_P(video_write_frame); NEW_HOOK_DECL_REM_P(kill_channel); -NEW_HOOK_DECL_REM_P(waitfor_read); -NEW_HOOK_DECL_REM_P(waitfor_write); NEW_HOOK_DECL_REM_P(send_dtmf); NEW_HOOK_DECL_REM_P(recv_dtmf); NEW_HOOK_DECL_REM_P(resurrect_session); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_cpp.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_cpp.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_cpp.h Tue May 13 23:37:33 2008 @@ -14,7 +14,7 @@ #define sanity_check(x) do { if (!(session && allocated)) { switch_log_printf(SWITCH_CHANNEL_LOG,SWITCH_LOG_ERROR, "session is not initalized\n"); return x;}} while(0) #define sanity_check_noreturn do { if (!(session && allocated)) { switch_log_printf(SWITCH_CHANNEL_LOG,SWITCH_LOG_ERROR, "session is not initalized\n"); return;}} while(0) -#define init_vars() do { session = NULL; channel = NULL; uuid = NULL; tts_name = NULL; voice_name = NULL; memset(&args, 0, sizeof(args)); ap = NULL; caller_profile.source = "mod_unknown"; caller_profile.dialplan = ""; caller_profile.context = ""; caller_profile.caller_id_name = ""; caller_profile.caller_id_number = ""; caller_profile.network_addr = ""; caller_profile.ani = ""; caller_profile.aniii = ""; caller_profile.rdnis = ""; caller_profile.username = ""; on_hangup = NULL; memset(&cb_state, 0, sizeof(cb_state)); hook_state = CS_NEW; } while(0) +#define init_vars() do { session = NULL; channel = NULL; uuid = NULL; tts_name = NULL; voice_name = NULL; xml_cdr_text = NULL; memset(&args, 0, sizeof(args)); ap = NULL; caller_profile.source = "mod_unknown"; caller_profile.dialplan = ""; caller_profile.context = ""; caller_profile.caller_id_name = ""; caller_profile.caller_id_number = ""; caller_profile.network_addr = ""; caller_profile.ani = ""; caller_profile.aniii = ""; caller_profile.rdnis = ""; caller_profile.username = ""; on_hangup = NULL; memset(&cb_state, 0, sizeof(cb_state)); hook_state = CS_NEW; } while(0) // @@ -144,7 +144,7 @@ SWITCH_DECLARE(bool) setPriority(switch_priority_t priority = SWITCH_PRIORITY_NORMAL); SWITCH_DECLARE(char *)getHeader(char *header_name); SWITCH_DECLARE(char *)getBody(void); - SWITCH_DECLARE(char *)getType(void); + SWITCH_DECLARE(const char *)getType(void); SWITCH_DECLARE(bool) addBody(const char *value); SWITCH_DECLARE(bool) addHeader(const char *header_name, const char *value); SWITCH_DECLARE(bool) delHeader(const char *header_name); @@ -160,6 +160,7 @@ switch_input_args_t *ap; // ptr to args .. (is this really needed?) switch_caller_profile_t caller_profile; // avoid passing so many args to originate, // instead set them here first + char *xml_cdr_text; char *uuid; char *tts_name; char *voice_name; @@ -168,12 +169,12 @@ switch_file_handle_t local_fh; switch_file_handle_t *fhp; char dtmf_buf[512]; - SWITCH_DECLARE(switch_status_t) process_callback_result(char *ret); + public: SWITCH_DECLARE_CONSTRUCTOR CoreSession(); SWITCH_DECLARE_CONSTRUCTOR CoreSession(char *uuid); SWITCH_DECLARE_CONSTRUCTOR CoreSession(switch_core_session_t *new_session); - virtual SWITCH_DECLARE_CONSTRUCTOR ~CoreSession(); + SWITCH_DECLARE_CONSTRUCTOR ~CoreSession(); switch_core_session_t *session; switch_channel_t *channel; unsigned int flags; @@ -184,12 +185,12 @@ SWITCH_DECLARE(int) answer(); SWITCH_DECLARE(int) preAnswer(); - virtual SWITCH_DECLARE(void) hangup(char *cause = "normal_clearing"); + SWITCH_DECLARE(void) hangup(char *cause = "normal_clearing"); SWITCH_DECLARE(void) setVariable(char *var, char *val); SWITCH_DECLARE(void) setPrivate(char *var, void *val); SWITCH_DECLARE(void *)getPrivate(char *var); SWITCH_DECLARE(const char *)getVariable(char *var); - + SWITCH_DECLARE(switch_status_t) process_callback_result(char *ret); /** \brief Record to a file * \param filename @@ -309,6 +310,9 @@ SWITCH_DECLARE(void) sendEvent(Event *sendME); + SWITCH_DECLARE(void) setEventData(Event *e); + SWITCH_DECLARE(char *) getXMLCDR(); + virtual bool begin_allow_threads() = 0; virtual bool end_allow_threads() = 0; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_event.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_event.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_event.h Tue May 13 23:37:33 2008 @@ -158,6 +158,8 @@ */ _Ret_opt_z_ SWITCH_DECLARE(char *) switch_event_get_header(switch_event_t *event, char *header_name); +#define switch_event_get_header_nil(e, h) switch_str_nil(switch_event_get_header(e,h)) + /*! \brief Retrieve the body value from an event \param event the event to read the body from @@ -230,7 +232,7 @@ \param event the event id to render the name of \return the rendered name */ -SWITCH_DECLARE(char *) switch_event_name(switch_event_types_t event); +SWITCH_DECLARE(const char *) switch_event_name(switch_event_types_t event); /*! \brief return the event id that matches a given event name Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_ivr.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_ivr.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_ivr.h Tue May 13 23:37:33 2008 @@ -756,7 +756,10 @@ switch_bool_t dial_b, switch_bool_t exec_b, const char *app); SWITCH_DECLARE(switch_status_t) switch_ivr_unbind_dtmf_meta_session(switch_core_session_t *session); SWITCH_DECLARE(switch_status_t) switch_ivr_soft_hold(switch_core_session_t *session, const char *unhold_key, const char *moh_a, const char *moh_b); +SWITCH_DECLARE(switch_status_t) switch_ivr_say(switch_core_session_t *session, const char *tosay, const char *module_name, const char *say_type, const char *say_method, switch_input_args_t *args); +SWITCH_DECLARE(switch_say_method_t) switch_ivr_get_say_method_by_name(const char *name); +SWITCH_DECLARE(switch_say_type_t) switch_ivr_get_say_type_by_name(const char *name); /** @} */ Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_module_interfaces.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_module_interfaces.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_module_interfaces.h Tue May 13 23:37:33 2008 @@ -48,12 +48,12 @@ typedef enum { SWITCH_SHN_ON_INIT, - SWITCH_SHN_ON_RING, + SWITCH_SHN_ON_ROUTING, SWITCH_SHN_ON_EXECUTE, SWITCH_SHN_ON_HANGUP, - SWITCH_SHN_ON_LOOPBACK, - SWITCH_SHN_ON_TRANSMIT, - SWITCH_SHN_ON_HOLD, + SWITCH_SHN_ON_EXCHANGE_MEDIA, + SWITCH_SHN_ON_SOFT_EXECUTE, + SWITCH_SHN_ON_CONSUME_MEDIA, SWITCH_SHN_ON_HIBERNATE, SWITCH_SHN_ON_RESET, SWITCH_SHN_ON_PARK @@ -62,18 +62,18 @@ struct switch_state_handler_table { /*! executed when the state changes to init */ switch_state_handler_t on_init; - /*! executed when the state changes to ring */ - switch_state_handler_t on_ring; + /*! executed when the state changes to routing */ + switch_state_handler_t on_routing; /*! executed when the state changes to execute */ switch_state_handler_t on_execute; /*! executed when the state changes to hangup */ switch_state_handler_t on_hangup; - /*! executed when the state changes to loopback */ - switch_state_handler_t on_loopback; - /*! executed when the state changes to transmit */ - switch_state_handler_t on_transmit; - /*! executed when the state changes to hold */ - switch_state_handler_t on_hold; + /*! executed when the state changes to exchange_media */ + switch_state_handler_t on_exchange_media; + /*! executed when the state changes to soft_execute */ + switch_state_handler_t on_soft_execute; + /*! executed when the state changes to consume_media */ + switch_state_handler_t on_consume_media; /*! executed when the state changes to hibernate */ switch_state_handler_t on_hibernate; /*! executed when the state changes to reset */ @@ -101,17 +101,15 @@ typedef switch_call_cause_t (*switch_io_outgoing_channel_t) (switch_core_session_t *, switch_caller_profile_t *, switch_core_session_t **, switch_memory_pool_t **, switch_originate_flag_t); -typedef switch_status_t (*switch_io_read_frame_t) (switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int); -typedef switch_status_t (*switch_io_write_frame_t) (switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int); +typedef switch_status_t (*switch_io_read_frame_t) (switch_core_session_t *, switch_frame_t **, switch_io_flag_t, int); +typedef switch_status_t (*switch_io_write_frame_t) (switch_core_session_t *, switch_frame_t *, switch_io_flag_t, int); typedef switch_status_t (*switch_io_kill_channel_t) (switch_core_session_t *, int); -typedef switch_status_t (*switch_io_waitfor_read_t) (switch_core_session_t *, int, int); -typedef switch_status_t (*switch_io_waitfor_write_t) (switch_core_session_t *, int, int); typedef switch_status_t (*switch_io_send_dtmf_t) (switch_core_session_t *, const switch_dtmf_t *); typedef switch_status_t (*switch_io_receive_message_t) (switch_core_session_t *, switch_core_session_message_t *); typedef switch_status_t (*switch_io_receive_event_t) (switch_core_session_t *, switch_event_t *); typedef switch_status_t (*switch_io_state_change_t) (switch_core_session_t *); -typedef switch_status_t (*switch_io_read_video_frame_t) (switch_core_session_t *, switch_frame_t **, int, switch_io_flag_t, int); -typedef switch_status_t (*switch_io_write_video_frame_t) (switch_core_session_t *, switch_frame_t *, int, switch_io_flag_t, int); +typedef switch_status_t (*switch_io_read_video_frame_t) (switch_core_session_t *, switch_frame_t **, switch_io_flag_t, int); +typedef switch_status_t (*switch_io_write_video_frame_t) (switch_core_session_t *, switch_frame_t *, switch_io_flag_t, int); typedef switch_call_cause_t (*switch_io_resurrect_session_t)(switch_core_session_t **, switch_memory_pool_t **, void *); typedef enum { @@ -119,8 +117,6 @@ SWITCH_IO_READ_FRAME, SWITCH_IO_WRITE_FRAME, SWITCH_IO_KILL_CHANNEL, - SWITCH_IO_WAITFOR_READ, - SWITCH_IO_WAITFOR_WRITE, SWITCH_IO_SEND_DTMF, SWITCH_IO_RECEIVE_MESSAGE, SWITCH_IO_RECEIVE_EVENT, @@ -140,10 +136,6 @@ switch_io_write_frame_t write_frame; /*! send a kill signal to the session's channel */ switch_io_kill_channel_t kill_channel; - /*! wait for the session's channel to be ready to read audio */ - switch_io_waitfor_read_t waitfor_read; - /*! wait for the session's channel to be ready to write audio */ - switch_io_waitfor_write_t waitfor_write; /*! send a string of DTMF digits to a session's channel */ switch_io_send_dtmf_t send_dtmf; /*! receive a message from another session */ Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_rtp.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_rtp.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_rtp.h Tue May 13 23:37:33 2008 @@ -296,7 +296,7 @@ \return the number of bytes read */ SWITCH_DECLARE(switch_status_t) switch_rtp_read(switch_rtp_t *rtp_session, void *data, uint32_t * datalen, - switch_payload_t *payload_type, switch_frame_flag_t *flags); + switch_payload_t *payload_type, switch_frame_flag_t *flags, switch_io_flag_t io_flags); /*! \brief Queue RFC2833 DTMF data into an RTP Session @@ -332,7 +332,7 @@ \return the number of bytes read */ SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read(switch_rtp_t *rtp_session, - void **data, uint32_t * datalen, switch_payload_t *payload_type, switch_frame_flag_t *flags); + void **data, uint32_t * datalen, switch_payload_t *payload_type, switch_frame_flag_t *flags, switch_io_flag_t io_flags); /*! \brief Read data from a given RTP session without copying @@ -340,7 +340,7 @@ \param frame a frame to populate with information \return the number of bytes read */ -SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read_frame(switch_rtp_t *rtp_session, switch_frame_t *frame); +SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read_frame(switch_rtp_t *rtp_session, switch_frame_t *frame, switch_io_flag_t io_flagsm); /*! \brief Enable VAD on an RTP Session Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_stun.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_stun.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_stun.h Tue May 13 23:37:33 2008 @@ -40,6 +40,7 @@ SWITCH_BEGIN_EXTERN_C #define SWITCH_STUN_DEFAULT_PORT 3478 #define SWITCH_STUN_PACKET_MIN_LEN 20 +#define SWITCH_STUN_ATTRIBUTE_MIN_LEN 8 typedef enum { SWITCH_STUN_BINDING_REQUEST = 0x0001, SWITCH_STUN_BINDING_RESPONSE = 0x0101, @@ -98,13 +99,13 @@ } switch_stun_type_t; typedef struct { - int16_t type; - int16_t length; + uint16_t type; + uint16_t length; char id[16]; } switch_stun_packet_header_t; typedef struct { - int16_t type; + uint16_t type; uint16_t length; char value[]; } switch_stun_packet_attribute_t; @@ -115,10 +116,10 @@ } switch_stun_packet_t; typedef struct { - int8_t wasted; - int8_t family; - int16_t port; - int32_t address; + uint8_t wasted; + uint8_t family; + uint16_t port; + uint32_t address; } switch_stun_ip_t; @@ -208,6 +209,12 @@ switch_port_t *port, char *stunip, switch_port_t stunport, char **err, switch_memory_pool_t *pool); +/*! + \brief Obtain the padded length of an attribute's value + \param attribute the attribute + \return the padded size in bytes +*/ +#define switch_stun_attribute_padded_length(attribute) ((uint16_t)(attribute->length + (sizeof(uint32_t)-1)) & ~sizeof(uint32_t)) /*! \brief set a switch_stun_packet_attribute_t pointer to point at the first attribute in a packet @@ -221,7 +228,7 @@ \param attribute the pointer to increment \return true or false depending on if there are any more attributes */ -#define switch_stun_packet_next_attribute(attribute) (attribute = (switch_stun_packet_attribute_t *) (attribute->value + attribute->length)) && attribute->length +#define switch_stun_packet_next_attribute(attribute, end) (attribute && (attribute = (switch_stun_packet_attribute_t *) (attribute->value + switch_stun_attribute_padded_length(attribute))) && ((void *)attribute < end) && attribute->length && ((void *)(attribute + switch_stun_attribute_padded_length(attribute)) < end)) /*! \brief Obtain the correct length in bytes of a stun packet Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_types.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_types.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/include/switch_types.h Tue May 13 23:37:33 2008 @@ -628,16 +628,16 @@ /*! \enum switch_channel_state_t - \brief Channel States + \brief Channel States (these are the defaults, CS_SOFT_EXECUTE, CS_EXCHANGE_MEDIA, and CS_CONSUME_MEDIA are often overridden by specific apps) <pre> CS_NEW - Channel is newly created CS_INIT - Channel has been initilized -CS_RING - Channel is looking for a dialplan -CS_TRANSMIT - Channel is in a passive transmit state +CS_ROUTING - Channel is looking for an extension to execute +CS_SOFT_EXECUTE - Channel is ready to execute from 3rd party control CS_EXECUTE - Channel is executing it's dialplan -CS_LOOPBACK - Channel is in loopback -CS_PARK - Channel is parked -CS_HOLD - Channel is on hold +CS_EXCHANGE_MEDIA - Channel is exchanging media with another channel. +CS_PARK - Channel is accepting media awaiting commands. +CS_CONSUME_MEDIA - Channel is consuming all media and dropping it. CS_HIBERNATE - Channel is in a sleep state CS_RESET - Channel is in a reset state CS_HANGUP - Channel is flagged for hangup and ready to end @@ -647,12 +647,12 @@ typedef enum { CS_NEW, CS_INIT, - CS_RING, - CS_TRANSMIT, + CS_ROUTING, + CS_SOFT_EXECUTE, CS_EXECUTE, - CS_LOOPBACK, + CS_EXCHANGE_MEDIA, CS_PARK, - CS_HOLD, + CS_CONSUME_MEDIA, CS_HIBERNATE, CS_RESET, CS_HANGUP, @@ -943,7 +943,8 @@ } switch_file_flag_t; typedef enum { - SWITCH_IO_FLAG_NOOP = 0 + SWITCH_IO_FLAG_NONE = 0, + SWITCH_IO_FLAG_NOBLOCK = (1 << 0) } switch_io_flag_t; /* make sure this is synced with the EVENT_NAMES array in switch_event.c Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_conference/mod_conference.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_conference/mod_conference.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_conference/mod_conference.c Tue May 13 23:37:33 2008 @@ -302,6 +302,7 @@ uint32_t resample_out_len; conference_file_node_t *fnode; conference_relationship_t *relationships; + switch_ivr_digit_stream_parser_t *dtmf_parser; switch_ivr_digit_stream_t *digit_stream; switch_speech_handle_t lsh; switch_speech_handle_t *sh; @@ -348,7 +349,7 @@ static switch_status_t conference_say(conference_obj_t * conference, const char *text, uint32_t leadin); static void conference_list(conference_obj_t * conference, switch_stream_handle_t *stream, char *delim); SWITCH_STANDARD_API(conf_api_main); -static switch_status_t audio_bridge_on_ring(switch_core_session_t *session); +static switch_status_t audio_bridge_on_routing(switch_core_session_t *session); static switch_status_t conference_outcall(conference_obj_t * conference, char *conference_name, switch_core_session_t *session, @@ -581,7 +582,7 @@ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", EC++); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "unique-id", "%s", conference->name); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_RING"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_ROUTING"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "answer-state", "%s", conference->count == 1 ? "early" : "confirmed"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "call-direction", "%s", conference->count == 1 ? "outbound" : "inbound"); switch_event_fire(&event); @@ -723,7 +724,7 @@ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", EC++); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "unique-id", "%s", conference->name); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_RING"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_ROUTING"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "answer-state", "%s", conference->count == 1 ? "early" : "confirmed"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "call-direction", "%s", conference->count == 1 ? "outbound" : "inbound"); switch_event_fire(&event); @@ -783,7 +784,7 @@ } if (switch_channel_test_flag(switch_core_session_get_channel(conference->floor_holder->session), CF_VIDEO)) { - status = switch_core_session_read_video_frame(conference->floor_holder->session, &vid_frame, -1, 0); + status = switch_core_session_read_video_frame(conference->floor_holder->session, &vid_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { conference->floor_holder = NULL; @@ -835,7 +836,7 @@ for (imember = conference->members; imember; imember = imember->next) { if (switch_channel_test_flag(switch_core_session_get_channel(imember->session), CF_VIDEO)) { has_vid++; - switch_core_session_write_video_frame(imember->session, vid_frame, -1, 0); + switch_core_session_write_video_frame(imember->session, vid_frame, SWITCH_IO_FLAG_NONE, 0); } } switch_mutex_unlock(conference->member_mutex); @@ -1497,7 +1498,7 @@ while (switch_test_flag(member, MFLAG_RUNNING) && switch_channel_ready(channel)) { /* Read a frame. */ - status = switch_core_session_read_frame(member->session, &read_frame, -1, 0); + status = switch_core_session_read_frame(member->session, &read_frame, SWITCH_IO_FLAG_NONE, 0); /* end the loop, if appropriate */ if (!SWITCH_READ_ACCEPTABLE(status) || !switch_test_flag(member, MFLAG_RUNNING)) { @@ -1890,7 +1891,7 @@ switch_change_sln_volume(write_frame.data, write_frame.samples, member->volume_out_level); } write_frame.timestamp = timer.samplecount; - switch_core_session_write_frame(member->session, &write_frame, -1, 0); + switch_core_session_write_frame(member->session, &write_frame, SWITCH_IO_FLAG_NONE, 0); switch_core_timer_next(&timer); @@ -1933,7 +1934,7 @@ switch_change_sln_volume(write_frame.data, write_frame.samples, member->volume_out_level); } write_frame.timestamp = timer.samplecount; - switch_core_session_write_frame(member->session, &write_frame, -1, 0); + switch_core_session_write_frame(member->session, &write_frame, SWITCH_IO_FLAG_NONE, 0); } } @@ -1948,7 +1949,7 @@ write_frame.datalen = bytes; write_frame.samples = samples; write_frame.timestamp = timer.samplecount; - switch_core_session_write_frame(member->session, &write_frame, -1, 0); + switch_core_session_write_frame(member->session, &write_frame, SWITCH_IO_FLAG_NONE, 0); } } } @@ -3726,27 +3727,27 @@ } /* outbound call bridge progress call state callback handler */ -static switch_status_t audio_bridge_on_ring(switch_core_session_t *session) +static switch_status_t audio_bridge_on_routing(switch_core_session_t *session) { switch_channel_t *channel = NULL; channel = switch_core_session_get_channel(session); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CUSTOM RING\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CUSTOM ROUTING\n"); /* put the channel in a passive state so we can loop audio to it */ - switch_channel_set_state(channel, CS_TRANSMIT); + switch_channel_set_state(channel, CS_SOFT_EXECUTE); return SWITCH_STATUS_FALSE; } static switch_state_handler_table_t audio_bridge_peer_state_handlers = { /*.on_init */ NULL, - /*.on_ring */ audio_bridge_on_ring, + /*.on_routing */ audio_bridge_on_routing, /*.on_execute */ NULL, /*.on_hangup */ NULL, - /*.on_loopback */ NULL, - /*.on_transmit */ NULL, - /*.on_hold */ NULL, + /*.on_exchange_media */ NULL, + /*.on_soft_execute */ NULL, + /*.on_consume_media */ NULL, }; @@ -3961,7 +3962,7 @@ /* generate some space infront of the file to be played */ for (x = 0; x < leadin; x++) { switch_frame_t *read_frame; - status = switch_core_session_read_frame(session, &read_frame, 1000, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -4195,6 +4196,14 @@ profile_name = "default"; } +#if 0 + if (0) { + member.dtmf_parser = conference->dtmf_parser; + } else { + + } +#endif + switch_event_create(¶ms, SWITCH_EVENT_MESSAGE); switch_assert(params); switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "conf_name", conf_name); @@ -4514,6 +4523,9 @@ switch_buffer_destroy(&member.resample_buffer); switch_buffer_destroy(&member.audio_buffer); switch_buffer_destroy(&member.mux_buffer); + if (conference && member.dtmf_parser != conference->dtmf_parser) { + switch_ivr_digit_stream_parser_destroy(member.dtmf_parser); + } if (conference) { switch_mutex_lock(conference->mutex); @@ -5124,7 +5136,7 @@ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", EC++); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "unique-id", "%s", conf_name); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_RING"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_ROUTING"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "answer-state", "%s", conference->count == 1 ? "early" : "confirmed"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "call-direction", "%s", conference->count == 1 ? "outbound" : "inbound"); switch_event_fire(&event); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_dptools/mod_dptools.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_dptools/mod_dptools.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_dptools/mod_dptools.c Tue May 13 23:37:33 2008 @@ -128,6 +128,23 @@ } } + +#define SAY_SYNTAX "<module_name> <say_type> <say_method> <text>" +SWITCH_STANDARD_APP(say_function) +{ + char *argv[4] = { 0 }; + int argc; + char *lbuf = NULL; + + if (!switch_strlen_zero(data) && (lbuf = switch_core_session_strdup(session, data)) + && (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) == 4) { + switch_ivr_say(session, argv[3], argv[0], argv[1], argv[2], NULL); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Usage: %s\n", SAY_SYNTAX); + } + +} + #define SOFT_HOLD_SYNTAX "<unhold key> [<moh_a>] [<moh_b>]" SWITCH_STANDARD_APP(soft_hold_function) { @@ -1341,7 +1358,7 @@ switch_channel_state_t state = switch_channel_get_state(channel); const char *id = NULL; - if (state == CS_HANGUP || state == CS_RING) { + if (state == CS_HANGUP || state == CS_ROUTING) { if ((id = switch_channel_get_variable(channel, "xfer_uuids"))) { switch_stream_handle_t stream = { 0 }; SWITCH_STANDARD_STREAM(stream); @@ -1671,8 +1688,13 @@ && !switch_channel_test_flag(caller_channel, CF_EARLY_MEDIA)) { switch_channel_set_flag(caller_channel, CF_PROXY_MODE); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Channel is already up, delaying proxy mode 'till both legs are up.\n"); - no_media_bridge = 1; + if (switch_channel_test_flag(caller_channel, CF_PROXY_MODE)) { + switch_ivr_media(switch_core_session_get_uuid(session), SMF_REBRIDGE); + switch_channel_set_flag(caller_channel, CF_PROXY_MODE); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Channel is already up, delaying proxy mode 'till both legs are up.\n"); + no_media_bridge = 1; + } } } @@ -1703,7 +1725,7 @@ } } - if (!switch_channel_test_flag(caller_channel, CF_TRANSFER) && switch_channel_get_state(caller_channel) != CS_RING) { + if (!switch_channel_test_flag(caller_channel, CF_TRANSFER) && switch_channel_get_state(caller_channel) != CS_ROUTING) { switch_channel_hangup(caller_channel, cause); } return; @@ -1714,11 +1736,11 @@ /* SIP won't let us redir media until the call has been answered #$^#%& so we will proxy any early media until they do */ while (switch_channel_ready(caller_channel) && switch_channel_ready(peer_channel) && !switch_channel_test_flag(peer_channel, CF_ANSWERED)) { - switch_status_t status = switch_core_session_read_frame(peer_session, &read_frame, -1, 0); + switch_status_t status = switch_core_session_read_frame(peer_session, &read_frame, SWITCH_IO_FLAG_NONE, 0); uint8_t bad = 1; if (SWITCH_READ_ACCEPTABLE(status) - && switch_core_session_write_frame(session, read_frame, -1, 0) == SWITCH_STATUS_SUCCESS) { + && switch_core_session_write_frame(session, read_frame, SWITCH_IO_FLAG_NONE, 0) == SWITCH_STATUS_SUCCESS) { bad = 0; } if (bad) { @@ -2007,6 +2029,7 @@ SWITCH_ADD_APP(app_interface, "clear_speech_cache", "Clear Speech Handle Cache", "Clear Speech Handle Cache", clear_speech_cache_function, "", SAF_NONE); SWITCH_ADD_APP(app_interface, "bridge", "Bridge Audio", "Bridge the audio between two sessions", audio_bridge_function, "<channel_url>", SAF_SUPPORT_NOMEDIA); SWITCH_ADD_APP(app_interface, "system", "Execute a system command", "Execute a system command", system_session_function, "<command>", SAF_SUPPORT_NOMEDIA); + SWITCH_ADD_APP(app_interface, "say", "say", "say", say_function, SAY_SYNTAX, SAF_NONE); SWITCH_ADD_DIALPLAN(dp_interface, "inline", inline_dialplan_hunt); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_esf/mod_esf.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_esf/mod_esf.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_esf/mod_esf.c Tue May 13 23:37:33 2008 @@ -130,7 +130,7 @@ while(!ready) { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (read_frame && switch_test_flag(read_frame, SFF_CNG)) { continue; } @@ -206,7 +206,7 @@ for(;;) { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_fifo/mod_fifo.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_fifo/mod_fifo.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_fifo/mod_fifo.c Tue May 13 23:37:33 2008 @@ -294,7 +294,7 @@ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "alt_event_type", "dialog"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "event_count", "%d", 0); - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", wait_count > 0 ? "CS_RING" : "CS_HANGUP"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", wait_count > 0 ? "CS_ROUTING" : "CS_HANGUP"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "unique-id", "%s", node->name); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "answer-state", "%s", wait_count > 0 ? "early" : "terminated"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "call-direction", "%s", "inbound"); @@ -452,7 +452,7 @@ if (!consumer && node) { switch_core_session_t *other_session; switch_channel_t *other_channel; - const char *uuid = strdup(switch_core_session_get_uuid(session)); + const char *uuid = switch_core_session_get_uuid(session); const char *pri; char tmp[25] = ""; int p = 0; @@ -510,7 +510,7 @@ node->start_waiting = switch_timestamp_now(); } - switch_queue_push(node->fifo_list[p], (void *)uuid); + switch_queue_push(node->fifo_list[p], (void *)strdup(uuid)); if (!pri) { switch_snprintf(tmp, sizeof(tmp), "%d", p); @@ -804,7 +804,7 @@ break; } - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -854,7 +854,7 @@ switch_channel_set_flag(other_channel, CF_BREAK); while (switch_channel_ready(channel) && switch_channel_ready(other_channel) && switch_channel_test_flag(other_channel, CF_TAGGED)) { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_fsv/mod_fsv.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_fsv/mod_fsv.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_fsv/mod_fsv.c Tue May 13 23:37:33 2008 @@ -64,7 +64,7 @@ eh->up = 1; while(switch_channel_ready(channel)) { - status = switch_core_session_read_video_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_video_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -90,7 +90,7 @@ switch_mutex_unlock(eh->mutex); - switch_core_session_write_video_frame(session, read_frame, -1, 0); + switch_core_session_write_video_frame(session, read_frame, SWITCH_IO_FLAG_NONE, 0); } eh->up = 0; return NULL; @@ -165,7 +165,7 @@ while(switch_channel_ready(channel)) { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -315,7 +315,7 @@ hdr->pt = pt; } if (switch_channel_test_flag(channel, CF_VIDEO)) { - switch_core_session_write_video_frame(session, &vid_frame, -1, 0); + switch_core_session_write_video_frame(session, &vid_frame, SWITCH_IO_FLAG_NONE, 0); } if (ts && last && last != ts) { switch_yield(1000); @@ -328,7 +328,7 @@ if ((write_frame.datalen = read(fd, write_frame.data, bytes)) <= 0) { break; } - switch_core_session_write_frame(session, &write_frame, -1, 0); + switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0); switch_core_timer_next(&timer); } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_limit/mod_limit.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_limit/mod_limit.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_limit/mod_limit.c Tue May 13 23:37:33 2008 @@ -281,7 +281,7 @@ const char *id = NULL; char *sql = NULL; - if (state == CS_HANGUP || state == CS_RING) { + if (state == CS_HANGUP || state == CS_ROUTING) { id = switch_channel_get_variable(channel, "limit_id"); realm = switch_channel_get_variable(channel, "limit_realm"); sql = switch_mprintf("delete from limit_data where uuid='%q' and hostname='%q' and realm='%q'and id='%q';", Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_rss/mod_rss.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_rss/mod_rss.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_rss/mod_rss.c Tue May 13 23:37:33 2008 @@ -171,7 +171,6 @@ switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_NONE; switch_core_thread_session_t thread_session; uint32_t rate, interval = 20; - int stream_id = 0; switch_timer_t timer = { 0 }, *timerp = NULL; uint32_t last; char *mydata = NULL; @@ -292,9 +291,7 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "setup timer success %u bytes per %d ms!\n", (rate / 50) * 2, interval); /* start a thread to absorb incoming audio */ - for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) { - switch_core_service_session(session, &thread_session, stream_id); - } + switch_core_service_session(session, &thread_session, 0); timerp = &timer; } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_voicemail/mod_voicemail.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_voicemail/mod_voicemail.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/applications/mod_voicemail/mod_voicemail.c Tue May 13 23:37:33 2008 @@ -2156,7 +2156,7 @@ static void message_query_handler(switch_event_t *event) { char *account = switch_event_get_header(event, "message-account"); - int sent = 0; + int created = 0; switch_event_t *new_event = NULL; if (account) { @@ -2194,8 +2194,7 @@ switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Message-Account", account); switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Voice-Message", "%d/%d (%d/%d)", total_new_messages, total_saved_messages, total_new_urgent_messages, total_saved_urgent_messages); - switch_event_fire(&new_event); - sent++; + created++; } } } @@ -2205,13 +2204,26 @@ } - if (!sent) { + if (!created) { if (switch_event_create(&new_event, SWITCH_EVENT_MESSAGE_WAITING) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Messages-Waiting", "no"); switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, "MWI-Message-Account", account); - switch_event_fire(&new_event); } } + + if (new_event) { + switch_event_header_t *hp; + + for (hp = event->headers; hp; hp = hp->next) { + if (!strncasecmp(hp->name, "vm-", 3)) { + switch_event_add_header(new_event, SWITCH_STACK_BOTTOM, hp->name + 3, hp->value); + } + } + + switch_event_fire(&new_event); + } + + } #define VOICEMAIL_SYNTAX "rss [<host> <port> <uri> <user> <domain>]" Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_alsa/mod_alsa.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_alsa/mod_alsa.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_alsa/mod_alsa.c Tue May 13 23:37:33 2008 @@ -143,14 +143,14 @@ static void remove_pvt(private_t * tech_pvt); static switch_status_t channel_on_init(switch_core_session_t *session); static switch_status_t channel_on_hangup(switch_core_session_t *session); -static switch_status_t channel_on_ring(switch_core_session_t *session); -static switch_status_t channel_on_loopback(switch_core_session_t *session); -static switch_status_t channel_on_transmit(switch_core_session_t *session); +static switch_status_t channel_on_routing(switch_core_session_t *session); +static switch_status_t channel_on_exchange_media(switch_core_session_t *session); +static switch_status_t channel_on_soft_execute(switch_core_session_t *session); static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); static switch_status_t engage_device(unsigned int samplerate, int codec_ms); static switch_status_t load_config(void); @@ -293,14 +293,14 @@ switch_set_flag_locked(tech_pvt, TFLAG_IO); - /* Move Channel's State Machine to RING */ - switch_channel_set_state(channel, CS_RING); + /* Move channel's state machine to ROUTING */ + switch_channel_set_state(channel, CS_ROUTING); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_ring(switch_core_session_t *session) +static switch_status_t channel_on_routing(switch_core_session_t *session) { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; @@ -311,7 +311,7 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL RING\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", switch_channel_get_name(channel)); return SWITCH_STATUS_SUCCESS; } @@ -478,13 +478,13 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_transmit(switch_core_session_t *session) +static switch_status_t channel_on_soft_execute(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_loopback(switch_core_session_t *session) +static switch_status_t channel_on_exchange_media(switch_core_session_t *session) { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; @@ -501,27 +501,6 @@ } -static switch_status_t channel_waitfor_read(switch_core_session_t *session, int ms, int stream_id) -{ - private_t *tech_pvt = NULL; - - tech_pvt = switch_core_session_get_private(session); - assert(tech_pvt != NULL); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_waitfor_write(switch_core_session_t *session, int ms, int stream_id) -{ - private_t *tech_pvt = NULL; - - tech_pvt = switch_core_session_get_private(session); - assert(tech_pvt != NULL); - - return SWITCH_STATUS_SUCCESS; - -} - static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) { private_t *tech_pvt = NULL; @@ -534,7 +513,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; @@ -584,7 +563,7 @@ globals.read_codec.implementation->number_of_channels, globals.read_codec.implementation->actual_samples_per_second, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, - switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { + NULL) != SWITCH_STATUS_SUCCESS) { switch_core_codec_destroy(&tech_pvt->write_codec); tech_pvt->hold_file = NULL; goto cng; @@ -652,7 +631,7 @@ return status; } -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; @@ -737,11 +716,11 @@ static switch_state_handler_table_t channel_event_handlers = { /*.on_init */ channel_on_init, - /*.on_ring */ channel_on_ring, + /*.on_routing */ channel_on_routing, /*.on_execute */ channel_on_execute, /*.on_hangup */ channel_on_hangup, - /*.on_loopback */ channel_on_loopback, - /*.on_transmit */ channel_on_transmit + /*.on_exchange_media */ channel_on_exchange_media, + /*.on_soft_execute */ channel_on_soft_execute }; static switch_io_routines_t channel_io_routines = { @@ -749,8 +728,6 @@ /*.read_frame */ channel_read_frame, /*.write_frame */ channel_write_frame, /*.kill_channel */ channel_kill_channel, - /*.waitfor_read */ channel_waitfor_read, - /*.waitfor_write */ channel_waitfor_write, /*.send_dtmf */ channel_send_dtmf, /*.receive_message */ channel_receive_message }; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_dingaling/mod_dingaling.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_dingaling/mod_dingaling.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_dingaling/mod_dingaling.c Tue May 13 23:37:33 2008 @@ -205,14 +205,14 @@ SWITCH_STANDARD_API(dl_debug); static switch_status_t channel_on_init(switch_core_session_t *session); static switch_status_t channel_on_hangup(switch_core_session_t *session); -static switch_status_t channel_on_ring(switch_core_session_t *session); -static switch_status_t channel_on_loopback(switch_core_session_t *session); -static switch_status_t channel_on_transmit(switch_core_session_t *session); +static switch_status_t channel_on_routing(switch_core_session_t *session); +static switch_status_t channel_on_exchange_media(switch_core_session_t *session); +static switch_status_t channel_on_soft_execute(switch_core_session_t *session); static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); static ldl_status handle_signalling(ldl_handle_t * handle, ldl_session_t * dlsession, ldl_signal_t dl_signal, @@ -1165,14 +1165,14 @@ switch_set_flag(tech_pvt, TFLAG_READY); if (negotiate_media(session) == SWITCH_STATUS_SUCCESS) { - /* Move Channel's State Machine to RING */ - switch_channel_set_state(channel, CS_RING); + /* Move channel's state machine to ROUTING */ + switch_channel_set_state(channel, CS_ROUTING); } return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_ring(switch_core_session_t *session) +static switch_status_t channel_on_routing(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); struct private_object *tech_pvt = NULL; @@ -1180,7 +1180,7 @@ tech_pvt = switch_core_session_get_private(session); switch_assert(tech_pvt != NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL RING\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", switch_channel_get_name(channel)); return SWITCH_STATUS_SUCCESS; } @@ -1294,38 +1294,18 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_loopback(switch_core_session_t *session) +static switch_status_t channel_on_exchange_media(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL LOOPBACK\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_transmit(switch_core_session_t *session) +static switch_status_t channel_on_soft_execute(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_waitfor_read(switch_core_session_t *session, int ms, int stream_id) -{ - struct private_object *tech_pvt = NULL; - - tech_pvt = switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_waitfor_write(switch_core_session_t *session, int ms, int stream_id) -{ - struct private_object *tech_pvt = NULL; - - tech_pvt = switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - return SWITCH_STATUS_SUCCESS; - -} static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) { @@ -1340,7 +1320,7 @@ } -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { struct private_object *tech_pvt = NULL; switch_channel_t *channel = switch_core_session_get_channel(session); @@ -1381,7 +1361,7 @@ while (switch_test_flag(tech_pvt, TFLAG_IO) && tech_pvt->read_frame.datalen == 0) { tech_pvt->read_frame.flags = SFF_NONE; - status = switch_rtp_zerocopy_read_frame(tech_pvt->rtp_session, &tech_pvt->read_frame); + status = switch_rtp_zerocopy_read_frame(tech_pvt->rtp_session, &tech_pvt->read_frame, flags); if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { return SWITCH_STATUS_FALSE; } @@ -1438,7 +1418,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { struct private_object *tech_pvt; switch_channel_t *channel = switch_core_session_get_channel(session); @@ -1564,11 +1544,11 @@ switch_state_handler_table_t dingaling_event_handlers = { /*.on_init */ channel_on_init, - /*.on_ring */ channel_on_ring, + /*.on_routing */ channel_on_routing, /*.on_execute */ channel_on_execute, /*.on_hangup */ channel_on_hangup, - /*.on_loopback */ channel_on_loopback, - /*.on_transmit */ channel_on_transmit + /*.on_exchange_media */ channel_on_exchange_media, + /*.on_soft_execute */ channel_on_soft_execute }; switch_io_routines_t dingaling_io_routines = { @@ -1576,8 +1556,6 @@ /*.read_frame */ channel_read_frame, /*.write_frame */ channel_write_frame, /*.kill_channel */ channel_kill_channel, - /*.waitfor_read */ channel_waitfor_read, - /*.waitfor_write */ channel_waitfor_write, /*.send_dtmf */ channel_send_dtmf, /*.receive_message */ channel_receive_message, /*.receive_event */ channel_receive_event Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/Makefile ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/Makefile (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/Makefile Tue May 13 23:37:33 2008 @@ -1,3 +1,5 @@ -LOCAL_CFLAGS=$(libiax_CFLAGS) -LOCAL_LDFLAGS=$(libiax_LIBS) +BASE=../../../.. +LOCAL_CFLAGS=-I. -DNEWJB -DLIBIAX -DDEBUG_SUPPORT +LOCAL_OBJS=iax2-parser.o iax.o md5.o jitterbuf.o iax-mutex.o + include $(BASE)/build/modmake.rules Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.2008.vcproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.2008.vcproj (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.2008.vcproj Tue May 13 23:37:33 2008 @@ -40,10 +40,10 @@ <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories=""$(InputDir)..\..\..\..\libs\iax\src"" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS" + AdditionalIncludeDirectories="." + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;WIN32_TIME_GET_TIME;LIBIAX;NEWJB;_CRT_SECURE_NO_DEPRECATE;DEBUG_SUPPORT" UsePrecompiledHeader="0" - DisableSpecificWarnings="4201" + DisableSpecificWarnings="4201;4200;4100;4127;6246;6053;6031;6262;4706" /> <Tool Name="VCManagedResourceCompilerTool" @@ -105,9 +105,10 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories=""$(InputDir)..\..\..\..\libs\iax\src"" + AdditionalIncludeDirectories="." + PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;MOD_EXPORTS;LIBIAX;WIN32_TIME_GET_TIME;DEBUG_SUPPORT;NEWJB;_CRT_SECURE_NO_DEPRECATE" UsePrecompiledHeader="0" - DisableSpecificWarnings="4201" + DisableSpecificWarnings="4201;4200;4100;4127;6246;6053;6031;6262;4706" /> <Tool Name="VCManagedResourceCompilerTool" @@ -151,6 +152,26 @@ </References> <Files> <File + RelativePath=".\iax-mutex.c" + > + </File> + <File + RelativePath=".\iax.c" + > + </File> + <File + RelativePath=".\iax2-parser.c" + > + </File> + <File + RelativePath=".\jitterbuf.c" + > + </File> + <File + RelativePath=".\md5.c" + > + </File> + <File RelativePath=".\mod_iax.c" > </File> Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.c Tue May 13 23:37:33 2008 @@ -416,14 +416,14 @@ static switch_status_t channel_on_init(switch_core_session_t *session); static switch_status_t channel_on_hangup(switch_core_session_t *session); -static switch_status_t channel_on_ring(switch_core_session_t *session); -static switch_status_t channel_on_loopback(switch_core_session_t *session); -static switch_status_t channel_on_transmit(switch_core_session_t *session); +static switch_status_t channel_on_routing(switch_core_session_t *session); +static switch_status_t channel_on_exchange_media(switch_core_session_t *session); +static switch_status_t channel_on_soft_execute(switch_core_session_t *session); static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); @@ -467,8 +467,8 @@ switch_set_flag_locked(tech_pvt, TFLAG_IO); - /* Move Channel's State Machine to RING */ - switch_channel_set_state(switch_core_session_get_channel(session), CS_RING); + /* Move channel's state machine to ROUTING */ + switch_channel_set_state(switch_core_session_get_channel(session), CS_ROUTING); switch_mutex_lock(globals.mutex); globals.calls++; switch_mutex_unlock(globals.mutex); @@ -476,9 +476,9 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_ring(switch_core_session_t *session) +static switch_status_t channel_on_routing(switch_core_session_t *session) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL RING\n", switch_channel_get_name(switch_core_session_get_channel(session))); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", switch_channel_get_name(switch_core_session_get_channel(session))); return SWITCH_STATUS_SUCCESS; } @@ -545,32 +545,18 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_loopback(switch_core_session_t *session) +static switch_status_t channel_on_exchange_media(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL LOOPBACK\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_transmit(switch_core_session_t *session) +static switch_status_t channel_on_soft_execute(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_waitfor_read(switch_core_session_t *session, int ms, int stream_id) -{ - assert(switch_core_session_get_private(session)); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_waitfor_write(switch_core_session_t *session, int ms, int stream_id) -{ - assert(switch_core_session_get_private(session)); - - return SWITCH_STATUS_SUCCESS; -} - static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) { private_t *tech_pvt = switch_core_session_get_private(session); @@ -584,11 +570,9 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { private_t *tech_pvt = switch_core_session_get_private(session); - switch_time_t started = switch_timestamp_now(); - unsigned int elapsed; switch_byte_t *data; switch_assert(tech_pvt != NULL); @@ -630,12 +614,6 @@ return SWITCH_STATUS_SUCCESS; } - if (timeout > -1) { - elapsed = (unsigned int) ((switch_timestamp_now() - started) / 1000); - if (elapsed >= (unsigned int) timeout) { - return SWITCH_STATUS_SUCCESS; - } - } switch_yield(1000); } @@ -651,7 +629,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { private_t *tech_pvt = switch_core_session_get_private(session); switch_assert(tech_pvt != NULL); @@ -800,11 +778,11 @@ switch_state_handler_table_t iax_state_handlers = { /*.on_init */ channel_on_init, - /*.on_ring */ channel_on_ring, + /*.on_routing */ channel_on_routing, /*.on_execute */ channel_on_execute, /*.on_hangup */ channel_on_hangup, - /*.on_loopback */ channel_on_loopback, - /*.on_transmit */ channel_on_transmit + /*.on_exchange_media */ channel_on_exchange_media, + /*.on_soft_execute */ channel_on_soft_execute }; switch_io_routines_t iax_io_routines = { @@ -812,8 +790,6 @@ /*.read_frame */ channel_read_frame, /*.write_frame */ channel_write_frame, /*.kill_channel */ channel_kill_channel, - /*.waitfor_read */ channel_waitfor_read, - /*.waitfor_write */ channel_waitfor_write, /*.send_dtmf */ channel_send_dtmf, /*.receive_message*/ channel_receive_message, /*.receive_event */ channel_receive_event Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.vcproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.vcproj (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_iax/mod_iax.vcproj Tue May 13 23:37:33 2008 @@ -6,6 +6,7 @@ ProjectGUID="{3A5B9131-F20C-4A85-9447-6C1610941CEE}" RootNamespace="mod_iax" Keyword="Win32Proj" + TargetFrameworkVersion="131072" > <Platforms> <Platform @@ -22,16 +23,63 @@ CharacterSet="2" > <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool Name="VCCLCompilerTool" Optimization="0" - AdditionalIncludeDirectories=""$(InputDir)..\..\..\..\libs\iax\src"" - PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS" + AdditionalIncludeDirectories="." + PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;WIN32_TIME_GET_TIME;LIBIAX;NEWJB;_CRT_SECURE_NO_DEPRECATE;DEBUG_SUPPORT" UsePrecompiledHeader="0" - DisableSpecificWarnings="4201" + DisableSpecificWarnings="4201;4200;4100;4127;6246;6053;6031;6262;4706" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" /> <Tool Name="VCLinkerTool" AdditionalLibraryDirectories=""..\..\..\..\libs\iax\$(OutDir)"" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" /> </Configuration> <Configuration @@ -41,14 +89,62 @@ CharacterSet="2" > <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories=""$(InputDir)..\..\..\..\libs\iax\src"" + AdditionalIncludeDirectories="." + PreprocessorDefinitions="WIN32;_WINDOWS;_USRDLL;MOD_EXPORTS;LIBIAX;WIN32_TIME_GET_TIME;DEBUG_SUPPORT;NEWJB;_CRT_SECURE_NO_DEPRECATE" UsePrecompiledHeader="0" - DisableSpecificWarnings="4201" + DisableSpecificWarnings="4201;4200;4100;4127;6246;6053;6031;6262;4706" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + /> + <Tool + Name="VCPreLinkEventTool" /> <Tool Name="VCLinkerTool" AdditionalLibraryDirectories=""..\..\..\..\libs\iax\$(OutDir)"" + RandomizedBaseAddress="1" + DataExecutionPrevention="0" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCPostBuildEventTool" /> </Configuration> </Configurations> @@ -56,6 +152,26 @@ </References> <Files> <File + RelativePath=".\iax-mutex.c" + > + </File> + <File + RelativePath=".\iax.c" + > + </File> + <File + RelativePath=".\iax2-parser.c" + > + </File> + <File + RelativePath=".\jitterbuf.c" + > + </File> + <File + RelativePath=".\md5.c" + > + </File> + <File RelativePath=".\mod_iax.c" > </File> Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/mod_portaudio.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/mod_portaudio.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/mod_portaudio.c Tue May 13 23:37:33 2008 @@ -140,14 +140,14 @@ static void remove_pvt(private_t * tech_pvt); static switch_status_t channel_on_init(switch_core_session_t *session); static switch_status_t channel_on_hangup(switch_core_session_t *session); -static switch_status_t channel_on_ring(switch_core_session_t *session); -static switch_status_t channel_on_loopback(switch_core_session_t *session); -static switch_status_t channel_on_transmit(switch_core_session_t *session); +static switch_status_t channel_on_routing(switch_core_session_t *session); +static switch_status_t channel_on_exchange_media(switch_core_session_t *session); +static switch_status_t channel_on_soft_execute(switch_core_session_t *session); static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); static switch_status_t engage_device(int samplerate, int codec_ms); static switch_status_t engage_ring_device(int sample_rate, int channels); @@ -283,15 +283,15 @@ switch_set_flag_locked(tech_pvt, TFLAG_IO); - /* Move Channel's State Machine to RING */ - switch_channel_set_state(channel, CS_RING); + /* Move channel's state machine to ROUTING */ + switch_channel_set_state(channel, CS_ROUTING); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_ring(switch_core_session_t *session) +static switch_status_t channel_on_routing(switch_core_session_t *session) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL RING\n", switch_channel_get_name(switch_core_session_get_channel(session))); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", switch_channel_get_name(switch_core_session_get_channel(session))); return SWITCH_STATUS_SUCCESS; } @@ -435,29 +435,19 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_transmit(switch_core_session_t *session) +static switch_status_t channel_on_soft_execute(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_loopback(switch_core_session_t *session) +static switch_status_t channel_on_exchange_media(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL LOOPBACK\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_waitfor_read(switch_core_session_t *session, int ms, int stream_id) -{ - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_waitfor_write(switch_core_session_t *session, int ms, int stream_id) -{ - return SWITCH_STATUS_SUCCESS; -} - static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) { private_t *tech_pvt = switch_core_session_get_private(session); @@ -468,7 +458,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { private_t *tech_pvt = switch_core_session_get_private(session); int samples = 0; @@ -496,7 +486,7 @@ globals.read_codec.implementation->number_of_channels, globals.read_codec.implementation->actual_samples_per_second, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, - switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { + NULL) != SWITCH_STATUS_SUCCESS) { tech_pvt->hold_file = NULL; goto cng; } @@ -552,7 +542,7 @@ globals.read_frame.datalen = samples * 2; globals.read_frame.samples = samples; - switch_core_timer_check(&globals.timer, SWITCH_TRUE); + //switch_core_timer_check(&globals.timer, SWITCH_TRUE); *frame = &globals.read_frame; if (!switch_test_flag((&globals), GFLAG_MOUTH)) { @@ -566,7 +556,7 @@ return status; } -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { switch_status_t status = SWITCH_STATUS_FALSE; private_t *tech_pvt = switch_core_session_get_private(session); @@ -622,11 +612,11 @@ switch_state_handler_table_t portaudio_event_handlers = { /*.on_init */ channel_on_init, - /*.on_ring */ channel_on_ring, + /*.on_routing */ channel_on_routing, /*.on_execute */ channel_on_execute, /*.on_hangup */ channel_on_hangup, - /*.on_loopback */ channel_on_loopback, - /*.on_transmit */ channel_on_transmit + /*.on_exchange_media */ channel_on_exchange_media, + /*.on_soft_execute */ channel_on_soft_execute }; switch_io_routines_t portaudio_io_routines = { @@ -634,8 +624,6 @@ /*.read_frame */ channel_read_frame, /*.write_frame */ channel_write_frame, /*.kill_channel */ channel_kill_channel, - /*.waitfor_read */ channel_waitfor_read, - /*.waitfor_write */ channel_waitfor_write, /*.send_dtmf */ channel_send_dtmf, /*.receive_message */ channel_receive_message }; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/pa_ringbuffer.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/pa_ringbuffer.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/pa_ringbuffer.c Tue May 13 23:37:33 2008 @@ -70,7 +70,7 @@ * PaUtil_WriteMemoryBarrier() * ****************/ - +#define __VIA_HACK__ #if defined(__VIA_HACK__) #define NO_BARRIER #endif Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/pablio.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/pablio.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_portaudio/pablio.c Tue May 13 23:37:33 2008 @@ -143,22 +143,37 @@ */ long ReadAudioStream(PABLIO_Stream * aStream, void *data, long numFrames, switch_timer_t *timer) { - long bytesRead; + long bytesRead = 0; char *p = (char *) data; - long numBytes = aStream->bytesPerFrame * numFrames; + long avail, totalBytes = 0, neededBytes = aStream->bytesPerFrame * numFrames; - while (numBytes > 0) { - bytesRead = PaUtil_ReadRingBuffer(&aStream->inFIFO, p, numBytes); - numBytes -= bytesRead; - if (numBytes > 0) { - if (switch_core_timer_check(timer, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) { - PaUtil_FlushRingBuffer(&aStream->inFIFO); - return 0; - } + for(;;) { + avail = PaUtil_GetRingBufferReadAvailable(&aStream->inFIFO); + + if (switch_core_timer_check(timer, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) { + break; + } + + if (avail >= neededBytes * 6) { + PaUtil_FlushRingBuffer(&aStream->inFIFO); + avail = 0; + } + + bytesRead = 0; + + if (totalBytes < neededBytes && avail >= neededBytes) { + bytesRead = PaUtil_ReadRingBuffer(&aStream->inFIFO, p, neededBytes); + totalBytes += bytesRead; + } + + if (bytesRead) { + p += bytesRead; + } else { switch_yield(1000); } } - return numFrames; + + return totalBytes / aStream->bytesPerFrame; } /************************************************************ Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_reference/mod_reference.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_reference/mod_reference.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_reference/mod_reference.c Tue May 13 23:37:33 2008 @@ -100,14 +100,14 @@ static switch_status_t channel_on_init(switch_core_session_t *session); static switch_status_t channel_on_hangup(switch_core_session_t *session); -static switch_status_t channel_on_ring(switch_core_session_t *session); -static switch_status_t channel_on_loopback(switch_core_session_t *session); -static switch_status_t channel_on_transmit(switch_core_session_t *session); +static switch_status_t channel_on_routing(switch_core_session_t *session); +static switch_status_t channel_on_exchange_media(switch_core_session_t *session); +static switch_status_t channel_on_soft_execute(switch_core_session_t *session); static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig); @@ -139,8 +139,11 @@ assert(channel != NULL); switch_set_flag_locked(tech_pvt, TFLAG_IO); - /* Move Channel's State Machine to RING */ - switch_channel_set_state(channel, CS_RING); + /* Move channel's state machine to ROUTING. This means the call is trying + to get from the initial start where the call because, to the point + where a destination has been identified. If the channel is simply + left in the initial state, nothing will happen. */ + switch_channel_set_state(channel, CS_ROUTING); switch_mutex_lock(globals.mutex); globals.calls++; switch_mutex_unlock(globals.mutex); @@ -148,7 +151,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_ring(switch_core_session_t *session) +static switch_status_t channel_on_routing(switch_core_session_t *session) { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; @@ -159,7 +162,7 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL RING\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", switch_channel_get_name(channel)); return SWITCH_STATUS_SUCCESS; } @@ -245,39 +248,18 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_loopback(switch_core_session_t *session) +static switch_status_t channel_on_exchange_media(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL LOOPBACK\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_on_transmit(switch_core_session_t *session) +static switch_status_t channel_on_soft_execute(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_waitfor_read(switch_core_session_t *session, int ms, int stream_id) -{ - private_t *tech_pvt = NULL; - - tech_pvt = switch_core_session_get_private(session); - assert(tech_pvt != NULL); - - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t channel_waitfor_write(switch_core_session_t *session, int ms, int stream_id) -{ - private_t *tech_pvt = NULL; - - tech_pvt = switch_core_session_get_private(session); - assert(tech_pvt != NULL); - - return SWITCH_STATUS_SUCCESS; - -} - static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) { private_t *tech_pvt = switch_core_session_get_private(session); @@ -286,7 +268,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; @@ -319,17 +301,14 @@ continue; } *frame = &tech_pvt->read_frame; - return SWITCH_STATUS_SUCCESS; - } - - if (timeout > -1) { - elapsed = (unsigned int) ((switch_time_now() - started) / 1000); - if (elapsed >= (unsigned int) timeout) { - return SWITCH_STATUS_SUCCESS; +#ifdef BIGENDIAN + if (switch_test_flag(tech_pvt, TFLAG_LINEAR)) { + switch_swap_linear((*frame)->data, (int) (*frame)->datalen / 2); } +#endif + return SWITCH_STATUS_SUCCESS; } - switch_yield(1000); } @@ -347,7 +326,7 @@ } -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { switch_channel_t *channel = NULL; private_t *tech_pvt = NULL; @@ -479,11 +458,11 @@ switch_state_handler_table_t reference_state_handlers = { /*.on_init */ channel_on_init, - /*.on_ring */ channel_on_ring, + /*.on_routing */ channel_on_routing, /*.on_execute */ channel_on_execute, /*.on_hangup */ channel_on_hangup, - /*.on_loopback */ channel_on_loopback, - /*.on_transmit */ channel_on_transmit + /*.on_exchange_media */ channel_on_exchange_media, + /*.on_soft_execute */ channel_on_soft_execute }; switch_io_routines_t reference_io_routines = { @@ -491,8 +470,6 @@ /*.read_frame */ channel_read_frame, /*.write_frame */ channel_write_frame, /*.kill_channel */ channel_kill_channel, - /*.waitfor_read */ channel_waitfor_read, - /*.waitfor_write */ channel_waitfor_write, /*.send_dtmf */ channel_send_dtmf, /*.receive_message*/ channel_receive_message, /*.receive_event */ channel_receive_event Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.c Tue May 13 23:37:33 2008 @@ -50,15 +50,15 @@ static switch_status_t sofia_on_init(switch_core_session_t *session); -static switch_status_t sofia_on_loopback(switch_core_session_t *session); -static switch_status_t sofia_on_transmit(switch_core_session_t *session); +static switch_status_t sofia_on_exchange_media(switch_core_session_t *session); +static switch_status_t sofia_on_soft_execute(switch_core_session_t *session); static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); -static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t sofia_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t sofia_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t sofia_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id); +static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t sofia_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); +static switch_status_t sofia_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t sofia_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static switch_status_t sofia_kill_channel(switch_core_session_t *session, int sig); /* BODY OF THE MODULE */ @@ -103,20 +103,20 @@ } } - /* Move Channel's State Machine to RING */ - switch_channel_set_state(channel, CS_RING); + /* Move channel's state machine to ROUTING */ + switch_channel_set_state(channel, CS_ROUTING); assert( switch_channel_get_state(channel) != CS_INIT); return SWITCH_STATUS_SUCCESS; } -static switch_status_t sofia_on_ring(switch_core_session_t *session) +static switch_status_t sofia_on_routing(switch_core_session_t *session) { private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session); switch_assert(tech_pvt != NULL); switch_clear_flag_locked(tech_pvt, TFLAG_SIP_HOLD); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s SOFIA RING\n", switch_channel_get_name(switch_core_session_get_channel(session))); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s SOFIA ROUTING\n", switch_channel_get_name(switch_core_session_get_channel(session))); return SWITCH_STATUS_SUCCESS; } @@ -226,9 +226,11 @@ if (!switch_strlen_zero(ps_cause) && !strncasecmp(ps_cause, "sip:", 4)) { int new_cause = atoi(ps_cause + 4); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Overriding SIP cause %d with %d from the other leg\n", - switch_channel_get_name(channel), sip_cause, new_cause); - sip_cause = new_cause; + if (new_cause) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s Overriding SIP cause %d with %d from the other leg\n", + switch_channel_get_name(channel), sip_cause, new_cause); + sip_cause = new_cause; + } } if (switch_test_flag(tech_pvt, TFLAG_SIP_HOLD) && cause != SWITCH_CAUSE_ATTENDED_TRANSFER) { @@ -316,13 +318,13 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t sofia_on_loopback(switch_core_session_t *session) +static switch_status_t sofia_on_exchange_media(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SOFIA LOOPBACK\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t sofia_on_transmit(switch_core_session_t *session) +static switch_status_t sofia_on_soft_execute(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SOFIA TRANSMIT\n"); return SWITCH_STATUS_SUCCESS; @@ -335,6 +337,8 @@ switch_status_t status; uint32_t session_timeout = tech_pvt->profile->session_timeout; const char *val; + const char *b_sdp = NULL; + int is_proxy = 0; if (switch_test_flag(tech_pvt, TFLAG_ANS) || switch_channel_test_flag(channel, CF_OUTBOUND)) { return SWITCH_STATUS_SUCCESS; @@ -342,11 +346,12 @@ switch_set_flag_locked(tech_pvt, TFLAG_ANS); - if (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { - const char *sdp = NULL; - if ((sdp = switch_channel_get_variable(channel, SWITCH_B_SDP_VARIABLE))) { - tech_pvt->local_sdp_str = switch_core_session_strdup(session, sdp); - } + b_sdp = switch_channel_get_variable(channel, SWITCH_B_SDP_VARIABLE); + is_proxy = (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)); + + if (b_sdp && is_proxy) { + tech_pvt->local_sdp_str = switch_core_session_strdup(session, b_sdp); + if (switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { sofia_glue_tech_patch_sdp(tech_pvt); if (sofia_glue_activate_rtp(tech_pvt, 0) != SWITCH_STATUS_SUCCESS) { @@ -354,12 +359,20 @@ } } } else { - if (switch_test_flag(tech_pvt, TFLAG_LATE_NEGOTIATION)) { + if ((is_proxy && !b_sdp) || switch_test_flag(tech_pvt, TFLAG_LATE_NEGOTIATION)) { switch_clear_flag_locked(tech_pvt, TFLAG_LATE_NEGOTIATION); + + if (is_proxy) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Disabling proxy mode due to call answer with no bridge\n"); + switch_channel_clear_flag(channel, CF_PROXY_MEDIA); + switch_channel_clear_flag(channel, CF_PROXY_MODE); + } + if (!switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) { const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE); tech_pvt->num_codecs = 0; sofia_glue_tech_prepare_codecs(tech_pvt); + if (sofia_glue_tech_media(tech_pvt, r_sdp) != SWITCH_STATUS_SUCCESS) { switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "CODEC NEGOTIATION ERROR"); //nua_respond(tech_pvt->nh, SIP_488_NOT_ACCEPTABLE, TAG_END()); @@ -407,7 +420,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t sofia_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t sofia_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session); switch_channel_t *channel = switch_core_session_get_channel(session); @@ -442,7 +455,7 @@ while (switch_test_flag(tech_pvt, TFLAG_IO) && tech_pvt->video_read_frame.datalen == 0) { tech_pvt->video_read_frame.flags = SFF_NONE; - status = switch_rtp_zerocopy_read_frame(tech_pvt->video_rtp_session, &tech_pvt->video_read_frame); + status = switch_rtp_zerocopy_read_frame(tech_pvt->video_rtp_session, &tech_pvt->video_read_frame, flags); if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { if (status == SWITCH_STATUS_TIMEOUT) { switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_MEDIA_TIMEOUT); @@ -468,7 +481,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t sofia_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t sofia_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { private_object_t *tech_pvt = (private_object_t *) switch_core_session_get_private(session); switch_channel_t *channel = switch_core_session_get_channel(session); @@ -503,7 +516,7 @@ return status; } -static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t sofia_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { private_object_t *tech_pvt = switch_core_session_get_private(session); switch_channel_t *channel = switch_core_session_get_channel(session); @@ -544,7 +557,7 @@ while (switch_test_flag(tech_pvt, TFLAG_IO) && tech_pvt->read_frame.datalen == 0) { tech_pvt->read_frame.flags = SFF_NONE; - status = switch_rtp_zerocopy_read_frame(tech_pvt->rtp_session, &tech_pvt->read_frame); + status = switch_rtp_zerocopy_read_frame(tech_pvt->rtp_session, &tech_pvt->read_frame, flags); if (status != SWITCH_STATUS_SUCCESS && status != SWITCH_STATUS_BREAK) { if (status == SWITCH_STATUS_TIMEOUT) { @@ -588,7 +601,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t sofia_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t sofia_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { private_object_t *tech_pvt = switch_core_session_get_private(session); switch_channel_t *channel = switch_core_session_get_channel(session); @@ -673,16 +686,6 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t sofia_waitfor_read(switch_core_session_t *session, int ms, int stream_id) -{ - return SWITCH_STATUS_SUCCESS; -} - -static switch_status_t sofia_waitfor_write(switch_core_session_t *session, int ms, int stream_id) -{ - return SWITCH_STATUS_SUCCESS; -} - static switch_status_t sofia_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) { private_object_t *tech_pvt; @@ -1114,7 +1117,7 @@ msg_nh = nua_handle(tech_pvt->profile->nua, NULL, SIPTAG_FROM_STR(tech_pvt->chat_from), NUTAG_URL(tech_pvt->chat_to), SIPTAG_TO_STR(tech_pvt->chat_to), SIPTAG_CONTACT_STR(tech_pvt->profile->url), TAG_END()); - + nua_handle_bind(msg_nh, &mod_sofia_globals.destroy_private); nua_message(msg_nh, SIPTAG_CONTENT_TYPE_STR("text/html"), SIPTAG_PAYLOAD_STR(body), TAG_END()); } @@ -1623,8 +1626,6 @@ /*.read_frame */ sofia_read_frame, /*.write_frame */ sofia_write_frame, /*.kill_channel */ sofia_kill_channel, - /*.waitfor_read */ sofia_waitfor_read, - /*.waitfor_read */ sofia_waitfor_write, /*.send_dtmf */ sofia_send_dtmf, /*.receive_message */ sofia_receive_message, /*.receive_event */ sofia_receive_event, @@ -1635,12 +1636,12 @@ switch_state_handler_table_t sofia_event_handlers = { /*.on_init */ sofia_on_init, - /*.on_ring */ sofia_on_ring, + /*.on_routing */ sofia_on_routing, /*.on_execute */ sofia_on_execute, /*.on_hangup */ sofia_on_hangup, - /*.on_loopback */ sofia_on_loopback, - /*.on_transmit */ sofia_on_transmit, - /*.on_hold */ NULL, + /*.on_exchange_media */ sofia_on_exchange_media, + /*.on_soft_execute */ sofia_on_soft_execute, + /*.on_consume_media */ NULL, /*.on_hibernate*/ sofia_on_hibernate, /*.on_reset*/ sofia_on_reset }; @@ -1899,6 +1900,7 @@ silence_frame.flags = SFF_CNG; memset(&mod_sofia_globals, 0, sizeof(mod_sofia_globals)); + mod_sofia_globals.destroy_private.destroy_nh = 1; mod_sofia_globals.pool = pool; switch_mutex_init(&mod_sofia_globals.mutex, SWITCH_MUTEX_NESTED, mod_sofia_globals.pool); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/mod_sofia.h Tue May 13 23:37:33 2008 @@ -100,6 +100,8 @@ char uuid[SWITCH_UUID_FORMATTED_LENGTH + 1]; sofia_gateway_t *gateway; char gateway_name[512]; + int destroy_nh; + int destroy_me; }; #define set_param(ptr,val) if (ptr) {free(ptr) ; ptr = NULL;} if (val) {ptr = strdup(val);} @@ -194,6 +196,8 @@ char guess_ip[80]; switch_queue_t *presence_queue; switch_queue_t *mwi_queue; + struct sofia_private destroy_private; + struct sofia_private keep_private; }; extern struct mod_sofia_globals mod_sofia_globals; @@ -307,7 +311,6 @@ switch_mutex_t *gateway_mutex; sofia_gateway_t *gateways; su_home_t *home; - switch_hash_t *sub_hash; switch_hash_t *chat_hash; switch_core_db_t *master_db; switch_thread_rwlock_t *rwlock; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia.c Tue May 13 23:37:33 2008 @@ -74,15 +74,12 @@ char const *phrase, nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, tagi_t tags[]) { - if (status >= 300 && sip) { - const char *call_id = sip->sip_call_id->i_id; + if (status >= 300 && sip && sip->sip_call_id) { char *sql; - switch_core_hash_delete(profile->sub_hash, call_id); - - sql = switch_mprintf("delete from sip_subscriptions where call_id='%q'", call_id); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "delete subscriptions for failed notify\n"); + sql = switch_mprintf("delete from sip_subscriptions where call_id='%q'", sip->sip_call_id->i_id); switch_assert(sql != NULL); sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); - nua_handle_destroy(nh); } } @@ -166,21 +163,6 @@ void sofia_handle_sip_r_message(int status, sofia_profile_t *profile, nua_handle_t *nh, sip_t const *sip) { - if (status == 503) { - const char *user = NULL, *host = NULL; - char *sql; - - if (sip->sip_to && sip->sip_to->a_url) { - user = sip->sip_to->a_url->url_user; - host = sip->sip_to->a_url->url_host; - - sql = switch_mprintf("delete from sip_registrations where sip_user='%q' and sip_host='%q'", user, host); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Deleting registration for %s@%s\n", user, host); - sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); - } - } - - nua_handle_destroy(nh); } void sofia_event_callback(nua_event_t event, @@ -199,7 +181,7 @@ switch_channel_t *channel = NULL; sofia_gateway_t *gateway = NULL; - if (sofia_private) { + if (sofia_private && sofia_private != &mod_sofia_globals.destroy_private && sofia_private != &mod_sofia_globals.keep_private) { if ((gateway = sofia_private->gateway)) { if (switch_thread_rwlock_tryrdlock(gateway->profile->rwlock) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Profile %s is locked\n", gateway->profile->name); @@ -361,6 +343,30 @@ done: + switch (event) { + case nua_i_subscribe: + break; + default: + if (nh && ((sofia_private && sofia_private->destroy_nh) || !nua_handle_magic(nh))) { + //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Destroy handle [%s]\n", nua_event_name(event)); + if (sofia_private) { + nua_handle_bind(nh, NULL); + } + nua_handle_destroy(nh); + nh = NULL; + } + break; + } + + if (sofia_private && sofia_private->destroy_me) { + if (nh) { + nua_handle_bind(nh, NULL); + } + sofia_private->destroy_me = 12; + free(sofia_private); + sofia_private = NULL; + } + if (gateway) { sofia_reg_release_gateway(gateway); } @@ -689,7 +695,6 @@ sofia_glue_del_profile(profile); switch_core_hash_destroy(&profile->chat_hash); - switch_core_hash_destroy(&profile->sub_hash); switch_thread_rwlock_unlock(profile->rwlock); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Write unlock %s\n", profile->name); @@ -1068,7 +1073,6 @@ profile->dbname = switch_core_strdup(profile->pool, url); switch_core_hash_init(&profile->chat_hash, profile->pool); - switch_core_hash_init(&profile->sub_hash, profile->pool); switch_thread_rwlock_create(&profile->rwlock, profile->pool); switch_mutex_init(&profile->flag_mutex, SWITCH_MUTEX_NESTED, profile->pool); profile->dtmf_duration = 100; @@ -1524,11 +1528,12 @@ if (sofia_private && !switch_strlen_zero(sofia_private->gateway_name)) { gateway = sofia_reg_find_gateway(sofia_private->gateway_name); + sofia_private->destroy_me = 1; } if (gateway) { if (status == 200 || status == 404) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "ping success %s\n", gateway->name); + //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "ping success %s\n", gateway->name); gateway->status = SOFIA_GATEWAY_UP; } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "ping failed %s\n", gateway->name); @@ -1540,8 +1545,6 @@ } gateway->ping = switch_timestamp(NULL) + gateway->ping_freq; sofia_reg_release_gateway(gateway); - nua_handle_bind(nh, NULL); - free(sofia_private); gateway->pinging = 0; } else if ((profile->pflags & PFLAG_UNREG_OPTIONS_FAIL) && status != 200 && sip && sip->sip_to) { char *sql; @@ -1558,7 +1561,6 @@ ); sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); } - nua_handle_destroy(nh); } @@ -2109,10 +2111,12 @@ } else { cause = sofia_glue_sip_cause_to_freeswitch(status); } - switch_snprintf(st, sizeof(st), "%d", status); - switch_channel_set_variable(channel, "sip_term_status", st); - switch_snprintf(st, sizeof(st), "sip:%d", status); - switch_channel_set_variable_partner(channel, SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE, st); + if (status) { + switch_snprintf(st, sizeof(st), "%d", status); + switch_channel_set_variable(channel, "sip_term_status", st); + switch_snprintf(st, sizeof(st), "sip:%d", status); + switch_channel_set_variable_partner(channel, SWITCH_PROTO_SPECIFIC_HANGUP_CAUSE_VARIABLE, st); + } switch_snprintf(st, sizeof(st), "%d", cause); switch_channel_set_variable(channel, "sip_term_cause", st); switch_channel_hangup(channel, cause); @@ -2122,14 +2126,14 @@ if (tech_pvt->sofia_private) { sofia_private = tech_pvt->sofia_private; tech_pvt->sofia_private = NULL; - free(sofia_private); + sofia_private->destroy_me = 1; } tech_pvt->nh = NULL; } else if (sofia_private) { - free(sofia_private); + sofia_private->destroy_me = 1; } if (nh) { @@ -2168,13 +2172,6 @@ goto done; } - if (switch_channel_test_flag(channel_a, CF_PROXY_MODE)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Transfer on bypass media not allowed.\n"); - nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), - NUTAG_SUBSTATE(nua_substate_terminated), SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden"), SIPTAG_EVENT_STR(etmp), TAG_END()); - goto done; - } - from = sip->sip_from; to = sip->sip_to; @@ -2200,6 +2197,15 @@ sip_replaces_t *replaces; nua_handle_t *bnh; char *rep; + + if (switch_channel_test_flag(channel_a, CF_PROXY_MODE)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Attended Transfer BYPASS MEDIA CALLS!\n"); + switch_channel_set_variable(channel_a, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "ATTENDED_TRANSFER_ERROR"); + nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + NUTAG_SUBSTATE(nua_substate_terminated), SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden"), SIPTAG_EVENT_STR(etmp), + TAG_END()); + goto done; + } if ((rep = strchr(refer_to->r_url->url_headers, '='))) { const char *br_a = NULL, *br_b = NULL; @@ -2220,6 +2226,7 @@ sofia_private_t *b_private = NULL; private_object_t *b_tech_pvt = NULL; switch_core_session_t *b_session = NULL; + switch_channel_set_variable(channel_a, SOFIA_REPLACES_HEADER, rep); if ((b_private = nua_handle_magic(bnh))) { @@ -2358,7 +2365,7 @@ &tsession, &cause, exten, timeout, &noop_state_handler, NULL, NULL, NULL, SOF_NONE); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot Create Outgoing Channel! [%s]\n", exten); - nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("message/sipfrag"), + nua_notify(tech_pvt->nh, NUTAG_NEWSUB(1), SIPTAG_CONTENT_TYPE_STR("messsage/sipfrag"), NUTAG_SUBSTATE(nua_substate_terminated), SIPTAG_PAYLOAD_STR("SIP/2.0 403 Forbidden"), SIPTAG_EVENT_STR(etmp), TAG_END()); @@ -2415,6 +2422,9 @@ if (!switch_strlen_zero(full_ref_to)) { switch_channel_set_variable(b_channel, SOFIA_REFER_TO_VARIABLE, full_ref_to); } + + + switch_ivr_session_transfer(b_session, exten, NULL, NULL); switch_core_session_rwunlock(b_session); } @@ -3143,7 +3153,6 @@ nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END()); - nua_handle_destroy(nh); } static void sofia_info_send_sipfrag(switch_core_session_t *aleg, switch_core_session_t *bleg) Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia_presence.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia_presence.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia_presence.c Tue May 13 23:37:33 2008 @@ -107,7 +107,6 @@ SIPTAG_CONTACT_STR(profile->url), TAG_END()); switch_safe_free(contact); - nua_message(msg_nh, SIPTAG_CONTENT_TYPE_STR("text/html"), SIPTAG_PAYLOAD_STR(body), TAG_END()); switch_safe_free(ffrom); @@ -189,6 +188,11 @@ return r; } +struct mwi_helper { + sofia_profile_t *profile; + int total; +}; + static void actual_sofia_presence_mwi_event_handler(switch_event_t *event) { char *account, *dup_account, *yn, *host, *user; @@ -196,8 +200,9 @@ sofia_profile_t *profile = NULL; switch_stream_handle_t stream = { 0 }; switch_event_header_t *hp; - int count = 0; - + struct mwi_helper h = { 0 }; + char *pname = NULL; + switch_assert(event != NULL); if (!(account = switch_event_get_header(event, "mwi-message-account"))) { @@ -214,11 +219,29 @@ switch_assert(dup_account != NULL); sofia_glue_get_user_host(dup_account, &user, &host); - if (!host || !(profile = sofia_glue_find_profile(host))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find profile for host %s\n", switch_str_nil(host)); - return; + + if ((pname = switch_event_get_header(event, "sofia-profile"))) { + if (!(profile = sofia_glue_find_profile(pname))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "no profile %s\n", pname); + } + } + + if (!profile) { + if (!host || !(profile = sofia_glue_find_profile(host))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find profile %s\n", switch_str_nil(host)); + switch_safe_free(dup_account); + return; + } } + if (profile->domain_name && profile->domain_name != host) { + host = profile->domain_name; + } + + h.profile = profile; + h.total = 0; + + SWITCH_STANDARD_STREAM(stream); for (hp = event->headers; hp; hp = hp->next) { @@ -240,19 +263,18 @@ stream.data, user, host); - switch_assert (sql != NULL); sofia_glue_execute_sql_callback(profile, SWITCH_FALSE, profile->ireg_mutex, sql, sofia_presence_mwi_callback, - &count); + &h); switch_safe_free(sql); - if (!count) { + if (h.total) { sql = switch_mprintf("select sip_user,sip_host,contact,'%q' from sip_registrations where sip_user='%q' and sip_host='%q'", stream.data, user, host); @@ -264,7 +286,7 @@ profile->ireg_mutex, sql, sofia_presence_mwi_callback2, - profile); + &h); switch_safe_free(sql); } @@ -641,6 +663,7 @@ if (!strcasecmp(event_name, "message-summary")) { if (switch_event_create(&event, SWITCH_EVENT_MESSAGE_QUERY) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Message-Account", "sip:%s@%s", user, host); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "VM-Sofia-Profile", "%s", profile->name); switch_event_fire(&event); } return 0; @@ -701,7 +724,7 @@ switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_HANGUP"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "answer-state", "%s", "resubscribe"); } else { - switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_RING"); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "channel-state", "%s", "CS_ROUTING"); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "unique-id", "%s", uuid); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "answer-state", "%s", state); switch_event_add_header(event, SWITCH_STACK_BOTTOM, "astate", "%s", state); @@ -781,8 +804,8 @@ exptime = tmp - switch_timestamp(NULL); } } - - if (!(nh = (nua_handle_t *) switch_core_hash_find(profile->sub_hash, call_id))) { + + if (!(nh = nua_handle_by_call_id(profile->nua, call_id))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find handle for %s\n", call_id); return 0; } @@ -1043,16 +1066,11 @@ } switch_snprintf(exp, sizeof(exp), "active;expires=%ld", (long) exptime); - + nua_handle_bind(nh, &mod_sofia_globals.keep_private); nua_notify(nh, - NUTAG_NEWSUB(1), SIPTAG_SUBSCRIPTION_STATE_STR(exp), SIPTAG_EVENT_STR(event), SIPTAG_CONTENT_TYPE_STR(ct), SIPTAG_PAYLOAD_STR(pl), TAG_END()); - if (done) { - switch_core_hash_delete(profile->sub_hash, call_id); - } - end: switch_safe_free(id); @@ -1079,18 +1097,15 @@ char *expires = argv[10]; char *body = argv[13]; char *exp; - sofia_profile_t *profile = NULL; + //sofia_profile_t *profile = NULL; char *id = NULL; nua_handle_t *nh; int expire_sec = atoi(expires); - int *total = (int *) pArg; + //int *total = (int *) pArg; + struct mwi_helper *h = (struct mwi_helper *) pArg; - if (!(profile = sofia_glue_find_profile(sub_to_host))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find profile for host %s\n", sub_to_host); - return 0; - } - if (!(nh = (nua_handle_t *) switch_core_hash_find(profile->sub_hash, call_id))) { + if (!(nh = nua_handle_by_call_id(h->profile->nua, call_id))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find handle for %s\n", call_id); return 0; } @@ -1101,17 +1116,15 @@ expire_sec = 3600; } exp = switch_mprintf("active;expires=%ld", expire_sec); - + nua_handle_bind(nh, &mod_sofia_globals.keep_private); nua_notify(nh, - NUTAG_NEWSUB(1), SIPTAG_SUBSCRIPTION_STATE_STR(exp), SIPTAG_EVENT_STR(event), SIPTAG_CONTENT_TYPE_STR("application/simple-message-summary"), SIPTAG_PAYLOAD_STR(body), TAG_END()); switch_safe_free(id); switch_safe_free(exp); - sofia_glue_release_profile(profile); - (*total)++; + h->total++; return 0; } @@ -1125,25 +1138,20 @@ char *event = "message-summary"; char *contact = argv[2]; char *body = argv[3]; - sofia_profile_t *profile = NULL; char *id = NULL; nua_handle_t *nh; - + struct mwi_helper *h = (struct mwi_helper *) pArg; + - if (!(profile = sofia_glue_find_profile(sub_to_host))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find profile for host %s\n", sub_to_host); - return 0; - } - id = switch_mprintf("sip:%s@%s", sub_to_user, sub_to_host); contact = sofia_glue_get_url_from_contact(contact, 0); - nh = nua_handle(profile->nua, NULL, + nh = nua_handle(h->profile->nua, NULL, NUTAG_URL(contact), SIPTAG_FROM_STR(id), SIPTAG_TO_STR(id), - SIPTAG_CONTACT_STR(profile->url), + SIPTAG_CONTACT_STR(h->profile->url), TAG_END()); nua_notify(nh, @@ -1152,8 +1160,6 @@ switch_safe_free(id); - sofia_glue_release_profile(profile); - return 0; } @@ -1310,7 +1316,6 @@ if (sub_state == nua_substate_terminated) { sstr = switch_mprintf("terminated"); - switch_core_hash_delete(profile->sub_hash, call_id); } else { sip_accept_t *ap = sip->sip_accept; char accept[256] = ""; @@ -1327,9 +1332,6 @@ sofia_glue_execute_sql(profile, &sql, SWITCH_TRUE); sstr = switch_mprintf("active;expires=%ld", exp_raw); - if (status < 200) { - switch_core_hash_insert(profile->sub_hash, call_id, nh); - } } switch_mutex_unlock(profile->ireg_mutex); @@ -1347,6 +1349,7 @@ sent_reply++; #if 0 + nua_notify(nh, NUTAG_NEWSUB(1), SIPTAG_SUBSCRIPTION_STATE_STR(sstr), SIPTAG_EVENT_STR(event), Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia_reg.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia_reg.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_sofia/sofia_reg.c Tue May 13 23:37:33 2008 @@ -87,7 +87,7 @@ pvt = malloc(sizeof(*pvt)); switch_assert(pvt); memset(pvt, 0, sizeof(*pvt)); - + pvt->destroy_nh = 1; switch_copy_string(pvt->gateway_name, gateway_ptr->name, sizeof(pvt->gateway_name)); nua_handle_bind(nh, pvt); @@ -97,6 +97,7 @@ switch (ostate) { case REG_STATE_NOREG: + gateway_ptr->status = SOFIA_GATEWAY_UP; break; case REG_STATE_REGISTER: switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "registered %s\n", gateway_ptr->name); @@ -110,7 +111,7 @@ gateway_ptr->state = REG_STATE_NOREG; break; case REG_STATE_UNREGED: - + gateway_ptr->status = SOFIA_GATEWAY_DOWN; sofia_reg_kill_reg(gateway_ptr, 1); if ((gateway_ptr->nh = nua_handle(gateway_ptr->profile->nua, NULL, @@ -196,7 +197,7 @@ contact = sofia_glue_get_url_from_contact(argv[3], 1); nh = nua_handle(profile->nua, NULL, SIPTAG_FROM_STR(profile->url), SIPTAG_TO_STR(to), NUTAG_URL(contact), SIPTAG_CONTACT_STR(profile->url), TAG_END()); - + nua_handle_bind(nh, &mod_sofia_globals.destroy_private); nua_options(nh, TAG_END()); switch_safe_free(contact); @@ -204,6 +205,20 @@ return 0; } + +int sofia_sub_del_callback(void *pArg, int argc, char **argv, char **columnNames) +{ + sofia_profile_t *profile = (sofia_profile_t *) pArg; + nua_handle_t *nh; + + if (argv[0]) { + if ((nh = nua_handle_by_call_id(profile->nua, argv[0]))) { + nua_handle_destroy(nh); + } + } + return 0; +} + int sofia_reg_del_callback(void *pArg, int argc, char **argv, char **columnNames) { switch_event_t *s_event; @@ -262,13 +277,15 @@ } #endif + + switch_mutex_lock(profile->ireg_mutex); + if (now) { switch_snprintf(sql, sizeof(sql), "select *,'%s' from sip_registrations where expires > 0 and expires <= %ld", profile->name, (long) now); } else { switch_snprintf(sql, sizeof(sql), "select *,'%s' from sip_registrations where expires > 0", profile->name); } - switch_mutex_lock(profile->ireg_mutex); sofia_glue_execute_sql_callback(profile, SWITCH_TRUE, NULL, @@ -291,6 +308,21 @@ sofia_glue_actually_execute_sql(profile, SWITCH_FALSE, sql, NULL); + + + if (now) { + switch_snprintf(sql, sizeof(sql), "select call_id from sip_subscriptions where expires > 0 and expires <= %ld", (long) now); + } else { + switch_snprintf(sql, sizeof(sql), "select call_id from sip_subscriptions where expires > 0"); + } + + sofia_glue_execute_sql_callback(profile, + SWITCH_TRUE, + NULL, + sql, + sofia_sub_del_callback, + profile); + if (now) { switch_snprintf(sql, sizeof(sql), "delete from sip_subscriptions where expires > 0 and expires <= %ld", (long) now); } else { @@ -656,12 +688,14 @@ if (regtype == REG_REGISTER) { char *new_contact = NULL; + if (exptime) { new_contact = switch_mprintf("%s;expires=%ld", contact_str, (long)exptime); nua_respond(nh, SIP_200_OK, SIPTAG_CONTACT_STR(new_contact), NUTAG_WITH_THIS(nua), TAG_END()); switch_safe_free(new_contact); if (switch_event_create(&event, SWITCH_EVENT_MESSAGE_QUERY) == SWITCH_STATUS_SUCCESS) { switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Message-Account", "sip:%s@%s", to_user, to_host); + switch_event_add_header(event, SWITCH_STACK_BOTTOM, "VM-Sofia-Profile", "%s", profile->name); switch_event_fire(&event); } } else { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.c Tue May 13 23:37:33 2008 @@ -826,7 +826,7 @@ break; case WP_TDM_EVENT_RING_TRIP: - printf("%d: GOT RING TRIP EVENT\n",(int)fd); + printf("%d: GOT ROUTING TRIP EVENT\n",(int)fd); if (tdm_api->wp_tdm_event.wp_ringtrip_event) { tdm_api->wp_tdm_event.wp_ringtrip_event(fd, rx_event->wp_tdm_api_event_ring_state); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma/sangoma_pri.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma/sangoma_pri.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma/sangoma_pri.c Tue May 13 23:37:33 2008 @@ -52,7 +52,7 @@ {2, SANGOMA_PRI_EVENT_DCHAN_DOWN, "DCHAN_DOWN"}, {3, SANGOMA_PRI_EVENT_RESTART, "RESTART"}, {4, SANGOMA_PRI_EVENT_CONFIG_ERR, "CONFIG_ERR"}, - {5, SANGOMA_PRI_EVENT_RING, "RING"}, + {5, SANGOMA_PRI_EVENT_RING, "ROUTING"}, {6, SANGOMA_PRI_EVENT_HANGUP, "HANGUP"}, {7, SANGOMA_PRI_EVENT_RINGING, "RINGING"}, {8, SANGOMA_PRI_EVENT_ANSWER, "ANSWER"}, Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c Tue May 13 23:37:33 2008 @@ -464,13 +464,13 @@ static int str2switch(char *swtype); static switch_status_t wanpipe_on_init(switch_core_session_t *session); static switch_status_t wanpipe_on_hangup(switch_core_session_t *session); -static switch_status_t wanpipe_on_loopback(switch_core_session_t *session); -static switch_status_t wanpipe_on_transmit(switch_core_session_t *session); +static switch_status_t wanpipe_on_exchange_media(switch_core_session_t *session); +static switch_status_t wanpipe_on_soft_execute(switch_core_session_t *session); static switch_call_cause_t wanpipe_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); -static switch_status_t wanpipe_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, +static switch_status_t wanpipe_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); -static switch_status_t wanpipe_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, +static switch_status_t wanpipe_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static int on_info(struct sangoma_pri *spri, sangoma_pri_event_t event_type, pri_event *pevent); static int on_hangup(struct sangoma_pri *spri, sangoma_pri_event_t event_type, pri_event *pevent); @@ -613,12 +613,12 @@ done: - /* Move Channel's State Machine to RING */ - switch_channel_set_state(channel, CS_RING); + /* Move channel's state machine to ROUTING */ + switch_channel_set_state(channel, CS_ROUTING); return SWITCH_STATUS_SUCCESS; } -static switch_status_t wanpipe_on_ring(switch_core_session_t *session) +static switch_status_t wanpipe_on_routing(switch_core_session_t *session) { switch_channel_t *channel = NULL; private_object_t *tech_pvt = NULL; @@ -629,7 +629,7 @@ tech_pvt = switch_core_session_get_private(session); assert(tech_pvt != NULL); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "WANPIPE RING\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "WANPIPE ROUTING\n"); @@ -694,13 +694,13 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t wanpipe_on_loopback(switch_core_session_t *session) +static switch_status_t wanpipe_on_exchange_media(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "WANPIPE LOOPBACK\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t wanpipe_on_transmit(switch_core_session_t *session) +static switch_status_t wanpipe_on_soft_execute(switch_core_session_t *session) { private_object_t *tech_pvt; switch_channel_t *channel; @@ -751,7 +751,7 @@ -static switch_status_t wanpipe_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, +static switch_status_t wanpipe_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { private_object_t *tech_pvt; @@ -838,7 +838,7 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t wanpipe_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, +static switch_status_t wanpipe_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { private_object_t *tech_pvt; @@ -993,19 +993,17 @@ /*.read_frame */ wanpipe_read_frame, /*.write_frame */ wanpipe_write_frame, /*.kill_channel */ wanpipe_kill_channel, - /*.waitfor_read */ NULL, - /*.waitfor_read */ NULL, /*.send_dtmf*/ wanpipe_send_dtmf, /*.receive_message*/ wanpipe_receive_message }; switch_state_handler_table_t wanpipe_state_handlers = { /*.on_init */ wanpipe_on_init, - /*.on_ring */ wanpipe_on_ring, + /*.on_routing */ wanpipe_on_routing, /*.on_execute */ NULL, /*.on_hangup */ wanpipe_on_hangup, - /*.on_loopback */ wanpipe_on_loopback, - /*.on_transmit */ wanpipe_on_transmit + /*.on_exchange_media */ wanpipe_on_exchange_media, + /*.on_soft_execute */ wanpipe_on_soft_execute }; static switch_call_cause_t wanpipe_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_woomera/mod_woomera.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_woomera/mod_woomera.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/endpoints/mod_woomera/mod_woomera.c Tue May 13 23:37:33 2008 @@ -170,14 +170,14 @@ static switch_status_t woomera_on_init(switch_core_session_t *session); static switch_status_t woomera_on_hangup(switch_core_session_t *session); -static switch_status_t woomera_on_ring(switch_core_session_t *session); -static switch_status_t woomera_on_loopback(switch_core_session_t *session); -static switch_status_t woomera_on_transmit(switch_core_session_t *session); +static switch_status_t woomera_on_routing(switch_core_session_t *session); +static switch_status_t woomera_on_exchange_media(switch_core_session_t *session); +static switch_status_t woomera_on_soft_execute(switch_core_session_t *session); static switch_call_cause_t woomera_outgoing_channel(switch_core_session_t *session, switch_caller_profile_t *outbound_profile, switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags); -static switch_status_t woomera_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id); -static switch_status_t woomera_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id); +static switch_status_t woomera_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id); +static switch_status_t woomera_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id); static switch_status_t woomera_kill_channel(switch_core_session_t *session, int sig); static void tech_destroy(private_object * tech_pvt); static void woomera_printf(woomera_profile * profile, switch_socket_t * socket, char *fmt, ...); @@ -238,9 +238,9 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t woomera_on_ring(switch_core_session_t *session) +static switch_status_t woomera_on_routing(switch_core_session_t *session) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s WOOMERA RING\n", switch_channel_get_name(switch_core_session_get_channel(session))); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s WOOMERA ROUTING\n", switch_channel_get_name(switch_core_session_get_channel(session))); return SWITCH_STATUS_SUCCESS; } @@ -310,40 +310,19 @@ return SWITCH_STATUS_SUCCESS; } -static switch_status_t woomera_on_loopback(switch_core_session_t *session) +static switch_status_t woomera_on_exchange_media(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "WOOMERA LOOPBACK\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t woomera_on_transmit(switch_core_session_t *session) +static switch_status_t woomera_on_soft_execute(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "WOOMERA TRANSMIT\n"); return SWITCH_STATUS_SUCCESS; } -static switch_status_t woomera_waitfor_read(switch_core_session_t *session, int ms, int stream_id) -{ - struct private_object *tech_pvt = NULL; - - tech_pvt = switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - return switch_socket_waitfor(tech_pvt->read_poll, ms) ? SWITCH_STATUS_FALSE : SWITCH_STATUS_SUCCESS; -} - -static switch_status_t woomera_waitfor_write(switch_core_session_t *session, int ms, int stream_id) -{ - struct private_object *tech_pvt = NULL; - - tech_pvt = switch_core_session_get_private(session); - switch_assert(tech_pvt != NULL); - - return SWITCH_STATUS_SUCCESS; -// return switch_socket_waitfor(tech_pvt->write_poll, ms); -} - -static switch_status_t woomera_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t woomera_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { struct private_object *tech_pvt = switch_core_session_get_private(session); switch_frame_t *pframe; @@ -379,7 +358,7 @@ return SWITCH_STATUS_FALSE; } -static switch_status_t woomera_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t woomera_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { struct private_object *tech_pvt = switch_core_session_get_private(session); switch_size_t len; @@ -405,11 +384,11 @@ static switch_state_handler_table_t woomera_event_handlers = { /*.on_init */ woomera_on_init, - /*.on_ring */ woomera_on_ring, + /*.on_routing */ woomera_on_routing, /*.on_execute */ woomera_on_execute, /*.on_hangup */ woomera_on_hangup, - /*.on_loopback */ woomera_on_loopback, - /*.on_transmit */ woomera_on_transmit + /*.on_exchange_media */ woomera_on_exchange_media, + /*.on_soft_execute */ woomera_on_soft_execute }; static switch_io_routines_t woomera_io_routines = { @@ -417,8 +396,6 @@ /*.read_frame */ woomera_read_frame, /*.write_frame */ woomera_write_frame, /*.kill_channel */ woomera_kill_channel, - /*.waitfor_read */ woomera_waitfor_read, - /*.waitfor_write */ woomera_waitfor_write }; /* Make sure when you have 2 sessions in the same scope that you pass the appropriate one to the routines @@ -1042,9 +1019,9 @@ ptr++; port = (switch_port_t) atoi(ptr); } - /* Move Channel's State Machine to RING */ + /* Move channel's state machine to ROUTING */ switch_channel_answer(channel); - switch_channel_set_state(channel, CS_RING); + switch_channel_set_state(channel, CS_ROUTING); if (switch_sockaddr_info_get(&tech_pvt->udpwrite, ip, SWITCH_UNSPEC, port, 0, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/event_handlers/mod_cdr_csv/mod_cdr_csv.c Tue May 13 23:37:33 2008 @@ -255,11 +255,11 @@ static switch_state_handler_table_t state_handlers = { /*.on_init */ NULL, - /*.on_ring */ NULL, + /*.on_routing */ NULL, /*.on_execute */ NULL, /*.on_hangup */ my_on_hangup, - /*.on_loopback */ NULL, - /*.on_transmit */ NULL + /*.on_exchange_media */ NULL, + /*.on_soft_execute */ NULL }; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/event_handlers/mod_radius_cdr/mod_radius_cdr.c Tue May 13 23:37:33 2008 @@ -130,7 +130,7 @@ return rad_config; } -static switch_status_t my_on_ring(switch_core_session_t *session) +static switch_status_t my_on_routing(switch_core_session_t *session) { switch_xml_t cdr; switch_channel_t *channel = switch_core_session_get_channel(session); @@ -149,7 +149,7 @@ switch_time_exp_t tm; char buffer[32]; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "[mod_radius_cdr] Entering my_on_ring\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "[mod_radius_cdr] Entering my_on_routing\n"); rad_config = my_radius_init(); @@ -716,11 +716,11 @@ static const switch_state_handler_table_t state_handlers = { /*.on_init */ NULL, - /*.on_ring */ my_on_ring, + /*.on_routing */ my_on_routing, /*.on_execute */ NULL, /*.on_hangup */ my_on_hangup, - /*.on_loopback */ NULL, - /*.on_transmit */ NULL + /*.on_exchange_media */ NULL, + /*.on_soft_execute */ NULL }; SWITCH_MODULE_LOAD_FUNCTION(mod_radius_cdr_load) Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/formats/mod_local_stream/mod_local_stream.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/formats/mod_local_stream/mod_local_stream.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/formats/mod_local_stream/mod_local_stream.c Tue May 13 23:37:33 2008 @@ -170,7 +170,7 @@ (char *)fname, source->channels, source->rate, - SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, source->pool) != SWITCH_STATUS_SUCCESS) { + SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open %s\n", fname); switch_yield(1000000); continue; @@ -252,7 +252,7 @@ return SWITCH_STATUS_FALSE; } - alt_path = switch_mprintf("%s/%d", path, handle->samplerate); + alt_path = switch_mprintf("%s%s%d", path, SWITCH_PATH_SEPARATOR, handle->samplerate); switch_mutex_lock(globals.mutex); if ((source = switch_core_hash_find(globals.source_hash, alt_path))) { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/formats/mod_shout/layer3.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/formats/mod_shout/layer3.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/formats/mod_shout/layer3.c Tue May 13 23:37:33 2008 @@ -609,6 +609,7 @@ { int shift = 1 + gr_info->scalefac_scale; real *xrpnt = (real *) xr; + real *toomuch = (real *) xr + (SBLIMIT * SBLIMIT * sizeof(real)); int l[3], l3; int part2remain = gr_info->part2_3_length - part2bits; int *me; @@ -668,7 +669,9 @@ register int x, y; if ((!mc)) { mc = *m++; - xrpnt = ((real *) xr) + (*m++); + if ((xrpnt = ((real *) xr) + (*m++)) > toomuch) { + return 1; + } lwin = *m++; cb = *m++; if (lwin == 3) { @@ -707,7 +710,9 @@ part2remain--; } else *xrpnt = 0.0; - xrpnt += step; + if ((xrpnt += step) > toomuch) { + return 1; + } if (y == 15) { max[lwin] = cb; part2remain -= h->linbits + 1; @@ -725,7 +730,9 @@ part2remain--; } else *xrpnt = 0.0; - xrpnt += step; + if ((xrpnt += step) > toomuch) { + return 1; + } } } for (; l3 && (part2remain > 0); l3--) { @@ -747,7 +754,9 @@ if (!(i & 1)) { if (!mc) { mc = *m++; - xrpnt = ((real *) xr) + (*m++); + if ((xrpnt = ((real *) xr) + (*m++)) > toomuch) { + return 1; + } lwin = *m++; cb = *m++; if (lwin == 3) { @@ -773,14 +782,18 @@ *xrpnt = v; } else *xrpnt = 0.0; - xrpnt += step; + if ((xrpnt += step) > toomuch) { + return 1; + } } } while (m < me) { if (!mc) { mc = *m++; - xrpnt = ((real *) xr) + *m++; + if ((xrpnt = ((real *) xr) + *m++) > toomuch) { + return 1; + } if ((*m++) == 3) step = 1; else @@ -789,9 +802,13 @@ } mc--; *xrpnt = 0.0; - xrpnt += step; + if ((xrpnt += step) > toomuch) { + return 1; + } *xrpnt = 0.0; - xrpnt += step; + if ((xrpnt += step) > toomuch) { + return 1; + } /* we could add a little opt. here: * if we finished a band for window 3 or a long band * further bands could copied in a simple loop without a @@ -863,6 +880,11 @@ x = y >> 4; y &= 0xf; } + + if (xrpnt >= toomuch) { + return 1; + } + if (x == 15) { max = cb; part2remain -= h->linbits + 1; @@ -971,7 +993,7 @@ #if 0 static int III_dequantize_sample_ms(real xr[2][SBLIMIT][SSLIMIT], int *scf, struct gr_info_s *gr_info, int sfreq, int part2bits) -{ +{ma int shift = 1 + gr_info->scalefac_scale; real *xrpnt = (real *) xr[1]; real *xr0pnt = (real *) xr[0]; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig/CoreSession.java Tue May 13 23:37:33 2008 @@ -117,6 +117,10 @@ return freeswitchJNI.CoreSession_getVariable(swigCPtr, this, var); } + public SWIGTYPE_p_switch_status_t process_callback_result(String ret) { + return new SWIGTYPE_p_switch_status_t(freeswitchJNI.CoreSession_process_callback_result(swigCPtr, this, ret), true); + } + public int recordFile(String file_name, int max_len, int silence_threshold, int silence_secs) { return freeswitchJNI.CoreSession_recordFile__SWIG_0(swigCPtr, this, file_name, max_len, silence_threshold, silence_secs); } @@ -213,6 +217,14 @@ freeswitchJNI.CoreSession_sendEvent(swigCPtr, this, Event.getCPtr(sendME), sendME); } + public void setEventData(Event e) { + freeswitchJNI.CoreSession_setEventData(swigCPtr, this, Event.getCPtr(e), e); + } + + public String getXMLCDR() { + return freeswitchJNI.CoreSession_getXMLCDR(swigCPtr, this); + } + public boolean begin_allow_threads() { return freeswitchJNI.CoreSession_begin_allow_threads(swigCPtr, this); } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig/freeswitchJNI.java Tue May 13 23:37:33 2008 @@ -80,6 +80,7 @@ public final static native void CoreSession_setPrivate(long jarg1, CoreSession jarg1_, String jarg2, long jarg3); public final static native long CoreSession_getPrivate(long jarg1, CoreSession jarg1_, String jarg2); public final static native String CoreSession_getVariable(long jarg1, CoreSession jarg1_, String jarg2); + public final static native long CoreSession_process_callback_result(long jarg1, CoreSession jarg1_, String jarg2); public final static native int CoreSession_recordFile__SWIG_0(long jarg1, CoreSession jarg1_, String jarg2, int jarg3, int jarg4, int jarg5); public final static native int CoreSession_recordFile__SWIG_1(long jarg1, CoreSession jarg1_, String jarg2, int jarg3, int jarg4); public final static native int CoreSession_recordFile__SWIG_2(long jarg1, CoreSession jarg1_, String jarg2, int jarg3); @@ -104,6 +105,8 @@ public final static native boolean CoreSession_ready(long jarg1, CoreSession jarg1_); public final static native void CoreSession_execute(long jarg1, CoreSession jarg1_, String jarg2, String jarg3); public final static native void CoreSession_sendEvent(long jarg1, CoreSession jarg1_, long jarg2, Event jarg2_); + public final static native void CoreSession_setEventData(long jarg1, CoreSession jarg1_, long jarg2, Event jarg2_); + public final static native String CoreSession_getXMLCDR(long jarg1, CoreSession jarg1_); public final static native boolean CoreSession_begin_allow_threads(long jarg1, CoreSession jarg1_); public final static native boolean CoreSession_end_allow_threads(long jarg1, CoreSession jarg1_); public final static native String CoreSession_get_uuid(long jarg1, CoreSession jarg1_); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/switch_swig_wrap.cpp ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/switch_swig_wrap.cpp (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_java/switch_swig_wrap.cpp Tue May 13 23:37:33 2008 @@ -1453,6 +1453,28 @@ } +SWIGEXPORT jlong JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1process_1callback_1result(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) { + jlong jresult = 0 ; + CoreSession *arg1 = (CoreSession *) 0 ; + char *arg2 = (char *) 0 ; + switch_status_t result; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(CoreSession **)&jarg1; + arg2 = 0; + if (jarg2) { + arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0); + if (!arg2) return 0; + } + result = (arg1)->process_callback_result(arg2); + *(switch_status_t **)&jresult = new switch_status_t((switch_status_t &)result); + if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2); + return jresult; +} + + SWIGEXPORT jint JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1recordFile_1_1SWIG_10(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3, jint jarg4, jint jarg5) { jint jresult = 0 ; CoreSession *arg1 = (CoreSession *) 0 ; @@ -2022,6 +2044,35 @@ } +SWIGEXPORT void JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1setEventData(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jobject jarg2_) { + CoreSession *arg1 = (CoreSession *) 0 ; + Event *arg2 = (Event *) 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + (void)jarg2_; + arg1 = *(CoreSession **)&jarg1; + arg2 = *(Event **)&jarg2; + (arg1)->setEventData(arg2); +} + + +SWIGEXPORT jstring JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1getXMLCDR(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { + jstring jresult = 0 ; + CoreSession *arg1 = (CoreSession *) 0 ; + char *result = 0 ; + + (void)jenv; + (void)jcls; + (void)jarg1_; + arg1 = *(CoreSession **)&jarg1; + result = (char *)(arg1)->getXMLCDR(); + if(result) jresult = jenv->NewStringUTF((const char *)result); + return jresult; +} + + SWIGEXPORT jboolean JNICALL Java_org_freeswitch_swig_freeswitchJNI_CoreSession_1begin_1allow_1threads(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jboolean jresult = 0 ; CoreSession *arg1 = (CoreSession *) 0 ; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/freeswitch_lua.cpp ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/freeswitch_lua.cpp (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/freeswitch_lua.cpp Tue May 13 23:37:33 2008 @@ -1,21 +1,23 @@ + #include <switch.h> #include "freeswitch_lua.h" +using namespace LUA; Session::Session() : CoreSession() { - cb_function = cb_arg = hangup_func_str = NULL; + cb_function = cb_arg = hangup_func_str = hangup_func_arg = NULL; hh = mark = 0; } Session::Session(char *uuid) : CoreSession(uuid) { - cb_function = cb_arg = hangup_func_str = NULL; + cb_function = cb_arg = hangup_func_str = hangup_func_arg = NULL; hh = mark = 0; } Session::Session(switch_core_session_t *new_session) : CoreSession(new_session) { - cb_function = cb_arg = hangup_func_str = NULL; + cb_function = cb_arg = hangup_func_str = hangup_func_arg = NULL; hh = mark = 0; } static switch_status_t lua_hanguphook(switch_core_session_t *session_hungup); @@ -29,6 +31,7 @@ free(hangup_func_str); } + switch_safe_free(hangup_func_arg); switch_safe_free(cb_function); switch_safe_free(cb_arg); } @@ -71,7 +74,7 @@ void Session::check_hangup_hook() { - if (hangup_func_str && (hook_state == CS_HANGUP || hook_state == CS_RING)) { + if (hangup_func_str && (hook_state == CS_HANGUP || hook_state == CS_ROUTING)) { hh++; } } @@ -80,6 +83,7 @@ { if (hh && !mark) { const char *err = NULL; + int arg_count = 1; mark++; if (!getLUA()) { @@ -89,7 +93,13 @@ lua_getfield(L, LUA_GLOBALSINDEX, (char *)hangup_func_str); lua_pushstring(L, hook_state == CS_HANGUP ? "hangup" : "transfer"); - lua_call(L, 1, 1); + + if (hangup_func_arg) { + lua_getfield(L, LUA_GLOBALSINDEX, (char *)hangup_func_arg); + arg_count++; + } + + lua_call(L, arg_count, 1); err = lua_tostring(L, -1); if (!switch_strlen_zero(err)) { @@ -115,14 +125,18 @@ } -void Session::setHangupHook(char *func) { +void Session::setHangupHook(char *func, char *arg) { sanity_check_noreturn; switch_safe_free(hangup_func_str); - + switch_safe_free(hangup_func_arg); + if (func) { hangup_func_str = strdup(func); + if (!switch_strlen_zero(arg)) { + hangup_func_arg = strdup(arg); + } switch_channel_set_private(channel, "CoreSession", this); hook_state = switch_channel_get_state(channel); switch_core_event_hook_add_state_change(session, lua_hanguphook); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/freeswitch_lua.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/freeswitch_lua.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/freeswitch_lua.h Tue May 13 23:37:33 2008 @@ -10,6 +10,7 @@ #include <switch_cpp.h> +namespace LUA { class Session : public CoreSession { private: virtual void do_hangup_hook(); @@ -29,13 +30,14 @@ virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype); void setInputCallback(char *cbfunc, char *funcargs); - void setHangupHook(char *func); + void setHangupHook(char *func, char *arg = NULL); bool ready(); char *cb_function; char *cb_arg; char *hangup_func_str; + char *hangup_func_arg; void setLUA(lua_State *state); }; - +} #endif Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/hack.diff ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/hack.diff (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/hack.diff Tue May 13 23:37:33 2008 @@ -1,29 +1,29 @@ ---- hack.cpp 2008-04-29 13:49:22.000000000 -0400 -+++ mod_lua_wrap.cpp 2008-04-29 13:49:10.000000000 -0400 -@@ -4028,7 +4028,7 @@ - SWIG_check_num_args("Session",0,0) - result = (Session *)new Session(); +--- mod_lua_wrap.cpp 2008-05-11 20:03:58.000000000 -0400 ++++ mod_lua_wrap2.cpp 2008-05-11 20:05:08.000000000 -0400 +@@ -5158,7 +5158,7 @@ + SWIG_check_num_args("LUA::Session",0,0) + result = (LUA::Session *)new LUA::Session(); SWIG_arg=0; -- SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; -+ SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; result->setLUA(L); +- SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; ++ SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; result->setLUA(L); return SWIG_arg; if(0) SWIG_fail; -@@ -4049,7 +4049,7 @@ +@@ -5179,7 +5179,7 @@ arg1 = (char *)lua_tostring(L, 1); - result = (Session *)new Session(arg1); + result = (LUA::Session *)new LUA::Session(arg1); SWIG_arg=0; -- SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; -+ SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; result->setLUA(L); +- SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; ++ SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; result->setLUA(L); return SWIG_arg; if(0) SWIG_fail; -@@ -4074,7 +4074,7 @@ +@@ -5204,7 +5204,7 @@ - result = (Session *)new Session(arg1); + result = (LUA::Session *)new LUA::Session(arg1); SWIG_arg=0; -- SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; -+ SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; result->setLUA(L); +- SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; ++ SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; result->setLUA(L); return SWIG_arg; if(0) SWIG_fail; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.2008.vcproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.2008.vcproj (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.2008.vcproj Tue May 13 23:37:33 2008 @@ -270,7 +270,7 @@ > </File> <File - RelativePath=".\mod_lua.c" + RelativePath=".\mod_lua.cpp" > </File> <File Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.vcproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.vcproj (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua.vcproj Tue May 13 23:37:33 2008 @@ -270,7 +270,7 @@ > </File> <File - RelativePath=".\mod_lua.c" + RelativePath=".\mod_lua.cpp" > </File> <File Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua_wrap.cpp ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua_wrap.cpp (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_lua/mod_lua_wrap.cpp Tue May 13 23:37:33 2008 @@ -1488,7 +1488,7 @@ #define SWIGTYPE_p_CoreSession swig_types[1] #define SWIGTYPE_p_Event swig_types[2] #define SWIGTYPE_p_IVRMenu swig_types[3] -#define SWIGTYPE_p_Session swig_types[4] +#define SWIGTYPE_p_LUA__Session swig_types[4] #define SWIGTYPE_p_Stream swig_types[5] #define SWIGTYPE_p_input_callback_state swig_types[6] #define SWIGTYPE_p_lua_State swig_types[7] @@ -3719,6 +3719,37 @@ } +static int _wrap_CoreSession_process_callback_result(lua_State* L) { + int SWIG_arg = -1; + CoreSession *arg1 = (CoreSession *) 0 ; + char *arg2 = (char *) 0 ; + switch_status_t result; + + SWIG_check_num_args("process_callback_result",2,2) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("process_callback_result",1,"CoreSession *"); + if(!lua_isstring(L,2)) SWIG_fail_arg("process_callback_result",2,"char *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_CoreSession,0))){ + SWIG_fail_ptr("CoreSession_process_callback_result",1,SWIGTYPE_p_CoreSession); + } + + arg2 = (char *)lua_tostring(L, 2); + result = (arg1)->process_callback_result(arg2); + SWIG_arg=0; + { + switch_status_t * resultptr = new switch_status_t((switch_status_t &) result); + SWIG_NewPointerObj(L,(void *) resultptr,SWIGTYPE_p_switch_status_t,1); SWIG_arg++; + } + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + static int _wrap_CoreSession_recordFile__SWIG_0(lua_State* L) { int SWIG_arg = -1; CoreSession *arg1 = (CoreSession *) 0 ; @@ -4726,6 +4757,62 @@ } +static int _wrap_CoreSession_setEventData(lua_State* L) { + int SWIG_arg = -1; + CoreSession *arg1 = (CoreSession *) 0 ; + Event *arg2 = (Event *) 0 ; + + SWIG_check_num_args("setEventData",2,2) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("setEventData",1,"CoreSession *"); + if(!SWIG_isptrtype(L,2)) SWIG_fail_arg("setEventData",2,"Event *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_CoreSession,0))){ + SWIG_fail_ptr("CoreSession_setEventData",1,SWIGTYPE_p_CoreSession); + } + + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,2,(void**)&arg2,SWIGTYPE_p_Event,0))){ + SWIG_fail_ptr("CoreSession_setEventData",2,SWIGTYPE_p_Event); + } + + (arg1)->setEventData(arg2); + SWIG_arg=0; + + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + +static int _wrap_CoreSession_getXMLCDR(lua_State* L) { + int SWIG_arg = -1; + CoreSession *arg1 = (CoreSession *) 0 ; + char *result = 0 ; + + SWIG_check_num_args("getXMLCDR",1,1) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("getXMLCDR",1,"CoreSession *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_CoreSession,0))){ + SWIG_fail_ptr("CoreSession_getXMLCDR",1,SWIGTYPE_p_CoreSession); + } + + result = (char *)(arg1)->getXMLCDR(); + SWIG_arg=0; + lua_pushstring(L,(const char*)result); SWIG_arg++; + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + static int _wrap_CoreSession_begin_allow_threads(lua_State* L) { int SWIG_arg = -1; CoreSession *arg1 = (CoreSession *) 0 ; @@ -4905,6 +4992,7 @@ {"setPrivate", _wrap_CoreSession_setPrivate}, {"getPrivate", _wrap_CoreSession_getPrivate}, {"getVariable", _wrap_CoreSession_getVariable}, + {"process_callback_result", _wrap_CoreSession_process_callback_result}, {"recordFile", _wrap_CoreSession_recordFile}, {"setCallerData", _wrap_CoreSession_setCallerData}, {"originate", _wrap_CoreSession_originate}, @@ -4924,6 +5012,8 @@ {"ready", _wrap_CoreSession_ready}, {"execute", _wrap_CoreSession_execute}, {"sendEvent", _wrap_CoreSession_sendEvent}, + {"setEventData", _wrap_CoreSession_setEventData}, + {"getXMLCDR", _wrap_CoreSession_getXMLCDR}, {"begin_allow_threads", _wrap_CoreSession_begin_allow_threads}, {"end_allow_threads", _wrap_CoreSession_end_allow_threads}, {"get_uuid", _wrap_CoreSession_get_uuid}, @@ -5095,12 +5185,12 @@ static int _wrap_new_Session__SWIG_0(lua_State* L) { int SWIG_arg = -1; - Session *result = 0 ; + LUA::Session *result = 0 ; - SWIG_check_num_args("Session",0,0) - result = (Session *)new Session(); + SWIG_check_num_args("LUA::Session",0,0) + result = (LUA::Session *)new LUA::Session(); SWIG_arg=0; - SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; result->setLUA(L); + SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; result->setLUA(L); return SWIG_arg; if(0) SWIG_fail; @@ -5114,14 +5204,14 @@ static int _wrap_new_Session__SWIG_1(lua_State* L) { int SWIG_arg = -1; char *arg1 = (char *) 0 ; - Session *result = 0 ; + LUA::Session *result = 0 ; - SWIG_check_num_args("Session",1,1) - if(!lua_isstring(L,1)) SWIG_fail_arg("Session",1,"char *"); + SWIG_check_num_args("LUA::Session",1,1) + if(!lua_isstring(L,1)) SWIG_fail_arg("LUA::Session",1,"char *"); arg1 = (char *)lua_tostring(L, 1); - result = (Session *)new Session(arg1); + result = (LUA::Session *)new LUA::Session(arg1); SWIG_arg=0; - SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; result->setLUA(L); + SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; result->setLUA(L); return SWIG_arg; if(0) SWIG_fail; @@ -5135,18 +5225,18 @@ static int _wrap_new_Session__SWIG_2(lua_State* L) { int SWIG_arg = -1; switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; - Session *result = 0 ; + LUA::Session *result = 0 ; - SWIG_check_num_args("Session",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("Session",1,"switch_core_session_t *"); + SWIG_check_num_args("LUA::Session",1,1) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("LUA::Session",1,"switch_core_session_t *"); if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_switch_core_session_t,0))){ SWIG_fail_ptr("new_Session",1,SWIGTYPE_p_switch_core_session_t); } - result = (Session *)new Session(arg1); + result = (LUA::Session *)new LUA::Session(arg1); SWIG_arg=0; - SWIG_NewPointerObj(L,result,SWIGTYPE_p_Session,1); SWIG_arg++; result->setLUA(L); + SWIG_NewPointerObj(L,result,SWIGTYPE_p_LUA__Session,1); SWIG_arg++; result->setLUA(L); return SWIG_arg; if(0) SWIG_fail; @@ -5198,13 +5288,13 @@ static int _wrap_delete_Session(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; - SWIG_check_num_args("Session",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("Session",1,"Session *"); + SWIG_check_num_args("LUA::~Session",1,1) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("LUA::~Session",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,SWIG_POINTER_DISOWN))){ - SWIG_fail_ptr("delete_Session",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,SWIG_POINTER_DISOWN))){ + SWIG_fail_ptr("delete_Session",1,SWIGTYPE_p_LUA__Session); } delete arg1; @@ -5223,14 +5313,14 @@ static int _wrap_Session_begin_allow_threads(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; bool result; SWIG_check_num_args("begin_allow_threads",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("begin_allow_threads",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("begin_allow_threads",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_begin_allow_threads",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_begin_allow_threads",1,SWIGTYPE_p_LUA__Session); } result = (bool)(arg1)->begin_allow_threads(); @@ -5248,14 +5338,14 @@ static int _wrap_Session_end_allow_threads(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; bool result; SWIG_check_num_args("end_allow_threads",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("end_allow_threads",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("end_allow_threads",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_end_allow_threads",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_end_allow_threads",1,SWIGTYPE_p_LUA__Session); } result = (bool)(arg1)->end_allow_threads(); @@ -5273,13 +5363,13 @@ static int _wrap_Session_check_hangup_hook(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; SWIG_check_num_args("check_hangup_hook",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("check_hangup_hook",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("check_hangup_hook",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_check_hangup_hook",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_check_hangup_hook",1,SWIGTYPE_p_LUA__Session); } (arg1)->check_hangup_hook(); @@ -5297,19 +5387,19 @@ static int _wrap_Session_run_dtmf_callback(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; void *arg2 = (void *) 0 ; switch_input_type_t arg3 ; switch_status_t result; switch_input_type_t *argp3 ; SWIG_check_num_args("run_dtmf_callback",3,3) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("run_dtmf_callback",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("run_dtmf_callback",1,"LUA::Session *"); if(!SWIG_isptrtype(L,2)) SWIG_fail_arg("run_dtmf_callback",2,"void *"); if(!lua_isuserdata(L,3)) SWIG_fail_arg("run_dtmf_callback",3,"switch_input_type_t"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_run_dtmf_callback",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_run_dtmf_callback",1,SWIGTYPE_p_LUA__Session); } arg2=(void *)SWIG_MustGetPtr(L,2,0,0,2,"Session_run_dtmf_callback"); @@ -5337,17 +5427,17 @@ static int _wrap_Session_setInputCallback(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; char *arg2 = (char *) 0 ; char *arg3 = (char *) 0 ; SWIG_check_num_args("setInputCallback",3,3) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("setInputCallback",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("setInputCallback",1,"LUA::Session *"); if(!lua_isstring(L,2)) SWIG_fail_arg("setInputCallback",2,"char *"); if(!lua_isstring(L,3)) SWIG_fail_arg("setInputCallback",3,"char *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_setInputCallback",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_setInputCallback",1,SWIGTYPE_p_LUA__Session); } arg2 = (char *)lua_tostring(L, 2); @@ -5365,17 +5455,47 @@ } -static int _wrap_Session_setHangupHook(lua_State* L) { +static int _wrap_Session_setHangupHook__SWIG_0(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + + SWIG_check_num_args("setHangupHook",3,3) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("setHangupHook",1,"LUA::Session *"); + if(!lua_isstring(L,2)) SWIG_fail_arg("setHangupHook",2,"char *"); + if(!lua_isstring(L,3)) SWIG_fail_arg("setHangupHook",3,"char *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_setHangupHook",1,SWIGTYPE_p_LUA__Session); + } + + arg2 = (char *)lua_tostring(L, 2); + arg3 = (char *)lua_tostring(L, 3); + (arg1)->setHangupHook(arg2,arg3); + SWIG_arg=0; + + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + +static int _wrap_Session_setHangupHook__SWIG_1(lua_State* L) { + int SWIG_arg = -1; + LUA::Session *arg1 = (LUA::Session *) 0 ; char *arg2 = (char *) 0 ; SWIG_check_num_args("setHangupHook",2,2) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("setHangupHook",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("setHangupHook",1,"LUA::Session *"); if(!lua_isstring(L,2)) SWIG_fail_arg("setHangupHook",2,"char *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_setHangupHook",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_setHangupHook",1,SWIGTYPE_p_LUA__Session); } arg2 = (char *)lua_tostring(L, 2); @@ -5392,16 +5512,72 @@ } +static int _wrap_Session_setHangupHook(lua_State* L) { + int argc; + int argv[4]={ + 1,2,3,4 + }; + + argc = lua_gettop(L); + if (argc == 2) { + int _v; + { + void *ptr; + if (SWIG_isptrtype(L,argv[0])==0 || SWIG_ConvertPtr(L,argv[0], (void **) &ptr, SWIGTYPE_p_LUA__Session, 0)) { + _v = 0; + } else { + _v = 1; + } + } + if (_v) { + { + _v = lua_isstring(L,argv[1]); + } + if (_v) { + return _wrap_Session_setHangupHook__SWIG_1(L); + } + } + } + if (argc == 3) { + int _v; + { + void *ptr; + if (SWIG_isptrtype(L,argv[0])==0 || SWIG_ConvertPtr(L,argv[0], (void **) &ptr, SWIGTYPE_p_LUA__Session, 0)) { + _v = 0; + } else { + _v = 1; + } + } + if (_v) { + { + _v = lua_isstring(L,argv[1]); + } + if (_v) { + { + _v = lua_isstring(L,argv[2]); + } + if (_v) { + return _wrap_Session_setHangupHook__SWIG_0(L); + } + } + } + } + + lua_pushstring(L,"No matching function for overloaded 'Session_setHangupHook'"); + lua_error(L);return 0; +} + + static int _wrap_Session_ready(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; bool result; SWIG_check_num_args("ready",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("ready",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("ready",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_ready",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_ready",1,SWIGTYPE_p_LUA__Session); } result = (bool)(arg1)->ready(); @@ -5419,15 +5595,15 @@ static int _wrap_Session_cb_function_set(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; char *arg2 = (char *) 0 ; SWIG_check_num_args("cb_function",2,2) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("cb_function",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("cb_function",1,"LUA::Session *"); if(!lua_isstring(L,2)) SWIG_fail_arg("cb_function",2,"char *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_cb_function_set",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_cb_function_set",1,SWIGTYPE_p_LUA__Session); } arg2 = (char *)lua_tostring(L, 2); @@ -5454,14 +5630,14 @@ static int _wrap_Session_cb_function_get(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; char *result = 0 ; SWIG_check_num_args("cb_function",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("cb_function",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("cb_function",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_cb_function_get",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_cb_function_get",1,SWIGTYPE_p_LUA__Session); } result = (char *) ((arg1)->cb_function); @@ -5479,15 +5655,15 @@ static int _wrap_Session_cb_arg_set(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; char *arg2 = (char *) 0 ; SWIG_check_num_args("cb_arg",2,2) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("cb_arg",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("cb_arg",1,"LUA::Session *"); if(!lua_isstring(L,2)) SWIG_fail_arg("cb_arg",2,"char *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_cb_arg_set",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_cb_arg_set",1,SWIGTYPE_p_LUA__Session); } arg2 = (char *)lua_tostring(L, 2); @@ -5514,14 +5690,14 @@ static int _wrap_Session_cb_arg_get(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; char *result = 0 ; SWIG_check_num_args("cb_arg",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("cb_arg",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("cb_arg",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_cb_arg_get",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_cb_arg_get",1,SWIGTYPE_p_LUA__Session); } result = (char *) ((arg1)->cb_arg); @@ -5539,15 +5715,15 @@ static int _wrap_Session_hangup_func_str_set(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; char *arg2 = (char *) 0 ; SWIG_check_num_args("hangup_func_str",2,2) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("hangup_func_str",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("hangup_func_str",1,"LUA::Session *"); if(!lua_isstring(L,2)) SWIG_fail_arg("hangup_func_str",2,"char *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_hangup_func_str_set",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_hangup_func_str_set",1,SWIGTYPE_p_LUA__Session); } arg2 = (char *)lua_tostring(L, 2); @@ -5574,14 +5750,14 @@ static int _wrap_Session_hangup_func_str_get(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; char *result = 0 ; SWIG_check_num_args("hangup_func_str",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("hangup_func_str",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("hangup_func_str",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_hangup_func_str_get",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_hangup_func_str_get",1,SWIGTYPE_p_LUA__Session); } result = (char *) ((arg1)->hangup_func_str); @@ -5597,17 +5773,77 @@ } +static int _wrap_Session_hangup_func_arg_set(lua_State* L) { + int SWIG_arg = -1; + LUA::Session *arg1 = (LUA::Session *) 0 ; + char *arg2 = (char *) 0 ; + + SWIG_check_num_args("hangup_func_arg",2,2) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("hangup_func_arg",1,"LUA::Session *"); + if(!lua_isstring(L,2)) SWIG_fail_arg("hangup_func_arg",2,"char *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_hangup_func_arg_set",1,SWIGTYPE_p_LUA__Session); + } + + arg2 = (char *)lua_tostring(L, 2); + { + if (arg1->hangup_func_arg) delete [] arg1->hangup_func_arg; + if (arg2) { + arg1->hangup_func_arg = (char *) (new char[strlen((const char *)arg2)+1]); + strcpy((char *)arg1->hangup_func_arg, (const char *)arg2); + } else { + arg1->hangup_func_arg = 0; + } + } + SWIG_arg=0; + + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + +static int _wrap_Session_hangup_func_arg_get(lua_State* L) { + int SWIG_arg = -1; + LUA::Session *arg1 = (LUA::Session *) 0 ; + char *result = 0 ; + + SWIG_check_num_args("hangup_func_arg",1,1) + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("hangup_func_arg",1,"LUA::Session *"); + + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_hangup_func_arg_get",1,SWIGTYPE_p_LUA__Session); + } + + result = (char *) ((arg1)->hangup_func_arg); + SWIG_arg=0; + lua_pushstring(L,(const char*)result); SWIG_arg++; + return SWIG_arg; + + if(0) SWIG_fail; + +fail: + lua_error(L); + return SWIG_arg; +} + + static int _wrap_Session_setLUA(lua_State* L) { int SWIG_arg = -1; - Session *arg1 = (Session *) 0 ; + LUA::Session *arg1 = (LUA::Session *) 0 ; lua_State *arg2 = (lua_State *) 0 ; arg2 = L; SWIG_check_num_args("setLUA",1,1) - if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("setLUA",1,"Session *"); + if(!SWIG_isptrtype(L,1)) SWIG_fail_arg("setLUA",1,"LUA::Session *"); - if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_Session,0))){ - SWIG_fail_ptr("Session_setLUA",1,SWIGTYPE_p_Session); + if (!SWIG_IsOK(SWIG_ConvertPtr(L,1,(void**)&arg1,SWIGTYPE_p_LUA__Session,0))){ + SWIG_fail_ptr("Session_setLUA",1,SWIGTYPE_p_LUA__Session); } (arg1)->setLUA(arg2); @@ -5624,10 +5860,10 @@ static void swig_delete_Session(void *obj) { -Session *arg1 = (Session *) obj; +LUA::Session *arg1 = (LUA::Session *) obj; delete arg1; } -static swig_lua_method swig_Session_methods[] = { +static swig_lua_method swig_LUA_Session_methods[] = { {"begin_allow_threads", _wrap_Session_begin_allow_threads}, {"end_allow_threads", _wrap_Session_end_allow_threads}, {"check_hangup_hook", _wrap_Session_check_hangup_hook}, @@ -5638,15 +5874,16 @@ {"setLUA", _wrap_Session_setLUA}, {0,0} }; -static swig_lua_attribute swig_Session_attributes[] = { +static swig_lua_attribute swig_LUA_Session_attributes[] = { { "cb_function", _wrap_Session_cb_function_get, _wrap_Session_cb_function_set}, { "cb_arg", _wrap_Session_cb_arg_get, _wrap_Session_cb_arg_set}, { "hangup_func_str", _wrap_Session_hangup_func_str_get, _wrap_Session_hangup_func_str_set}, + { "hangup_func_arg", _wrap_Session_hangup_func_arg_get, _wrap_Session_hangup_func_arg_set}, {0,0,0} }; -static swig_lua_class *swig_Session_bases[] = {0,0}; -static const char *swig_Session_base_names[] = {"CoreSession *",0}; -static swig_lua_class _wrap_class_Session = { "Session", &SWIGTYPE_p_Session,_wrap_new_Session, swig_delete_Session, swig_Session_methods, swig_Session_attributes, swig_Session_bases, swig_Session_base_names }; +static swig_lua_class *swig_LUA_Session_bases[] = {0,0}; +static const char *swig_LUA_Session_base_names[] = {"CoreSession *",0}; +static swig_lua_class _wrap_class_LUA_Session = { "Session", &SWIGTYPE_p_LUA__Session,_wrap_new_Session, swig_delete_Session, swig_LUA_Session_methods, swig_LUA_Session_attributes, swig_LUA_Session_bases, swig_LUA_Session_base_names }; #ifdef __cplusplus } @@ -5676,14 +5913,14 @@ /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ -static void *_p_SessionTo_p_CoreSession(void *x, int *newmemory) { - return (void *)((CoreSession *) ((Session *) x)); +static void *_p_LUA__SessionTo_p_CoreSession(void *x, int *newmemory) { + return (void *)((CoreSession *) ((LUA::Session *) x)); } static swig_type_info _swigt__p_API = {"_p_API", "API *", 0, 0, (void*)&_wrap_class_API, 0}; static swig_type_info _swigt__p_CoreSession = {"_p_CoreSession", "CoreSession *", 0, 0, (void*)&_wrap_class_CoreSession, 0}; static swig_type_info _swigt__p_Event = {"_p_Event", "Event *", 0, 0, (void*)&_wrap_class_Event, 0}; static swig_type_info _swigt__p_IVRMenu = {"_p_IVRMenu", "IVRMenu *", 0, 0, (void*)&_wrap_class_IVRMenu, 0}; -static swig_type_info _swigt__p_Session = {"_p_Session", "Session *", 0, 0, (void*)&_wrap_class_Session, 0}; +static swig_type_info _swigt__p_LUA__Session = {"_p_LUA__Session", "LUA::Session *", 0, 0, (void*)&_wrap_class_LUA_Session, 0}; static swig_type_info _swigt__p_Stream = {"_p_Stream", "Stream *", 0, 0, (void*)&_wrap_class_Stream, 0}; static swig_type_info _swigt__p_input_callback_state = {"_p_input_callback_state", "input_callback_state_t *|input_callback_state *", 0, 0, (void*)&_wrap_class_input_callback_state_t, 0}; static swig_type_info _swigt__p_lua_State = {"_p_lua_State", "lua_State *", 0, 0, (void*)0, 0}; @@ -5704,7 +5941,7 @@ &_swigt__p_CoreSession, &_swigt__p_Event, &_swigt__p_IVRMenu, - &_swigt__p_Session, + &_swigt__p_LUA__Session, &_swigt__p_Stream, &_swigt__p_input_callback_state, &_swigt__p_lua_State, @@ -5722,10 +5959,10 @@ }; static swig_cast_info _swigc__p_API[] = { {&_swigt__p_API, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_CoreSession[] = { {&_swigt__p_CoreSession, 0, 0, 0}, {&_swigt__p_Session, _p_SessionTo_p_CoreSession, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_CoreSession[] = { {&_swigt__p_CoreSession, 0, 0, 0}, {&_swigt__p_LUA__Session, _p_LUA__SessionTo_p_CoreSession, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_Event[] = { {&_swigt__p_Event, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IVRMenu[] = { {&_swigt__p_IVRMenu, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_Session[] = { {&_swigt__p_Session, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_LUA__Session[] = { {&_swigt__p_LUA__Session, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_Stream[] = { {&_swigt__p_Stream, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_input_callback_state[] = { {&_swigt__p_input_callback_state, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_lua_State[] = { {&_swigt__p_lua_State, 0, 0, 0},{0, 0, 0, 0}}; @@ -5746,7 +5983,7 @@ _swigc__p_CoreSession, _swigc__p_Event, _swigc__p_IVRMenu, - _swigc__p_Session, + _swigc__p_LUA__Session, _swigc__p_Stream, _swigc__p_input_callback_state, _swigc__p_lua_State, Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/Makefile ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/Makefile (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/Makefile Tue May 13 23:37:33 2008 @@ -16,7 +16,7 @@ mod_perl_wrap.cpp: swig -static -shadow -perl5 -c++ -DMULTIPLICITY -I../../../../src/include -o mod_perl_wrap.cpp freeswitch.i echo "#include \"mod_perl_extra.c\"" >> mod_perl_wrap.cpp - patch -s -p0 -i hack.diff + # patch -s -p0 -i hack.diff @@ -34,6 +34,6 @@ rm -fr *~ .perlok freeswitch.$(DYNAMIC_LIB_EXTEN) depend_install: - mkdir -p $(PREFIX)/perl - $(LTINSTALL) freeswitch.$(DYNAMIC_LIB_EXTEN) freeswitch.pm $(PREFIX)/perl - if [ ! -f $(PREFIX)/perl/freeswitch.pm ] ; then $(LTINSTALL) freeswitch.pm $(PREFIX)/perl ; fi + mkdir -p $(DESTDIR)$(PREFIX)/perl + $(LTINSTALL) freeswitch.$(DYNAMIC_LIB_EXTEN) freeswitch.pm $(DESTDIR)$(PREFIX)/perl + if [ ! -f $(DESTDIR)$(PREFIX)/perl/freeswitch.pm ] ; then $(LTINSTALL) freeswitch.pm $(DESTDIR)$(PREFIX)/perl ; fi Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch.pm ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch.pm (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch.pm Tue May 13 23:37:33 2008 @@ -307,6 +307,7 @@ *setPrivate = *freeswitchc::CoreSession_setPrivate; *getPrivate = *freeswitchc::CoreSession_getPrivate; *getVariable = *freeswitchc::CoreSession_getVariable; +*process_callback_result = *freeswitchc::CoreSession_process_callback_result; *recordFile = *freeswitchc::CoreSession_recordFile; *setCallerData = *freeswitchc::CoreSession_setCallerData; *originate = *freeswitchc::CoreSession_originate; @@ -326,6 +327,8 @@ *ready = *freeswitchc::CoreSession_ready; *execute = *freeswitchc::CoreSession_execute; *sendEvent = *freeswitchc::CoreSession_sendEvent; +*setEventData = *freeswitchc::CoreSession_setEventData; +*getXMLCDR = *freeswitchc::CoreSession_getXMLCDR; *begin_allow_threads = *freeswitchc::CoreSession_begin_allow_threads; *end_allow_threads = *freeswitchc::CoreSession_end_allow_threads; *get_uuid = *freeswitchc::CoreSession_get_uuid; @@ -382,6 +385,8 @@ *swig_cb_arg_set = *freeswitchc::Session_cb_arg_set; *swig_hangup_func_str_get = *freeswitchc::Session_hangup_func_str_get; *swig_hangup_func_str_set = *freeswitchc::Session_hangup_func_str_set; +*swig_hangup_func_arg_get = *freeswitchc::Session_hangup_func_arg_get; +*swig_hangup_func_arg_set = *freeswitchc::Session_hangup_func_arg_set; *setPERL = *freeswitchc::Session_setPERL; sub DISOWN { my $self = shift; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch_perl.cpp ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch_perl.cpp (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch_perl.cpp Tue May 13 23:37:33 2008 @@ -4,7 +4,9 @@ static STRLEN n_a; -#define init_me() cb_function = hangup_func_str = NULL; hh = mark = 0; my_perl = NULL; cb_arg = NULL +#define init_me() cb_function = hangup_func_str = NULL; hangup_func_arg = NULL; hh = mark = 0; my_perl = NULL; cb_arg = NULL + +using namespace PERL; Session::Session() : CoreSession() { @@ -25,8 +27,14 @@ { switch_safe_free(cb_function); switch_safe_free(cb_arg); + + if (session && hangup_func_str) { + switch_core_event_hook_remove_state_change(session, perl_hanguphook); + } + switch_safe_free(hangup_func_str); - switch_core_event_hook_remove_state_change(session, perl_hanguphook); + switch_safe_free(hangup_func_arg); + } bool Session::begin_allow_threads() @@ -67,7 +75,7 @@ void Session::check_hangup_hook() { - if (hangup_func_str && (hook_state == CS_HANGUP || hook_state == CS_RING)) { + if (hangup_func_str && (hook_state == CS_HANGUP || hook_state == CS_ROUTING)) { hh++; } } @@ -82,7 +90,12 @@ return; } - code = switch_mprintf("%s(%s)", hangup_func_str, hook_state == CS_HANGUP ? "hangup" : "transfer"); + if (hangup_func_arg) { + code = switch_mprintf("%s(%s,%s)", hangup_func_str, hook_state == CS_HANGUP ? "hangup" : "transfer", hangup_func_arg); + } else { + code = switch_mprintf("%s(%s)", hangup_func_str, hook_state == CS_HANGUP ? "hangup" : "transfer"); + } + Perl_eval_pv(my_perl, code, TRUE); free(code); } @@ -105,7 +118,7 @@ } -void Session::setHangupHook(char *func) { +void Session::setHangupHook(char *func, char *arg) { sanity_check_noreturn; @@ -116,6 +129,9 @@ switch_channel_set_private(channel, "CoreSession", this); hook_state = switch_channel_get_state(channel); switch_core_event_hook_add_state_change(session, perl_hanguphook); + if (arg) { + hangup_func_arg = strdup(func); + } } } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch_perl.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch_perl.h (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/freeswitch_perl.h Tue May 13 23:37:33 2008 @@ -17,6 +17,7 @@ #include <switch_cpp.h> +namespace PERL { class Session : public CoreSession { private: virtual void do_hangup_hook(); @@ -36,13 +37,14 @@ virtual switch_status_t run_dtmf_callback(void *input, switch_input_type_t itype); void setInputCallback(char *cbfunc, char *funcargs); - void setHangupHook(char *func); + void setHangupHook(char *func, char *arg=NULL); bool ready(); char *cb_function; char *cb_arg; char *hangup_func_str; + char *hangup_func_arg; void setPERL(PerlInterpreter *pi); }; - +} #endif Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/hack.diff ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/hack.diff (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/hack.diff Tue May 13 23:37:33 2008 @@ -1,30 +1,29 @@ ---- mod_perl_wrap.cpp 2008-05-01 18:05:28.000000000 -0400 -+++ old.cpp 2008-05-01 18:05:51.000000000 -0400 - -@@ -6293,7 +6293,7 @@ +--- mod_perl_wrap2.cpp 2008-05-11 20:28:24.000000000 -0400 ++++ mod_perl_wrap.cpp 2008-05-11 20:26:06.000000000 -0400 +@@ -6754,7 +6754,7 @@ if ((items < 0) || (items > 0)) { SWIG_croak("Usage: new_Session();"); } -- result = (Session *)new Session(); -+ result = (Session *)new Session(); result->setPERL(my_perl); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; +- result = (PERL::Session *)new PERL::Session(); result->setPERL(my_perl); ++ result = (PERL::Session *)new PERL::Session(); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; XSRETURN(argvi); fail: -@@ -6320,7 +6320,7 @@ +@@ -6781,7 +6781,7 @@ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Session" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); -- result = (Session *)new Session(arg1); -+ result = (Session *)new Session(arg1); result->setPERL(my_perl); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; +- result = (PERL::Session *)new PERL::Session(arg1); result->setPERL(my_perl); ++ result = (PERL::Session *)new PERL::Session(arg1); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; if (alloc1 == SWIG_NEWOBJ) delete[] buf1; XSRETURN(argvi); -@@ -6348,7 +6348,7 @@ +@@ -6809,7 +6809,7 @@ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Session" "', argument " "1"" of type '" "switch_core_session_t *""'"); } arg1 = reinterpret_cast< switch_core_session_t * >(argp1); -- result = (Session *)new Session(arg1); -+ result = (Session *)new Session(arg1); result->setPERL(my_perl); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; +- result = (PERL::Session *)new PERL::Session(arg1); result->setPERL(my_perl); ++ result = (PERL::Session *)new PERL::Session(arg1); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; XSRETURN(argvi); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/mod_perl.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/mod_perl.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/mod_perl.c Tue May 13 23:37:33 2008 @@ -311,6 +311,12 @@ } SWITCH_STANDARD_API(perlrun_api_function) { + + if (switch_strlen_zero(cmd)) { + stream->write_function(stream, "-ERR Missing args.\n"); + return SWITCH_STATUS_SUCCESS; + } + perl_thread(cmd); stream->write_function(stream, "+OK\n"); return SWITCH_STATUS_SUCCESS; @@ -319,6 +325,12 @@ SWITCH_STANDARD_API(perl_api_function) { struct perl_o po = { 0 }; + + if (switch_strlen_zero(cmd)) { + stream->write_function(stream, "-ERR Missing args.\n"); + return SWITCH_STATUS_SUCCESS; + } + po.cmd = strdup(cmd); po.stream = stream; po.session = session; @@ -411,10 +423,14 @@ ); Perl_safe_eval(my_perl, code); + if (params) { + mod_perl_conjure_event(my_perl, params, "params"); + } + perl_run(my_perl); - str = SvPV(get_sv("XML_STRING", FALSE), n_a); + str = SvPV(get_sv("XML_STRING", TRUE), n_a); - if (str) { + if (!switch_strlen_zero(str)) { if (switch_strlen_zero(str)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No Result\n"); } else if (!(xml = switch_xml_parse_str(str, strlen(str)))) { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/mod_perl_wrap.cpp ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/mod_perl_wrap.cpp (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_perl/mod_perl_wrap.cpp Tue May 13 23:37:33 2008 @@ -1450,8 +1450,8 @@ #define SWIGTYPE_p_CoreSession swig_types[1] #define SWIGTYPE_p_Event swig_types[2] #define SWIGTYPE_p_IVRMenu swig_types[3] -#define SWIGTYPE_p_PerlInterpreter swig_types[4] -#define SWIGTYPE_p_Session swig_types[5] +#define SWIGTYPE_p_PERL__Session swig_types[4] +#define SWIGTYPE_p_PerlInterpreter swig_types[5] #define SWIGTYPE_p_Stream swig_types[6] #define SWIGTYPE_p_char swig_types[7] #define SWIGTYPE_p_input_callback_state swig_types[8] @@ -4661,6 +4661,45 @@ } +XS(_wrap_CoreSession_process_callback_result) { + { + CoreSession *arg1 = (CoreSession *) 0 ; + char *arg2 = (char *) 0 ; + switch_status_t result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: CoreSession_process_callback_result(self,ret);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_CoreSession, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_process_callback_result" "', argument " "1"" of type '" "CoreSession *""'"); + } + arg1 = reinterpret_cast< CoreSession * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_process_callback_result" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (arg1)->process_callback_result(arg2); + ST(argvi) = SWIG_NewPointerObj((new switch_status_t(static_cast< const switch_status_t& >(result))), SWIGTYPE_p_switch_status_t, SWIG_POINTER_OWN | 0); argvi++ ; + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + XS(_wrap_CoreSession_recordFile__SWIG_0) { { CoreSession *arg1 = (CoreSession *) 0 ; @@ -6243,6 +6282,71 @@ } +XS(_wrap_CoreSession_setEventData) { + { + CoreSession *arg1 = (CoreSession *) 0 ; + Event *arg2 = (Event *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: CoreSession_setEventData(self,e);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_CoreSession, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_setEventData" "', argument " "1"" of type '" "CoreSession *""'"); + } + arg1 = reinterpret_cast< CoreSession * >(argp1); + res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_Event, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_setEventData" "', argument " "2"" of type '" "Event *""'"); + } + arg2 = reinterpret_cast< Event * >(argp2); + (arg1)->setEventData(arg2); + + + + XSRETURN(argvi); + fail: + + + SWIG_croak_null(); + } +} + + +XS(_wrap_CoreSession_getXMLCDR) { + { + CoreSession *arg1 = (CoreSession *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: CoreSession_getXMLCDR(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_CoreSession, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_getXMLCDR" "', argument " "1"" of type '" "CoreSession *""'"); + } + arg1 = reinterpret_cast< CoreSession * >(argp1); + result = (char *)(arg1)->getXMLCDR(); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + XS(_wrap_CoreSession_begin_allow_threads) { { CoreSession *arg1 = (CoreSession *) 0 ; @@ -6643,15 +6747,15 @@ XS(_wrap_new_Session__SWIG_0) { { - Session *result = 0 ; + PERL::Session *result = 0 ; int argvi = 0; dXSARGS; if ((items < 0) || (items > 0)) { SWIG_croak("Usage: new_Session();"); } - result = (Session *)new Session(); result->setPERL(my_perl); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + result = (PERL::Session *)new PERL::Session(); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; XSRETURN(argvi); fail: SWIG_croak_null(); @@ -6662,7 +6766,7 @@ XS(_wrap_new_Session__SWIG_1) { { char *arg1 = (char *) 0 ; - Session *result = 0 ; + PERL::Session *result = 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; @@ -6677,8 +6781,8 @@ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Session" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); - result = (Session *)new Session(arg1); result->setPERL(my_perl); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + result = (PERL::Session *)new PERL::Session(arg1); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; if (alloc1 == SWIG_NEWOBJ) delete[] buf1; XSRETURN(argvi); fail: @@ -6691,7 +6795,7 @@ XS(_wrap_new_Session__SWIG_2) { { switch_core_session_t *arg1 = (switch_core_session_t *) 0 ; - Session *result = 0 ; + PERL::Session *result = 0 ; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; @@ -6705,8 +6809,8 @@ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Session" "', argument " "1"" of type '" "switch_core_session_t *""'"); } arg1 = reinterpret_cast< switch_core_session_t * >(argp1); - result = (Session *)new Session(arg1); result->setPERL(my_perl); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + result = (PERL::Session *)new PERL::Session(arg1); + ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; XSRETURN(argvi); fail: @@ -6789,7 +6893,7 @@ XS(_wrap_delete_Session) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; @@ -6798,11 +6902,11 @@ if ((items < 1) || (items > 1)) { SWIG_croak("Usage: delete_Session(self);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, SWIG_POINTER_DISOWN | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Session" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_Session" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); delete arg1; @@ -6817,7 +6921,7 @@ XS(_wrap_Session_begin_allow_threads) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; bool result; void *argp1 = 0 ; int res1 = 0 ; @@ -6827,11 +6931,11 @@ if ((items < 1) || (items > 1)) { SWIG_croak("Usage: Session_begin_allow_threads(self);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_begin_allow_threads" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_begin_allow_threads" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); result = (bool)(arg1)->begin_allow_threads(); ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; @@ -6845,7 +6949,7 @@ XS(_wrap_Session_end_allow_threads) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; bool result; void *argp1 = 0 ; int res1 = 0 ; @@ -6855,11 +6959,11 @@ if ((items < 1) || (items > 1)) { SWIG_croak("Usage: Session_end_allow_threads(self);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_end_allow_threads" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_end_allow_threads" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); result = (bool)(arg1)->end_allow_threads(); ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; @@ -6873,7 +6977,7 @@ XS(_wrap_Session_check_hangup_hook) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; @@ -6882,11 +6986,11 @@ if ((items < 1) || (items > 1)) { SWIG_croak("Usage: Session_check_hangup_hook(self);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_check_hangup_hook" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_check_hangup_hook" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); (arg1)->check_hangup_hook(); @@ -6900,7 +7004,7 @@ XS(_wrap_Session_run_dtmf_callback) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; void *arg2 = (void *) 0 ; switch_input_type_t arg3 ; switch_status_t result; @@ -6915,11 +7019,11 @@ if ((items < 3) || (items > 3)) { SWIG_croak("Usage: Session_run_dtmf_callback(self,input,itype);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_run_dtmf_callback" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_run_dtmf_callback" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); res2 = SWIG_ConvertPtr(ST(1),SWIG_as_voidptrptr(&arg2), 0, 0); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_run_dtmf_callback" "', argument " "2"" of type '" "void *""'"); @@ -6950,7 +7054,7 @@ XS(_wrap_Session_setInputCallback) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; char *arg2 = (char *) 0 ; char *arg3 = (char *) 0 ; void *argp1 = 0 ; @@ -6967,11 +7071,11 @@ if ((items < 3) || (items > 3)) { SWIG_croak("Usage: Session_setInputCallback(self,cbfunc,funcargs);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setInputCallback" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setInputCallback" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_setInputCallback" "', argument " "2"" of type '" "char *""'"); @@ -6997,9 +7101,58 @@ } -XS(_wrap_Session_setHangupHook) { +XS(_wrap_Session_setHangupHook__SWIG_0) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; + char *arg2 = (char *) 0 ; + char *arg3 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int res3 ; + char *buf3 = 0 ; + int alloc3 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 3) || (items > 3)) { + SWIG_croak("Usage: Session_setHangupHook(self,func,arg);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setHangupHook" "', argument " "1"" of type '" "PERL::Session *""'"); + } + arg1 = reinterpret_cast< PERL::Session * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_setHangupHook" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + res3 = SWIG_AsCharPtrAndSize(ST(2), &buf3, NULL, &alloc3); + if (!SWIG_IsOK(res3)) { + SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "Session_setHangupHook" "', argument " "3"" of type '" "char *""'"); + } + arg3 = reinterpret_cast< char * >(buf3); + (arg1)->setHangupHook(arg2,arg3); + + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + if (alloc3 == SWIG_NEWOBJ) delete[] buf3; + SWIG_croak_null(); + } +} + + +XS(_wrap_Session_setHangupHook__SWIG_1) { + { + PERL::Session *arg1 = (PERL::Session *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; @@ -7012,11 +7165,11 @@ if ((items < 2) || (items > 2)) { SWIG_croak("Usage: Session_setHangupHook(self,func);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setHangupHook" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setHangupHook" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_setHangupHook" "', argument " "2"" of type '" "char *""'"); @@ -7035,9 +7188,95 @@ } +XS(_wrap_Session_setHangupHook) { + dXSARGS; + + { + unsigned long _index = 0; + SWIG_TypeRank _rank = 0; + if (items == 2) { + SWIG_TypeRank _ranki = 0; + SWIG_TypeRank _rankm = 0; + SWIG_TypeRank _pi = 1; + int _v = 0; + { + void *vptr = 0; + int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_PERL__Session, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_1; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + { + int res = SWIG_AsCharPtrAndSize(ST(1), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_1; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + if (!_index || (_ranki < _rank)) { + _rank = _ranki; _index = 1; + if (_rank == _rankm) goto dispatch; + } + } + check_1: + + if (items == 3) { + SWIG_TypeRank _ranki = 0; + SWIG_TypeRank _rankm = 0; + SWIG_TypeRank _pi = 1; + int _v = 0; + { + void *vptr = 0; + int res = SWIG_ConvertPtr(ST(0), &vptr, SWIGTYPE_p_PERL__Session, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_2; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + { + int res = SWIG_AsCharPtrAndSize(ST(1), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_2; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + { + int res = SWIG_AsCharPtrAndSize(ST(2), 0, NULL, 0); + _v = SWIG_CheckState(res); + } + if (!_v) goto check_2; + _ranki += _v*_pi; + _rankm += _pi; + _pi *= SWIG_MAXCASTRANK; + if (!_index || (_ranki < _rank)) { + _rank = _ranki; _index = 2; + if (_rank == _rankm) goto dispatch; + } + } + check_2: + + dispatch: + switch(_index) { + case 1: + ++PL_markstack_ptr; SWIG_CALLXS(_wrap_Session_setHangupHook__SWIG_1); return; + case 2: + ++PL_markstack_ptr; SWIG_CALLXS(_wrap_Session_setHangupHook__SWIG_0); return; + } + } + + croak("No matching function for overloaded 'Session_setHangupHook'"); + XSRETURN(0); +} + + XS(_wrap_Session_ready) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; bool result; void *argp1 = 0 ; int res1 = 0 ; @@ -7047,11 +7286,11 @@ if ((items < 1) || (items > 1)) { SWIG_croak("Usage: Session_ready(self);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_ready" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_ready" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); result = (bool)(arg1)->ready(); ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ; @@ -7065,7 +7304,7 @@ XS(_wrap_Session_cb_function_set) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; @@ -7078,11 +7317,11 @@ if ((items < 2) || (items > 2)) { SWIG_croak("Usage: Session_cb_function_set(self,cb_function);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_function_set" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_function_set" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_cb_function_set" "', argument " "2"" of type '" "char *""'"); @@ -7109,7 +7348,7 @@ XS(_wrap_Session_cb_function_get) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; char *result = 0 ; void *argp1 = 0 ; int res1 = 0 ; @@ -7119,11 +7358,11 @@ if ((items < 1) || (items > 1)) { SWIG_croak("Usage: Session_cb_function_get(self);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_function_get" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_function_get" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); result = (char *) ((arg1)->cb_function); ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; @@ -7137,7 +7376,7 @@ XS(_wrap_Session_cb_arg_set) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; @@ -7150,11 +7389,11 @@ if ((items < 2) || (items > 2)) { SWIG_croak("Usage: Session_cb_arg_set(self,cb_arg);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_arg_set" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_arg_set" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_cb_arg_set" "', argument " "2"" of type '" "char *""'"); @@ -7181,7 +7420,7 @@ XS(_wrap_Session_cb_arg_get) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; char *result = 0 ; void *argp1 = 0 ; int res1 = 0 ; @@ -7191,11 +7430,11 @@ if ((items < 1) || (items > 1)) { SWIG_croak("Usage: Session_cb_arg_get(self);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_arg_get" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_cb_arg_get" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); result = (char *) ((arg1)->cb_arg); ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; @@ -7209,7 +7448,7 @@ XS(_wrap_Session_hangup_func_str_set) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; char *arg2 = (char *) 0 ; void *argp1 = 0 ; int res1 = 0 ; @@ -7222,11 +7461,11 @@ if ((items < 2) || (items > 2)) { SWIG_croak("Usage: Session_hangup_func_str_set(self,hangup_func_str);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_str_set" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_str_set" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_hangup_func_str_set" "', argument " "2"" of type '" "char *""'"); @@ -7253,7 +7492,7 @@ XS(_wrap_Session_hangup_func_str_get) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; char *result = 0 ; void *argp1 = 0 ; int res1 = 0 ; @@ -7263,11 +7502,11 @@ if ((items < 1) || (items > 1)) { SWIG_croak("Usage: Session_hangup_func_str_get(self);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_str_get" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_str_get" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); result = (char *) ((arg1)->hangup_func_str); ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; @@ -7279,9 +7518,81 @@ } +XS(_wrap_Session_hangup_func_arg_set) { + { + PERL::Session *arg1 = (PERL::Session *) 0 ; + char *arg2 = (char *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 2) || (items > 2)) { + SWIG_croak("Usage: Session_hangup_func_arg_set(self,hangup_func_arg);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_arg_set" "', argument " "1"" of type '" "PERL::Session *""'"); + } + arg1 = reinterpret_cast< PERL::Session * >(argp1); + res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_hangup_func_arg_set" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + if (arg1->hangup_func_arg) delete[] arg1->hangup_func_arg; + if (arg2) { + size_t size = strlen(reinterpret_cast< const char * >(arg2)) + 1; + arg1->hangup_func_arg = (char *)reinterpret_cast< char* >(memcpy((new char[size]), reinterpret_cast< const char * >(arg2), sizeof(char)*(size))); + } else { + arg1->hangup_func_arg = 0; + } + + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + XSRETURN(argvi); + fail: + + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + SWIG_croak_null(); + } +} + + +XS(_wrap_Session_hangup_func_arg_get) { + { + PERL::Session *arg1 = (PERL::Session *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + int argvi = 0; + dXSARGS; + + if ((items < 1) || (items > 1)) { + SWIG_croak("Usage: Session_hangup_func_arg_get(self);"); + } + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_hangup_func_arg_get" "', argument " "1"" of type '" "PERL::Session *""'"); + } + arg1 = reinterpret_cast< PERL::Session * >(argp1); + result = (char *) ((arg1)->hangup_func_arg); + ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; + + XSRETURN(argvi); + fail: + + SWIG_croak_null(); + } +} + + XS(_wrap_Session_setPERL) { { - Session *arg1 = (Session *) 0 ; + PERL::Session *arg1 = (PERL::Session *) 0 ; PerlInterpreter *arg2 = (PerlInterpreter *) 0 ; void *argp1 = 0 ; int res1 = 0 ; @@ -7293,11 +7604,11 @@ if ((items < 2) || (items > 2)) { SWIG_croak("Usage: Session_setPERL(self,pi);"); } - res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_Session, 0 | 0 ); + res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_PERL__Session, 0 | 0 ); if (!SWIG_IsOK(res1)) { - SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setPERL" "', argument " "1"" of type '" "Session *""'"); + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Session_setPERL" "', argument " "1"" of type '" "PERL::Session *""'"); } - arg1 = reinterpret_cast< Session * >(argp1); + arg1 = reinterpret_cast< PERL::Session * >(argp1); res2 = SWIG_ConvertPtr(ST(1), &argp2,SWIGTYPE_p_PerlInterpreter, 0 | 0 ); if (!SWIG_IsOK(res2)) { SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Session_setPERL" "', argument " "2"" of type '" "PerlInterpreter *""'"); @@ -7319,15 +7630,15 @@ /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ -static void *_p_SessionTo_p_CoreSession(void *x, int *newmemory) { - return (void *)((CoreSession *) ((Session *) x)); +static void *_p_PERL__SessionTo_p_CoreSession(void *x, int *newmemory) { + return (void *)((CoreSession *) ((PERL::Session *) x)); } static swig_type_info _swigt__p_API = {"_p_API", "API *", 0, 0, (void*)"freeswitch::API", 0}; static swig_type_info _swigt__p_CoreSession = {"_p_CoreSession", "CoreSession *", 0, 0, (void*)"freeswitch::CoreSession", 0}; static swig_type_info _swigt__p_Event = {"_p_Event", "Event *", 0, 0, (void*)"freeswitch::Event", 0}; static swig_type_info _swigt__p_IVRMenu = {"_p_IVRMenu", "IVRMenu *", 0, 0, (void*)"freeswitch::IVRMenu", 0}; +static swig_type_info _swigt__p_PERL__Session = {"_p_PERL__Session", "PERL::Session *", 0, 0, (void*)"freeswitch::Session", 0}; static swig_type_info _swigt__p_PerlInterpreter = {"_p_PerlInterpreter", "PerlInterpreter *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_Session = {"_p_Session", "Session *", 0, 0, (void*)"freeswitch::Session", 0}; static swig_type_info _swigt__p_Stream = {"_p_Stream", "Stream *", 0, 0, (void*)"freeswitch::Stream", 0}; static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_input_callback_state = {"_p_input_callback_state", "input_callback_state_t *|input_callback_state *", 0, 0, (void*)"freeswitch::input_callback_state_t", 0}; @@ -7348,8 +7659,8 @@ &_swigt__p_CoreSession, &_swigt__p_Event, &_swigt__p_IVRMenu, + &_swigt__p_PERL__Session, &_swigt__p_PerlInterpreter, - &_swigt__p_Session, &_swigt__p_Stream, &_swigt__p_char, &_swigt__p_input_callback_state, @@ -7367,11 +7678,11 @@ }; static swig_cast_info _swigc__p_API[] = { {&_swigt__p_API, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_CoreSession[] = { {&_swigt__p_CoreSession, 0, 0, 0}, {&_swigt__p_Session, _p_SessionTo_p_CoreSession, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_CoreSession[] = { {&_swigt__p_CoreSession, 0, 0, 0}, {&_swigt__p_PERL__Session, _p_PERL__SessionTo_p_CoreSession, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_Event[] = { {&_swigt__p_Event, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_IVRMenu[] = { {&_swigt__p_IVRMenu, 0, 0, 0},{0, 0, 0, 0}}; +static swig_cast_info _swigc__p_PERL__Session[] = { {&_swigt__p_PERL__Session, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_PerlInterpreter[] = { {&_swigt__p_PerlInterpreter, 0, 0, 0},{0, 0, 0, 0}}; -static swig_cast_info _swigc__p_Session[] = { {&_swigt__p_Session, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_Stream[] = { {&_swigt__p_Stream, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}}; static swig_cast_info _swigc__p_input_callback_state[] = { {&_swigt__p_input_callback_state, 0, 0, 0},{0, 0, 0, 0}}; @@ -7392,8 +7703,8 @@ _swigc__p_CoreSession, _swigc__p_Event, _swigc__p_IVRMenu, + _swigc__p_PERL__Session, _swigc__p_PerlInterpreter, - _swigc__p_Session, _swigc__p_Stream, _swigc__p_char, _swigc__p_input_callback_state, @@ -7484,6 +7795,7 @@ {"freeswitchc::CoreSession_setPrivate", _wrap_CoreSession_setPrivate}, {"freeswitchc::CoreSession_getPrivate", _wrap_CoreSession_getPrivate}, {"freeswitchc::CoreSession_getVariable", _wrap_CoreSession_getVariable}, +{"freeswitchc::CoreSession_process_callback_result", _wrap_CoreSession_process_callback_result}, {"freeswitchc::CoreSession_recordFile", _wrap_CoreSession_recordFile}, {"freeswitchc::CoreSession_setCallerData", _wrap_CoreSession_setCallerData}, {"freeswitchc::CoreSession_originate", _wrap_CoreSession_originate}, @@ -7503,6 +7815,8 @@ {"freeswitchc::CoreSession_ready", _wrap_CoreSession_ready}, {"freeswitchc::CoreSession_execute", _wrap_CoreSession_execute}, {"freeswitchc::CoreSession_sendEvent", _wrap_CoreSession_sendEvent}, +{"freeswitchc::CoreSession_setEventData", _wrap_CoreSession_setEventData}, +{"freeswitchc::CoreSession_getXMLCDR", _wrap_CoreSession_getXMLCDR}, {"freeswitchc::CoreSession_begin_allow_threads", _wrap_CoreSession_begin_allow_threads}, {"freeswitchc::CoreSession_end_allow_threads", _wrap_CoreSession_end_allow_threads}, {"freeswitchc::CoreSession_get_uuid", _wrap_CoreSession_get_uuid}, @@ -7529,6 +7843,8 @@ {"freeswitchc::Session_cb_arg_get", _wrap_Session_cb_arg_get}, {"freeswitchc::Session_hangup_func_str_set", _wrap_Session_hangup_func_str_set}, {"freeswitchc::Session_hangup_func_str_get", _wrap_Session_hangup_func_str_get}, +{"freeswitchc::Session_hangup_func_arg_set", _wrap_Session_hangup_func_arg_set}, +{"freeswitchc::Session_hangup_func_arg_get", _wrap_Session_hangup_func_arg_get}, {"freeswitchc::Session_setPERL", _wrap_Session_setPERL}, {0,0} }; @@ -7845,7 +8161,7 @@ SWIG_TypeClientData(SWIGTYPE_p_Stream, (void*) "freeswitch::Stream"); SWIG_TypeClientData(SWIGTYPE_p_Event, (void*) "freeswitch::Event"); SWIG_TypeClientData(SWIGTYPE_p_CoreSession, (void*) "freeswitch::CoreSession"); - SWIG_TypeClientData(SWIGTYPE_p_Session, (void*) "freeswitch::Session"); + SWIG_TypeClientData(SWIGTYPE_p_PERL__Session, (void*) "freeswitch::Session"); ST(0) = &PL_sv_yes; XSRETURN(1); } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/freeswitch.py ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/freeswitch.py (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/freeswitch.py Tue May 13 23:37:33 2008 @@ -1,5 +1,5 @@ # This file was automatically generated by SWIG (http://www.swig.org). -# Version 1.3.31 +# Version 1.3.35 # # Don't modify this file, modify the SWIG interface instead. # This file is compatible with both classic and new-style classes. @@ -169,7 +169,7 @@ __setattr__ = lambda self, name, value: _swig_setattr(self, CoreSession, name, value) __swig_getmethods__ = {} __getattr__ = lambda self, name: _swig_getattr(self, CoreSession, name) - def __init__(self): raise AttributeError, "No constructor defined" + def __init__(self, *args, **kwargs): raise AttributeError, "No constructor defined" __repr__ = _swig_repr __swig_destroy__ = _freeswitch.delete_CoreSession __del__ = lambda self : None; @@ -198,6 +198,7 @@ def setPrivate(*args): return _freeswitch.CoreSession_setPrivate(*args) def getPrivate(*args): return _freeswitch.CoreSession_getPrivate(*args) def getVariable(*args): return _freeswitch.CoreSession_getVariable(*args) + def process_callback_result(*args): return _freeswitch.CoreSession_process_callback_result(*args) def recordFile(*args): return _freeswitch.CoreSession_recordFile(*args) def setCallerData(*args): return _freeswitch.CoreSession_setCallerData(*args) def originate(*args): return _freeswitch.CoreSession_originate(*args) @@ -217,6 +218,8 @@ def ready(*args): return _freeswitch.CoreSession_ready(*args) def execute(*args): return _freeswitch.CoreSession_execute(*args) def sendEvent(*args): return _freeswitch.CoreSession_sendEvent(*args) + def setEventData(*args): return _freeswitch.CoreSession_setEventData(*args) + def getXMLCDR(*args): return _freeswitch.CoreSession_getXMLCDR(*args) def begin_allow_threads(*args): return _freeswitch.CoreSession_begin_allow_threads(*args) def end_allow_threads(*args): return _freeswitch.CoreSession_end_allow_threads(*args) def get_uuid(*args): return _freeswitch.CoreSession_get_uuid(*args) Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/mod_python_wrap.cpp ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/mod_python_wrap.cpp (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/mod_python_wrap.cpp Tue May 13 23:37:33 2008 @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 1.3.31 + * Version 1.3.35 * * This file is not intended to be easily readable and contains a number of * coding conventions designed to improve portability and efficiency. Do not make @@ -12,7 +12,7 @@ #define SWIG_PYTHON_DIRECTOR_NO_VTABLE #ifdef __cplusplus -template<class T> class SwigValueWrapper { +template<typename T> class SwigValueWrapper { T *tt; public: SwigValueWrapper() : tt(0) { } @@ -25,6 +25,10 @@ private: SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs); }; + +template <typename T> T SwigValueInit() { + return T(); +} #endif /* ----------------------------------------------------------------------------- @@ -34,14 +38,14 @@ /* template workaround for compilers that cannot correctly implement the C++ standard */ #ifndef SWIGTEMPLATEDISAMBIGUATOR -# if defined(__SUNPRO_CC) -# if (__SUNPRO_CC <= 0x560) -# define SWIGTEMPLATEDISAMBIGUATOR template -# else -# define SWIGTEMPLATEDISAMBIGUATOR -# endif +# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560) +# define SWIGTEMPLATEDISAMBIGUATOR template +# elif defined(__HP_aCC) +/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */ +/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */ +# define SWIGTEMPLATEDISAMBIGUATOR template # else -# define SWIGTEMPLATEDISAMBIGUATOR +# define SWIGTEMPLATEDISAMBIGUATOR # endif #endif @@ -124,6 +128,12 @@ # define _CRT_SECURE_NO_DEPRECATE #endif +/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */ +#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE) +# define _SCL_SECURE_NO_DEPRECATE +#endif + + /* Python.h has to appear first */ #include <Python.h> @@ -137,7 +147,7 @@ /* This should only be incremented when either the layout of swig_type_info changes, or for whatever reason, the runtime changes incompatibly */ -#define SWIG_RUNTIME_VERSION "3" +#define SWIG_RUNTIME_VERSION "4" /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */ #ifdef SWIG_TYPE_TABLE @@ -172,6 +182,7 @@ /* Flags for pointer conversions */ #define SWIG_POINTER_DISOWN 0x1 +#define SWIG_CAST_NEW_MEMORY 0x2 /* Flags for new pointer objects */ #define SWIG_POINTER_OWN 0x1 @@ -312,10 +323,10 @@ extern "C" { #endif -typedef void *(*swig_converter_func)(void *); +typedef void *(*swig_converter_func)(void *, int *); typedef struct swig_type_info *(*swig_dycast_func)(void **); -/* Structure to store inforomation on one type */ +/* Structure to store information on one type */ typedef struct swig_type_info { const char *name; /* mangled name of this type */ const char *str; /* human readable name of this type */ @@ -360,7 +371,7 @@ while ((*f2 == ' ') && (f2 != l2)) ++f2; if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1; } - return (l1 - f1) - (l2 - f2); + return (int)((l1 - f1) - (l2 - f2)); } /* @@ -442,8 +453,8 @@ Cast a pointer up an inheritance hierarchy */ SWIGRUNTIMEINLINE void * -SWIG_TypeCast(swig_cast_info *ty, void *ptr) { - return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr); +SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) { + return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory); } /* @@ -867,7 +878,7 @@ Py_DECREF(old_str); Py_DECREF(value); } else { - PyErr_Format(PyExc_RuntimeError, mesg); + PyErr_SetString(PyExc_RuntimeError, mesg); } } @@ -1107,14 +1118,14 @@ /* Unpack the argument tuple */ SWIGINTERN int -SWIG_Python_UnpackTuple(PyObject *args, const char *name, int min, int max, PyObject **objs) +SWIG_Python_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, PyObject **objs) { if (!args) { if (!min && !max) { return 1; } else { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none", - name, (min == max ? "" : "at least "), min); + name, (min == max ? "" : "at least "), (int)min); return 0; } } @@ -1122,14 +1133,14 @@ PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple"); return 0; } else { - register int l = PyTuple_GET_SIZE(args); + register Py_ssize_t l = PyTuple_GET_SIZE(args); if (l < min) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", - name, (min == max ? "" : "at least "), min, l); + name, (min == max ? "" : "at least "), (int)min, (int)l); return 0; } else if (l > max) { PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d", - name, (min == max ? "" : "at most "), max, l); + name, (min == max ? "" : "at most "), (int)max, (int)l); return 0; } else { register int i; @@ -1427,7 +1438,7 @@ { PySwigObject *sobj = (PySwigObject *) v; PyObject *next = sobj->next; - if (sobj->own) { + if (sobj->own == SWIG_POINTER_OWN) { swig_type_info *ty = sobj->ty; PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0; PyObject *destroy = data ? data->destroy : 0; @@ -1445,12 +1456,13 @@ res = ((*meth)(mself, v)); } Py_XDECREF(res); - } else { - const char *name = SWIG_TypePrettyName(ty); + } #if !defined(SWIG_PYTHON_SILENT_MEMLEAK) - printf("swig/python detected a memory leak of type '%s', no destructor found.\n", name); -#endif + else { + const char *name = SWIG_TypePrettyName(ty); + printf("swig/python detected a memory leak of type '%s', no destructor found.\n", (name ? name : "unknown")); } +#endif } Py_XDECREF(next); PyObject_DEL(v); @@ -1608,9 +1620,11 @@ (unaryfunc)0, /*nb_float*/ (unaryfunc)PySwigObject_oct, /*nb_oct*/ (unaryfunc)PySwigObject_hex, /*nb_hex*/ -#if PY_VERSION_HEX >= 0x02020000 - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ -#elif PY_VERSION_HEX >= 0x02000000 +#if PY_VERSION_HEX >= 0x02050000 /* 2.5.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_index */ +#elif PY_VERSION_HEX >= 0x02020000 /* 2.2.0 */ + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ +#elif PY_VERSION_HEX >= 0x02000000 /* 2.0.0 */ 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */ #endif }; @@ -1953,7 +1967,7 @@ SWIGRUNTIME int SWIG_Python_AcquirePtr(PyObject *obj, int own) { - if (own) { + if (own == SWIG_POINTER_OWN) { PySwigObject *sobj = SWIG_Python_GetSwigThis(obj); if (sobj) { int oldown = sobj->own; @@ -1974,6 +1988,8 @@ return SWIG_OK; } else { PySwigObject *sobj = SWIG_Python_GetSwigThis(obj); + if (own) + *own = 0; while (sobj) { void *vptr = sobj->ptr; if (ty) { @@ -1987,7 +2003,15 @@ if (!tc) { sobj = (PySwigObject *)sobj->next; } else { - if (ptr) *ptr = SWIG_TypeCast(tc,vptr); + if (ptr) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + if (newmemory == SWIG_CAST_NEW_MEMORY) { + assert(own); + if (own) + *own = *own | SWIG_CAST_NEW_MEMORY; + } + } break; } } @@ -1997,7 +2021,8 @@ } } if (sobj) { - if (own) *own = sobj->own; + if (own) + *own = *own | sobj->own; if (flags & SWIG_POINTER_DISOWN) { sobj->own = 0; } @@ -2062,8 +2087,13 @@ } if (ty) { swig_cast_info *tc = SWIG_TypeCheck(desc,ty); - if (!tc) return SWIG_ERROR; - *ptr = SWIG_TypeCast(tc,vptr); + if (tc) { + int newmemory = 0; + *ptr = SWIG_TypeCast(tc,vptr,&newmemory); + assert(!newmemory); /* newmemory handling not yet implemented */ + } else { + return SWIG_ERROR; + } } else { *ptr = vptr; } @@ -2505,7 +2535,7 @@ #define SWIG_name "_freeswitch" -#define SWIGVERSION 0x010331 +#define SWIGVERSION 0x010335 #define SWIG_VERSION SWIGVERSION @@ -2533,7 +2563,9 @@ PyObject_ptr(PyObject *obj, bool initial_ref = true) :_obj(obj) { - if (initial_ref) Py_XINCREF(_obj); + if (initial_ref) { + Py_XINCREF(_obj); + } } PyObject_ptr & operator=(const PyObject_ptr& item) @@ -2649,14 +2681,12 @@ #include <limits.h> -#ifndef LLONG_MIN -# define LLONG_MIN LONG_LONG_MIN -#endif -#ifndef LLONG_MAX -# define LLONG_MAX LONG_LONG_MAX -#endif -#ifndef ULLONG_MAX -# define ULLONG_MAX ULONG_LONG_MAX +#if !defined(SWIG_NO_LLONG_MAX) +# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__) +# define LLONG_MAX __LONG_LONG_MAX__ +# define LLONG_MIN (-LLONG_MAX - 1LL) +# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) +# endif #endif @@ -2914,18 +2944,11 @@ SWIGINTERN int SWIG_AsVal_bool (PyObject *obj, bool *val) { - if (obj == Py_True) { - if (val) *val = true; - return SWIG_OK; - } else if (obj == Py_False) { - if (val) *val = false; - return SWIG_OK; - } else { - long v = 0; - int res = SWIG_AddCast(SWIG_AsVal_long (obj, val ? &v : 0)); - if (SWIG_IsOK(res) && val) *val = v ? true : false; - return res; - } + int r = PyObject_IsTrue(obj); + if (r == -1) + return SWIG_ERROR; + if (val) *val = r ? true : false; + return SWIG_OK; } #ifdef __cplusplus @@ -3265,7 +3288,7 @@ SWIGINTERN PyObject *IVRMenu_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; - if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_IVRMenu, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } @@ -3387,7 +3410,7 @@ SWIGINTERN PyObject *API_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; - if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_API, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } @@ -3643,7 +3666,7 @@ SWIGINTERN PyObject *input_callback_state_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; - if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_input_callback_state, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } @@ -3689,7 +3712,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 1); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -3707,7 +3730,10 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_Stream'.\n Possible C/C++ prototypes are:\n Stream()\n Stream(switch_stream_handle_t *)\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_Stream'.\n" + " Possible C/C++ prototypes are:\n" + " Stream()\n" + " Stream(switch_stream_handle_t *)\n"); return NULL; } @@ -3791,7 +3817,7 @@ SWIGINTERN PyObject *Stream_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; - if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_Stream, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } @@ -4084,7 +4110,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 2); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -4134,7 +4160,12 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_Event'.\n Possible C/C++ prototypes are:\n Event(char const *,char const *)\n Event(char const *)\n Event(switch_event_t *,int)\n Event(switch_event_t *)\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_Event'.\n" + " Possible C/C++ prototypes are:\n" + " Event(char const *,char const *)\n" + " Event(char const *)\n" + " Event(switch_event_t *,int)\n" + " Event(switch_event_t *)\n"); return NULL; } @@ -4223,7 +4254,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 2); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -4251,7 +4282,10 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'Event_serialize'.\n Possible C/C++ prototypes are:\n serialize(char const *)\n serialize()\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'Event_serialize'.\n" + " Possible C/C++ prototypes are:\n" + " serialize(Event *,char const *)\n" + " serialize(Event *)\n"); return NULL; } @@ -4323,7 +4357,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 2); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -4351,7 +4385,10 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'Event_setPriority'.\n Possible C/C++ prototypes are:\n setPriority(switch_priority_t)\n setPriority()\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'Event_setPriority'.\n" + " Possible C/C++ prototypes are:\n" + " setPriority(Event *,switch_priority_t)\n" + " setPriority(Event *)\n"); return NULL; } @@ -4572,7 +4609,7 @@ SWIGINTERN PyObject *Event_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; - if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_Event, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } @@ -5029,7 +5066,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 2); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -5057,7 +5094,10 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_hangup'.\n Possible C/C++ prototypes are:\n hangup(char *)\n hangup()\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_hangup'.\n" + " Possible C/C++ prototypes are:\n" + " hangup(CoreSession *,char *)\n" + " hangup(CoreSession *)\n"); return NULL; } @@ -5215,6 +5255,40 @@ } +SWIGINTERN PyObject *_wrap_CoreSession_process_callback_result(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + CoreSession *arg1 = (CoreSession *) 0 ; + char *arg2 = (char *) 0 ; + switch_status_t result; + void *argp1 = 0 ; + int res1 = 0 ; + int res2 ; + char *buf2 = 0 ; + int alloc2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:CoreSession_process_callback_result",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_CoreSession, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_process_callback_result" "', argument " "1"" of type '" "CoreSession *""'"); + } + arg1 = reinterpret_cast< CoreSession * >(argp1); + res2 = SWIG_AsCharPtrAndSize(obj1, &buf2, NULL, &alloc2); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_process_callback_result" "', argument " "2"" of type '" "char *""'"); + } + arg2 = reinterpret_cast< char * >(buf2); + result = (arg1)->process_callback_result(arg2); + resultobj = SWIG_NewPointerObj((new switch_status_t(static_cast< const switch_status_t& >(result))), SWIGTYPE_p_switch_status_t, SWIG_POINTER_OWN | 0 ); + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return resultobj; +fail: + if (alloc2 == SWIG_NEWOBJ) delete[] buf2; + return NULL; +} + + SWIGINTERN PyObject *_wrap_CoreSession_recordFile__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; CoreSession *arg1 = (CoreSession *) 0 ; @@ -5411,7 +5485,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 5); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -5505,7 +5579,12 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_recordFile'.\n Possible C/C++ prototypes are:\n recordFile(char *,int,int,int)\n recordFile(char *,int,int)\n recordFile(char *,int)\n recordFile(char *)\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_recordFile'.\n" + " Possible C/C++ prototypes are:\n" + " recordFile(CoreSession *,char *,int,int,int)\n" + " recordFile(CoreSession *,char *,int,int)\n" + " recordFile(CoreSession *,char *,int)\n" + " recordFile(CoreSession *,char *)\n"); return NULL; } @@ -5656,7 +5735,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 4); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -5704,7 +5783,10 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_originate'.\n Possible C/C++ prototypes are:\n originate(CoreSession *,char *,int)\n originate(CoreSession *,char *)\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_originate'.\n" + " Possible C/C++ prototypes are:\n" + " originate(CoreSession *,CoreSession *,char *,int)\n" + " originate(CoreSession *,CoreSession *,char *)\n"); return NULL; } @@ -6231,7 +6313,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 3); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -6269,7 +6351,10 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_streamFile'.\n Possible C/C++ prototypes are:\n streamFile(char *,int)\n streamFile(char *)\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'CoreSession_streamFile'.\n" + " Possible C/C++ prototypes are:\n" + " streamFile(CoreSession *,char *,int)\n" + " streamFile(CoreSession *,char *)\n"); return NULL; } @@ -6474,6 +6559,58 @@ } +SWIGINTERN PyObject *_wrap_CoreSession_setEventData(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + CoreSession *arg1 = (CoreSession *) 0 ; + Event *arg2 = (Event *) 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + void *argp2 = 0 ; + int res2 = 0 ; + PyObject * obj0 = 0 ; + PyObject * obj1 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"OO:CoreSession_setEventData",&obj0,&obj1)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_CoreSession, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_setEventData" "', argument " "1"" of type '" "CoreSession *""'"); + } + arg1 = reinterpret_cast< CoreSession * >(argp1); + res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_Event, 0 | 0 ); + if (!SWIG_IsOK(res2)) { + SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "CoreSession_setEventData" "', argument " "2"" of type '" "Event *""'"); + } + arg2 = reinterpret_cast< Event * >(argp2); + (arg1)->setEventData(arg2); + resultobj = SWIG_Py_Void(); + return resultobj; +fail: + return NULL; +} + + +SWIGINTERN PyObject *_wrap_CoreSession_getXMLCDR(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { + PyObject *resultobj = 0; + CoreSession *arg1 = (CoreSession *) 0 ; + char *result = 0 ; + void *argp1 = 0 ; + int res1 = 0 ; + PyObject * obj0 = 0 ; + + if (!PyArg_ParseTuple(args,(char *)"O:CoreSession_getXMLCDR",&obj0)) SWIG_fail; + res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_CoreSession, 0 | 0 ); + if (!SWIG_IsOK(res1)) { + SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "CoreSession_getXMLCDR" "', argument " "1"" of type '" "CoreSession *""'"); + } + arg1 = reinterpret_cast< CoreSession * >(argp1); + result = (char *)(arg1)->getXMLCDR(); + resultobj = SWIG_FromCharPtr((const char *)result); + return resultobj; +fail: + return NULL; +} + + SWIGINTERN PyObject *_wrap_CoreSession_begin_allow_threads(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *resultobj = 0; CoreSession *arg1 = (CoreSession *) 0 ; @@ -6634,7 +6771,7 @@ SWIGINTERN PyObject *CoreSession_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; - if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_CoreSession, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } @@ -6885,7 +7022,7 @@ int ii; if (!PyTuple_Check(args)) SWIG_fail; - argc = PyObject_Length(args); + argc = (int)PyObject_Length(args); for (ii = 0; (ii < argc) && (ii < 1); ii++) { argv[ii] = PyTuple_GET_ITEM(args,ii); } @@ -6911,7 +7048,11 @@ } fail: - SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_PySession'.\n Possible C/C++ prototypes are:\n PySession()\n PySession(char *)\n PySession(switch_core_session_t *)\n"); + SWIG_SetErrorMsg(PyExc_NotImplementedError,"Wrong number of arguments for overloaded function 'new_PySession'.\n" + " Possible C/C++ prototypes are:\n" + " PySession()\n" + " PySession(char *)\n" + " PySession(switch_core_session_t *)\n"); return NULL; } @@ -7144,7 +7285,7 @@ SWIGINTERN PyObject *PySession_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { PyObject *obj; - if (!PyArg_ParseTuple(args,(char*)"O|swigregister", &obj)) return NULL; + if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL; SWIG_TypeNewClientData(SWIGTYPE_p_PySession, SWIG_NewClientData(obj)); return SWIG_Py_Void(); } @@ -7216,6 +7357,7 @@ { (char *)"CoreSession_setPrivate", _wrap_CoreSession_setPrivate, METH_VARARGS, NULL}, { (char *)"CoreSession_getPrivate", _wrap_CoreSession_getPrivate, METH_VARARGS, NULL}, { (char *)"CoreSession_getVariable", _wrap_CoreSession_getVariable, METH_VARARGS, NULL}, + { (char *)"CoreSession_process_callback_result", _wrap_CoreSession_process_callback_result, METH_VARARGS, NULL}, { (char *)"CoreSession_recordFile", _wrap_CoreSession_recordFile, METH_VARARGS, NULL}, { (char *)"CoreSession_setCallerData", _wrap_CoreSession_setCallerData, METH_VARARGS, NULL}, { (char *)"CoreSession_originate", _wrap_CoreSession_originate, METH_VARARGS, NULL}, @@ -7235,6 +7377,8 @@ { (char *)"CoreSession_ready", _wrap_CoreSession_ready, METH_VARARGS, NULL}, { (char *)"CoreSession_execute", _wrap_CoreSession_execute, METH_VARARGS, NULL}, { (char *)"CoreSession_sendEvent", _wrap_CoreSession_sendEvent, METH_VARARGS, NULL}, + { (char *)"CoreSession_setEventData", _wrap_CoreSession_setEventData, METH_VARARGS, NULL}, + { (char *)"CoreSession_getXMLCDR", _wrap_CoreSession_getXMLCDR, METH_VARARGS, NULL}, { (char *)"CoreSession_begin_allow_threads", _wrap_CoreSession_begin_allow_threads, METH_VARARGS, NULL}, { (char *)"CoreSession_end_allow_threads", _wrap_CoreSession_end_allow_threads, METH_VARARGS, NULL}, { (char *)"CoreSession_get_uuid", _wrap_CoreSession_get_uuid, METH_VARARGS, NULL}, @@ -7263,7 +7407,7 @@ /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */ -static void *_p_PySessionTo_p_CoreSession(void *x) { +static void *_p_PySessionTo_p_CoreSession(void *x, int *newmemory) { return (void *)((CoreSession *) ((PySession *) x)); } static swig_type_info _swigt__p_API = {"_p_API", "API *", 0, 0, (void*)0, 0}; @@ -7273,7 +7417,7 @@ static swig_type_info _swigt__p_PySession = {"_p_PySession", "PySession *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_Stream = {"_p_Stream", "Stream *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0}; -static swig_type_info _swigt__p_input_callback_state = {"_p_input_callback_state", "input_callback_state *", 0, 0, (void*)0, 0}; +static swig_type_info _swigt__p_input_callback_state = {"_p_input_callback_state", "input_callback_state_t *|input_callback_state *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_session_flag_t = {"_p_session_flag_t", "enum session_flag_t *|session_flag_t *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_swap_state_t = {"_p_swap_state_t", "enum swap_state_t *|swap_state_t *", 0, 0, (void*)0, 0}; static swig_type_info _swigt__p_switch_channel_state_t = {"_p_switch_channel_state_t", "switch_channel_state_t *", 0, 0, (void*)0, 0}; @@ -7420,7 +7564,7 @@ SWIG_InitializeModule(void *clientdata) { size_t i; swig_module_info *module_head, *iter; - int found; + int found, init; clientdata = clientdata; @@ -7430,6 +7574,9 @@ swig_module.type_initial = swig_type_initial; swig_module.cast_initial = swig_cast_initial; swig_module.next = &swig_module; + init = 1; + } else { + init = 0; } /* Try and load any already created modules */ @@ -7458,6 +7605,12 @@ module_head->next = &swig_module; } + /* When multiple interpeters are used, a module could have already been initialized in + a different interpreter, but not yet have a pointer in this interpreter. + In this case, we do not want to continue adding types... everything should be + set up already */ + if (init == 0) return; + /* Now work on filling in swig_module.types */ #ifdef SWIGRUNTIME_DEBUG printf("SWIG_InitializeModule: size %d\n", swig_module.size); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/switch_swig_wrap.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/switch_swig_wrap.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_python/switch_swig_wrap.c Tue May 13 23:37:33 2008 @@ -2924,19 +2924,19 @@ PyDict_SetItemString(d, "CS_INIT", SWIG_From_int((int) (CS_INIT))); } { - PyDict_SetItemString(d, "CS_RING", SWIG_From_int((int) (CS_RING))); + PyDict_SetItemString(d, "CS_ROUTING", SWIG_From_int((int) (CS_ROUTING))); } { - PyDict_SetItemString(d, "CS_TRANSMIT", SWIG_From_int((int) (CS_TRANSMIT))); + PyDict_SetItemString(d, "CS_SOFT_EXECUTE", SWIG_From_int((int) (CS_SOFT_EXECUTE))); } { PyDict_SetItemString(d, "CS_EXECUTE", SWIG_From_int((int) (CS_EXECUTE))); } { - PyDict_SetItemString(d, "CS_LOOPBACK", SWIG_From_int((int) (CS_LOOPBACK))); + PyDict_SetItemString(d, "CS_EXCHANGE_MEDIA", SWIG_From_int((int) (CS_EXCHANGE_MEDIA))); } { - PyDict_SetItemString(d, "CS_HOLD", SWIG_From_int((int) (CS_HOLD))); + PyDict_SetItemString(d, "CS_CONSUME_MEDIA", SWIG_From_int((int) (CS_CONSUME_MEDIA))); } { PyDict_SetItemString(d, "CS_HIBERNATE", SWIG_From_int((int) (CS_HIBERNATE))); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c Tue May 13 23:37:33 2008 @@ -1560,7 +1560,7 @@ int argc = 0; jsval ret; - if (jss->on_hangup && (jss->hook_state == CS_HANGUP || jss->hook_state == CS_RING)) { + if (jss->on_hangup && (jss->hook_state == CS_HANGUP || jss->hook_state == CS_ROUTING)) { argv[argc++] = OBJECT_TO_JSVAL(jss->obj); if (jss->hook_state == CS_HANGUP) { argv[argc++] = STRING_TO_JSVAL(JS_NewStringCopyZ(jss->cx, "hangup")); @@ -2754,7 +2754,7 @@ jss->session = peer_session; switch_set_flag(jss, S_HUP); *rval = BOOLEAN_TO_JSVAL(JS_TRUE); - switch_channel_set_state(switch_core_session_get_channel(jss->session), CS_TRANSMIT); + switch_channel_set_state(switch_core_session_get_channel(jss->session), CS_SOFT_EXECUTE); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Missing Args\n"); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c Tue May 13 23:37:33 2008 @@ -209,7 +209,6 @@ switch_frame_t write_frame = { 0 }; unsigned char *fdata[1024]; switch_frame_t *read_frame; - int stream_id; switch_core_thread_session_t thread_session = { 0 }; switch_channel_t *channel; @@ -238,9 +237,7 @@ channel = switch_core_session_get_channel(session); if (tto->timer) { - for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) { - switch_core_service_session(session, &thread_session, stream_id); - } + switch_core_service_session(session, &thread_session, 0); } if (loops) { @@ -275,7 +272,7 @@ } else { switch_status_t status; - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -287,11 +284,9 @@ } write_frame.samples = write_frame.datalen / 2; - for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) { - if (switch_core_session_write_frame(session, &write_frame, -1, stream_id) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Bad Write\n"); - break; - } + if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Bad Write\n"); + break; } } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c Tue May 13 23:37:33 2008 @@ -241,11 +241,11 @@ static switch_state_handler_table_t state_handlers = { /*.on_init */ NULL, - /*.on_ring */ NULL, + /*.on_routing */ NULL, /*.on_execute */ NULL, /*.on_hangup */ my_on_hangup, - /*.on_loopback */ NULL, - /*.on_transmit */ NULL + /*.on_exchange_media */ NULL, + /*.on_soft_execute */ NULL }; SWITCH_MODULE_LOAD_FUNCTION(mod_xml_cdr_load) Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/xml_int/mod_xml_ldap/Makefile ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/xml_int/mod_xml_ldap/Makefile (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/mod/xml_int/mod_xml_ldap/Makefile Tue May 13 23:37:33 2008 @@ -8,7 +8,8 @@ LOCAL_CFLAGS=-DWITH_OPENLDAP -DLDAP_DEPRECATED -I$(LDAP_DIR)/include -DEFAULT_ARGS=--prefix=$(PREFIX) --disable-shared --with-pic +DEFAULT_ARGS= --prefix=$(PREFIX) --disable-shared --with-pic --disable-slapd +DEFAULT_ARGS+= --disable-slurpd --disable-relay --disable-bdb --disable-hdb LOCAL_LIBADD=$(LDAPLA) $(LIBLBERLA) @@ -16,7 +17,7 @@ $(LDAP_DIR): $(GETLIB) $(LDAP).tgz - cd $(LDAP_DIR) && ./configure $(DEFAULT_ARGS) --disable-bdb --disable-hdb --disable-slapd + cd $(LDAP_DIR) && CFLAGS="`echo $(CFLAGS) | sed -e 's:-std=c99::'`" ./configure $(DEFAULT_ARGS) $(LDAPLA) $(LIBLBERLA): $(LDAP_DIR) cd $(LDAP_DIR) && $(MAKE) Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch.c Tue May 13 23:37:33 2008 @@ -44,8 +44,6 @@ #define PIDFILE "freeswitch.pid" static char *pfile = PIDFILE; -/* If we are a windows service, what should we be called */ -#define SERVICENAME "Freeswitch" /* Picky compiler */ #ifdef __ICC @@ -53,6 +51,10 @@ #endif #ifdef WIN32 +/* If we are a windows service, what should we be called */ +#define SERVICENAME_DEFAULT "FreeSWITCH" +#define SERVICENAME_MAXLEN 256 +static char service_name[SERVICENAME_MAXLEN]; #include <winsock2.h> #include <windows.h> @@ -62,7 +64,7 @@ /* signal handler for when freeswitch is running in background mode. * signal triggers the shutdown of freeswitch - */ +# */ static void handle_SIGTERM(int sig) { int32_t arg = 0; @@ -172,7 +174,7 @@ status.dwControlsAccepted = SERVICE_ACCEPT_STOP; /* register our handler for service control messages */ - hStatus = RegisterServiceCtrlHandler(SERVICENAME, &ServiceCtrlHandler); + hStatus = RegisterServiceCtrlHandler(service_name, &ServiceCtrlHandler); /* update the service status */ SetServiceStatus(hStatus, &status); @@ -217,17 +219,10 @@ switch_file_t *fd; switch_memory_pool_t *pool = NULL; - -#ifdef WIN32 - SERVICE_TABLE_ENTRY dispatchTable[] = { - {SERVICENAME, &service_main}, - {NULL, NULL} - }; -#endif usageDesc = "these are the optional arguments you can pass to freeswitch\n" #ifdef WIN32 - "\t-service -- start freeswitch as a service, cannot be used if loaded as a console app\n" - "\t-install -- install freeswitch as a service\n" + "\t-service [name] -- start freeswitch as a service, cannot be used if loaded as a console app\n" + "\t-install [name] -- install freeswitch as a service, with optional service name\n" "\t-uninstall -- remove freeswitch as a service\n" #else "\t-nf -- no forking\n" @@ -253,42 +248,100 @@ #ifdef WIN32 if (x == 1) { if (argv[x] && !strcmp(argv[x], "-service")) { - known_opt++; - if (StartServiceCtrlDispatcher(dispatchTable) == 0) { - /* Not loaded as a service */ - fprintf(stderr, "Error Freeswitch loaded as a console app with -service option\n"); - fprintf(stderr, "To install the service load freeswitch with -install\n"); + /* New installs will always have the service name specified, but keep a default for compat */ + x++; + if (argv[x] && strlen(argv[x])) { + switch_copy_string(service_name, argv[x], SERVICENAME_MAXLEN); + } else { + switch_copy_string(service_name, SERVICENAME_DEFAULT, SERVICENAME_MAXLEN); + } + { /* Attempt to start service */ + SERVICE_TABLE_ENTRY dispatchTable[] = { + {service_name, &service_main}, + {NULL, NULL} + }; + known_opt++; + if (StartServiceCtrlDispatcher(dispatchTable) == 0) { + /* Not loaded as a service */ + fprintf(stderr, "Error Freeswitch loaded as a console app with -service option\n"); + fprintf(stderr, "To install the service load freeswitch with -install\n"); + } + exit(0); } - exit(0); } if (argv[x] && !strcmp(argv[x], "-install")) { char exePath[1024]; char servicePath[1024]; - - SC_HANDLE handle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); + x++; + if (argv[x] && strlen(argv[x])) { + switch_copy_string(service_name, argv[x], SERVICENAME_MAXLEN); + } else { + switch_copy_string(service_name, SERVICENAME_DEFAULT, SERVICENAME_MAXLEN); + } known_opt++; GetModuleFileName(NULL, exePath, 1024); - snprintf(servicePath, sizeof(servicePath), "%s -service", exePath); - if (!CreateService(handle, - SERVICENAME, - SERVICENAME, - GENERIC_READ | GENERIC_EXECUTE, - SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, servicePath, NULL, NULL, NULL, NULL, NULL)) { - fprintf(stderr, "Error installing freeswitch as a service.\n"); + snprintf(servicePath, sizeof(servicePath), "%s -service %s", exePath, service_name); + { /* Perform service installation */ + SC_HANDLE hService; + SC_HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); + if (!hSCManager) { + fprintf(stderr, "Could not open service manager (%d).\n", GetLastError()); + exit(1); + } + hService = CreateService(hSCManager, + service_name, + service_name, + GENERIC_READ | GENERIC_EXECUTE | SERVICE_CHANGE_CONFIG, + SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, + servicePath, NULL, NULL, NULL, + "NT AUTHORITY\\NetworkService", /* Service start name */ + NULL); + if (!hService) { + fprintf(stderr, "Error creating freeswitch service (%d).\n", GetLastError()); + } else { + /* Set desc, and don't care if it succeeds */ + SERVICE_DESCRIPTION desc; + desc.lpDescription = "The FreeSWITCH service."; + if (!ChangeServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, &desc)) { + fprintf(stderr, "FreeSWITCH installed, but could not set the service description (%d).\n", GetLastError()); + } + CloseServiceHandle(hService); + } + CloseServiceHandle(hSCManager); + exit(0); } - exit(0); } if (argv[x] && !strcmp(argv[x], "-uninstall")) { - SC_HANDLE handle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); - SC_HANDLE service = OpenService(handle, SERVICENAME, DELETE); - known_opt++; - if (service != NULL) { - /* remove the service! */ - DeleteService(service); + x++; + if (argv[x] && strlen(argv[x])) { + switch_copy_string(service_name, argv[x], SERVICENAME_MAXLEN); + } else { + switch_copy_string(service_name, SERVICENAME_DEFAULT, SERVICENAME_MAXLEN); + } + { /* Do the uninstallation */ + SC_HANDLE hService; + SC_HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); + if (!hSCManager) { + fprintf(stderr, "Could not open service manager (%d).\n", GetLastError()); + exit(1); + } + hService = OpenService(hSCManager, service_name, DELETE); + known_opt++; + if (hService != NULL) { + /* remove the service! */ + if (!DeleteService(hService)) { + fprintf(stderr, "Error deleting service (%d).\n", GetLastError()); + } + CloseServiceHandle(hService); + } else { + fprintf(stderr, "Error opening service (%d).\n", GetLastError()); + } + CloseServiceHandle(hSCManager); + exit(0); } - exit(0); } } + #else if (argv[x] && !strcmp(argv[x], "-u")) { x++; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_channel.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_channel.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_channel.c Tue May 13 23:37:33 2008 @@ -112,8 +112,8 @@ switch_core_session_t *session; switch_channel_state_t state; switch_channel_state_t running_state; - uint32_t flags; - uint32_t state_flags; + switch_channel_flag_t flags; + switch_channel_flag_t state_flags; switch_caller_profile_t *caller_profile; const switch_state_handler_table_t *state_handlers[SWITCH_MAX_STATE_HANDLERS]; int state_handler_index; @@ -424,7 +424,7 @@ switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); - if (!(v = switch_event_get_header(channel->variables, (char*)varname))) { + if (!channel->variables || !(v = switch_event_get_header(channel->variables, (char*)varname))) { switch_caller_profile_t *cp = channel->caller_profile; if (cp) { @@ -721,7 +721,7 @@ switch_assert(channel != NULL); - if (!channel->hangup_cause && channel->state > CS_RING && channel->state < CS_HANGUP && channel->state != CS_RESET && + if (!channel->hangup_cause && channel->state > CS_ROUTING && channel->state < CS_HANGUP && channel->state != CS_RESET && !switch_test_flag(channel, CF_TRANSFER)) { ret++; } @@ -732,12 +732,12 @@ static const char *state_names[] = { "CS_NEW", "CS_INIT", - "CS_RING", - "CS_TRANSMIT", + "CS_ROUTING", + "CS_SOFT_EXECUTE", "CS_EXECUTE", - "CS_LOOPBACK", + "CS_EXCHANGE_MEDIA", "CS_PARK", - "CS_HOLD", + "CS_CONSUME_MEDIA", "CS_HIBERNATE", "CS_RESET", "CS_HANGUP", @@ -776,7 +776,7 @@ channel->state_flags = 0; } - if (channel->state >= CS_RING) { + if (channel->state >= CS_ROUTING) { switch_clear_flag(channel, CF_TRANSFER); switch_channel_presence(channel, "unknown", (char *) state_names[state]); } @@ -784,7 +784,7 @@ if (state < CS_HANGUP) { switch_event_t *event; if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_STATE) == SWITCH_STATUS_SUCCESS) { - if (state == CS_RING) { + if (state == CS_ROUTING) { switch_channel_event_set_data(channel, event); } else { char state_num[25]; @@ -838,9 +838,9 @@ case CS_NEW: case CS_INIT: - case CS_LOOPBACK: - case CS_TRANSMIT: - case CS_RING: + case CS_EXCHANGE_MEDIA: + case CS_SOFT_EXECUTE: + case CS_ROUTING: case CS_EXECUTE: case CS_HANGUP: case CS_DONE: @@ -863,12 +863,12 @@ case CS_INIT: switch (state) { -case CS_LOOPBACK: -case CS_TRANSMIT: -case CS_RING: +case CS_EXCHANGE_MEDIA: +case CS_SOFT_EXECUTE: +case CS_ROUTING: case CS_EXECUTE: case CS_PARK: -case CS_HOLD: +case CS_CONSUME_MEDIA: case CS_HIBERNATE: case CS_RESET: ok++; @@ -877,13 +877,13 @@ } break; -case CS_LOOPBACK: +case CS_EXCHANGE_MEDIA: switch (state) { -case CS_TRANSMIT: -case CS_RING: +case CS_SOFT_EXECUTE: +case CS_ROUTING: case CS_EXECUTE: case CS_PARK: -case CS_HOLD: +case CS_CONSUME_MEDIA: case CS_HIBERNATE: case CS_RESET: ok++; @@ -892,13 +892,13 @@ } break; -case CS_TRANSMIT: +case CS_SOFT_EXECUTE: switch (state) { -case CS_LOOPBACK: -case CS_RING: +case CS_EXCHANGE_MEDIA: +case CS_ROUTING: case CS_EXECUTE: case CS_PARK: -case CS_HOLD: +case CS_CONSUME_MEDIA: case CS_HIBERNATE: case CS_RESET: ok++; @@ -909,25 +909,25 @@ case CS_PARK: switch (state) { -case CS_LOOPBACK: -case CS_RING: +case CS_EXCHANGE_MEDIA: +case CS_ROUTING: case CS_EXECUTE: -case CS_TRANSMIT: +case CS_SOFT_EXECUTE: case CS_HIBERNATE: case CS_RESET: -case CS_HOLD: +case CS_CONSUME_MEDIA: ok++; default: break; } break; -case CS_HOLD: +case CS_CONSUME_MEDIA: switch (state) { -case CS_LOOPBACK: -case CS_RING: +case CS_EXCHANGE_MEDIA: +case CS_ROUTING: case CS_EXECUTE: -case CS_TRANSMIT: +case CS_SOFT_EXECUTE: case CS_HIBERNATE: case CS_RESET: case CS_PARK: @@ -938,13 +938,13 @@ break; case CS_HIBERNATE: switch (state) { -case CS_LOOPBACK: +case CS_EXCHANGE_MEDIA: case CS_INIT: -case CS_RING: +case CS_ROUTING: case CS_EXECUTE: -case CS_TRANSMIT: +case CS_SOFT_EXECUTE: case CS_PARK: -case CS_HOLD: +case CS_CONSUME_MEDIA: case CS_RESET: ok++; default: @@ -952,13 +952,13 @@ } break; -case CS_RING: +case CS_ROUTING: switch (state) { -case CS_LOOPBACK: +case CS_EXCHANGE_MEDIA: case CS_EXECUTE: -case CS_TRANSMIT: +case CS_SOFT_EXECUTE: case CS_PARK: -case CS_HOLD: +case CS_CONSUME_MEDIA: case CS_HIBERNATE: case CS_RESET: ok++; @@ -969,11 +969,11 @@ case CS_EXECUTE: switch (state) { -case CS_LOOPBACK: -case CS_TRANSMIT: -case CS_RING: +case CS_EXCHANGE_MEDIA: +case CS_SOFT_EXECUTE: +case CS_ROUTING: case CS_PARK: -case CS_HOLD: +case CS_CONSUME_MEDIA: case CS_HIBERNATE: case CS_RESET: ok++; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core.c Tue May 13 23:37:33 2008 @@ -187,7 +187,7 @@ switch_channel_set_flag(channel, CF_SERVICE); while (data->running > 0) { - switch (switch_core_session_read_frame(session, &read_frame, -1, stream_id)) { + switch (switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, stream_id)) { case SWITCH_STATUS_SUCCESS: case SWITCH_STATUS_TIMEOUT: case SWITCH_STATUS_BREAK: @@ -842,6 +842,11 @@ memset(&runtime, 0, sizeof(runtime)); + runtime.dummy_cng_frame.data = runtime.dummy_data; + runtime.dummy_cng_frame.datalen= sizeof(runtime.dummy_data); + runtime.dummy_cng_frame.buflen= sizeof(runtime.dummy_data); + runtime.dummy_cng_frame.flags = SFF_CNG; + switch_set_flag((&runtime), SCF_NO_NEW_SESSIONS); runtime.hard_log_level = SWITCH_LOG_DEBUG; runtime.mailer_app = "sendmail"; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_event_hook.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_event_hook.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_event_hook.c Tue May 13 23:37:33 2008 @@ -40,8 +40,6 @@ NEW_HOOK_DECL(video_read_frame) NEW_HOOK_DECL(video_write_frame) NEW_HOOK_DECL(kill_channel) -NEW_HOOK_DECL(waitfor_read) -NEW_HOOK_DECL(waitfor_write) NEW_HOOK_DECL(send_dtmf) NEW_HOOK_DECL(recv_dtmf) NEW_HOOK_DECL(resurrect_session) Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_io.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_io.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_io.c Tue May 13 23:37:33 2008 @@ -35,20 +35,19 @@ #include <switch.h> #include "private/switch_core_pvt.h" -SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, int stream_id) +SWITCH_DECLARE(switch_status_t) switch_core_session_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { switch_io_event_hook_video_write_frame_t *ptr; switch_status_t status = SWITCH_STATUS_FALSE; - switch_io_flag_t flags = 0; if (switch_channel_get_state(session->channel) >= CS_HANGUP) { return SWITCH_STATUS_FALSE; } if (session->endpoint_interface->io_routines->write_video_frame) { - if ((status = session->endpoint_interface->io_routines->write_video_frame(session, frame, timeout, flags, stream_id)) == SWITCH_STATUS_SUCCESS) { + if ((status = session->endpoint_interface->io_routines->write_video_frame(session, frame, flags, stream_id)) == SWITCH_STATUS_SUCCESS) { for (ptr = session->event_hooks.video_write_frame; ptr; ptr = ptr->next) { - if ((status = ptr->video_write_frame(session, frame, timeout, flags, stream_id)) != SWITCH_STATUS_SUCCESS) { + if ((status = ptr->video_write_frame(session, frame, flags, stream_id)) != SWITCH_STATUS_SUCCESS) { break; } } @@ -57,7 +56,7 @@ return status; } -SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, int stream_id) +SWITCH_DECLARE(switch_status_t) switch_core_session_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { switch_status_t status = SWITCH_STATUS_FALSE; switch_io_event_hook_video_read_frame_t *ptr; @@ -68,9 +67,9 @@ if (session->endpoint_interface->io_routines->read_video_frame) { if ((status = - session->endpoint_interface->io_routines->read_video_frame(session, frame, timeout, SWITCH_IO_FLAG_NOOP, stream_id)) == SWITCH_STATUS_SUCCESS) { + session->endpoint_interface->io_routines->read_video_frame(session, frame, flags, stream_id)) == SWITCH_STATUS_SUCCESS) { for (ptr = session->event_hooks.video_read_frame; ptr; ptr = ptr->next) { - if ((status = ptr->video_read_frame(session, frame, timeout, SWITCH_IO_FLAG_NOOP, stream_id)) != SWITCH_STATUS_SUCCESS) { + if ((status = ptr->video_read_frame(session, frame, flags, stream_id)) != SWITCH_STATUS_SUCCESS) { break; } } @@ -98,12 +97,13 @@ return status; } -SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_session_t *session, switch_frame_t **frame, int timeout, int stream_id) +SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id) { switch_io_event_hook_read_frame_t *ptr; switch_status_t status; int need_codec, perfect, do_bugs = 0, do_resample = 0, is_cng = 0; unsigned int flag = 0; + top: if (switch_channel_get_state(session->channel) >= CS_HANGUP) { @@ -125,9 +125,9 @@ if (session->endpoint_interface->io_routines->read_frame) { if ((status = - session->endpoint_interface->io_routines->read_frame(session, frame, timeout, SWITCH_IO_FLAG_NOOP, stream_id)) == SWITCH_STATUS_SUCCESS) { + session->endpoint_interface->io_routines->read_frame(session, frame, flags, stream_id)) == SWITCH_STATUS_SUCCESS) { for (ptr = session->event_hooks.read_frame; ptr; ptr = ptr->next) { - if ((status = ptr->read_frame(session, frame, timeout, SWITCH_IO_FLAG_NOOP, stream_id)) != SWITCH_STATUS_SUCCESS) { + if ((status = ptr->read_frame(session, frame, flags, stream_id)) != SWITCH_STATUS_SUCCESS) { break; } } @@ -160,7 +160,14 @@ } switch_assert((*frame)->codec != NULL); - if ((session->read_codec && (*frame)->codec && session->read_codec->implementation != (*frame)->codec->implementation)) { + + if (!(session->read_codec && session->read_codec->implementation)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s has no read codec.\n", switch_channel_get_name(session->channel)); + abort(); + return SWITCH_STATUS_FALSE; + } + + if (((*frame)->codec && session->read_codec->implementation != (*frame)->codec->implementation)) { need_codec = TRUE; } @@ -462,19 +469,23 @@ even_more_done: + if (!*frame) { + *frame = &runtime.dummy_cng_frame; + } + return status; } -static switch_status_t perform_write(switch_core_session_t *session, switch_frame_t *frame, int timeout, switch_io_flag_t flags, int stream_id) +static switch_status_t perform_write(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { switch_io_event_hook_write_frame_t *ptr; switch_status_t status = SWITCH_STATUS_FALSE; if (session->endpoint_interface->io_routines->write_frame) { - if ((status = session->endpoint_interface->io_routines->write_frame(session, frame, timeout, flags, stream_id)) == SWITCH_STATUS_SUCCESS) { + if ((status = session->endpoint_interface->io_routines->write_frame(session, frame, flags, stream_id)) == SWITCH_STATUS_SUCCESS) { for (ptr = session->event_hooks.write_frame; ptr; ptr = ptr->next) { - if ((status = ptr->write_frame(session, frame, timeout, flags, stream_id)) != SWITCH_STATUS_SUCCESS) { + if ((status = ptr->write_frame(session, frame, flags, stream_id)) != SWITCH_STATUS_SUCCESS) { break; } } @@ -484,13 +495,12 @@ return status; } -SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout, int stream_id) +SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id) { switch_status_t status = SWITCH_STATUS_FALSE; switch_frame_t *enc_frame = NULL, *write_frame = frame; unsigned int flag = 0, need_codec = 0, perfect = 0, do_bugs = 0, do_write = 0, do_resample = 0, ptime_mismatch = 0; - switch_io_flag_t io_flag = SWITCH_IO_FLAG_NOOP; switch_assert(session != NULL); switch_assert(frame != NULL); @@ -499,18 +509,23 @@ return SWITCH_STATUS_FALSE; } + if (!(session->write_codec && session->write_codec->implementation)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s has no write codec.\n", switch_channel_get_name(session->channel)); + return SWITCH_STATUS_FALSE; + } + if (switch_channel_test_flag(session->channel, CF_HOLD)) { return SWITCH_STATUS_SUCCESS; } if (switch_test_flag(frame, SFF_PROXY_PACKET)) { /* Fast PASS! */ - return perform_write(session, frame, timeout, flag, stream_id); + return perform_write(session, frame, flag, stream_id); } if (switch_test_flag(frame, SFF_CNG)) { if (switch_channel_test_flag(session->channel, CF_ACCEPT_CNG)) { - return perform_write(session, frame, timeout, flag, stream_id); + return perform_write(session, frame, flag, stream_id); } return SWITCH_STATUS_SUCCESS; } @@ -751,7 +766,7 @@ if (flag & SFF_CNG) { switch_set_flag(write_frame, SFF_CNG); } - status = perform_write(session, write_frame, timeout, io_flag, stream_id); + status = perform_write(session, write_frame, flags, stream_id); return status; } else { switch_size_t used = switch_buffer_inuse(session->raw_write_buffer); @@ -857,7 +872,7 @@ switch_set_flag(write_frame, SFF_CNG); } - if ((status = perform_write(session, write_frame, timeout, io_flag, stream_id)) != SWITCH_STATUS_SUCCESS) { + if ((status = perform_write(session, write_frame, flags, stream_id)) != SWITCH_STATUS_SUCCESS) { break; } } @@ -873,7 +888,7 @@ done: if (do_write) { - return perform_write(session, frame, timeout, io_flag, stream_id); + return perform_write(session, frame, flags, stream_id); } return status; } @@ -907,40 +922,6 @@ return status; } -SWITCH_DECLARE(switch_status_t) switch_core_session_waitfor_read(switch_core_session_t *session, int timeout, int stream_id) -{ - switch_io_event_hook_waitfor_read_t *ptr; - switch_status_t status = SWITCH_STATUS_FALSE; - - if (session->endpoint_interface->io_routines->waitfor_read) { - if ((status = session->endpoint_interface->io_routines->waitfor_read(session, timeout, stream_id)) == SWITCH_STATUS_SUCCESS) { - for (ptr = session->event_hooks.waitfor_read; ptr; ptr = ptr->next) { - if ((status = ptr->waitfor_read(session, timeout, stream_id)) != SWITCH_STATUS_SUCCESS) { - break; - } - } - } - } - return status; -} - -SWITCH_DECLARE(switch_status_t) switch_core_session_waitfor_write(switch_core_session_t *session, int timeout, int stream_id) -{ - switch_io_event_hook_waitfor_write_t *ptr; - switch_status_t status = SWITCH_STATUS_FALSE; - - if (session->endpoint_interface->io_routines->waitfor_write) { - if ((status = session->endpoint_interface->io_routines->waitfor_write(session, timeout, stream_id)) == SWITCH_STATUS_SUCCESS) { - for (ptr = session->event_hooks.waitfor_write; ptr; ptr = ptr->next) { - if ((status = ptr->waitfor_write(session, timeout, stream_id)) != SWITCH_STATUS_SUCCESS) { - break; - } - } - } - } - return status; -} - SWITCH_DECLARE(switch_status_t) switch_core_session_recv_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf) { switch_io_event_hook_recv_dtmf_t *ptr; Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_sqldb.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_sqldb.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_sqldb.c Tue May 13 23:37:33 2008 @@ -202,7 +202,7 @@ if (trans && ((itterations == target) || nothing_in_queue)) { - if (switch_core_db_persistant_execute_trans(sql_manager.event_db, sqlbuf, 1000) != SWITCH_STATUS_SUCCESS) { + if (switch_core_db_persistant_execute_trans(sql_manager.event_db, sqlbuf, 100) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "SQL thread unable to commit transaction, records lost!\n"); } itterations = 0; @@ -237,69 +237,75 @@ switch (event->event_id) { case SWITCH_EVENT_ADD_SCHEDULE: sql = switch_mprintf("insert into tasks values('%q','%q','%q','%q')", - switch_event_get_header(event, "task-id"), - switch_event_get_header(event, "task-desc"), - switch_event_get_header(event, "task-group"), switch_event_get_header(event, "task-sql_manager") - ); + switch_event_get_header_nil(event, "task-id"), + switch_event_get_header_nil(event, "task-desc"), + switch_event_get_header_nil(event, "task-group"), + switch_event_get_header_nil(event, "task-sql_manager") + ); break; case SWITCH_EVENT_DEL_SCHEDULE: case SWITCH_EVENT_EXE_SCHEDULE: - sql = switch_mprintf("delete from tasks where task_id=%q", switch_event_get_header(event, "task-id")); + sql = switch_mprintf("delete from tasks where task_id=%q", switch_event_get_header_nil(event, "task-id")); break; case SWITCH_EVENT_RE_SCHEDULE: sql = switch_mprintf("update tasks set task_sql_manager='%q' where task_id=%q", - switch_event_get_header(event, "task-sql_manager"), switch_event_get_header(event, "task-id")); + switch_event_get_header_nil(event, "task-sql_manager"), switch_event_get_header_nil(event, "task-id")); break; case SWITCH_EVENT_CHANNEL_DESTROY: - sql = switch_mprintf("delete from channels where uuid='%q'", switch_event_get_header(event, "unique-id")); + sql = switch_mprintf("delete from channels where uuid='%q'", switch_event_get_header_nil(event, "unique-id")); break; case SWITCH_EVENT_CHANNEL_CREATE: - sql = switch_mprintf("insert into channels (uuid,created,created_epoch, name,state) values('%q','%q','%ld','%q','%q')", - switch_event_get_header(event, "unique-id"), - switch_event_get_header(event, "event-date-local"), + sql = switch_mprintf("insert into channels (uuid,created,created_epoch, name,state,dialplan,context) values('%q','%q','%ld','%q','%q','%q','%q')", + switch_event_get_header_nil(event, "unique-id"), + switch_event_get_header_nil(event, "event-date-local"), (long)switch_timestamp(NULL), - switch_event_get_header(event, "channel-name"), - switch_event_get_header(event, "channel-state") + switch_event_get_header_nil(event, "channel-name"), + switch_event_get_header_nil(event, "channel-state"), + switch_event_get_header_nil(event, "caller-dialplan"), + switch_event_get_header_nil(event, "caller-context") ); break; case SWITCH_EVENT_CODEC: sql = switch_mprintf ("update channels set read_codec='%q',read_rate='%q',write_codec='%q',write_rate='%q' where uuid='%q'", - switch_event_get_header(event, "channel-read-codec-name"), switch_event_get_header(event, + switch_event_get_header_nil(event, "channel-read-codec-name"), switch_event_get_header_nil(event, "channel-read-codec-rate"), - switch_event_get_header(event, "channel-write-codec-name"), switch_event_get_header(event, + switch_event_get_header_nil(event, "channel-write-codec-name"), switch_event_get_header_nil(event, "channel-write-codec-rate"), - switch_event_get_header(event, "unique-id")); + switch_event_get_header_nil(event, "unique-id")); break; case SWITCH_EVENT_CHANNEL_EXECUTE: sql = switch_mprintf("update channels set application='%q',application_data='%q' where uuid='%q'", - switch_event_get_header(event, "application"), - switch_event_get_header(event, "application-data"), switch_event_get_header(event, "unique-id") + switch_event_get_header_nil(event, "application"), + switch_event_get_header_nil(event, "application-data"), switch_event_get_header_nil(event, "unique-id") ); break; case SWITCH_EVENT_CHANNEL_STATE: if (event) { - char *state = switch_event_get_header(event, "channel-state-number"); + char *state = switch_event_get_header_nil(event, "channel-state-number"); switch_channel_state_t state_i = atoi(state); switch (state_i) { case CS_HANGUP: case CS_DONE: break; - case CS_RING: - sql = switch_mprintf("update channels set state='%s',cid_name='%q',cid_num='%q',ip_addr='%s',dest='%q' " + case CS_ROUTING: + sql = switch_mprintf("update channels set state='%s',cid_name='%q',cid_num='%q',ip_addr='%s',dest='%q',dialplan='%q',context='%q' " "where uuid='%s'", - switch_event_get_header(event, "channel-state"), - switch_event_get_header(event, "caller-caller-id-name"), - switch_event_get_header(event, "caller-caller-id-number"), - switch_event_get_header(event, "caller-network-addr"), - switch_event_get_header(event, "caller-destination-number"), switch_event_get_header(event, "unique-id") + switch_event_get_header_nil(event, "channel-state"), + switch_event_get_header_nil(event, "caller-caller-id-name"), + switch_event_get_header_nil(event, "caller-caller-id-number"), + switch_event_get_header_nil(event, "caller-network-addr"), + switch_event_get_header_nil(event, "caller-destination-number"), + switch_event_get_header_nil(event, "caller-dialplan"), + switch_event_get_header_nil(event, "caller-context"), + switch_event_get_header_nil(event, "unique-id") ); break; default: sql = switch_mprintf("update channels set state='%s' where uuid='%s'", - switch_event_get_header(event, "channel-state"), switch_event_get_header(event, "unique-id") + switch_event_get_header_nil(event, "channel-state"), switch_event_get_header_nil(event, "unique-id") ); break; } @@ -308,22 +314,22 @@ break; case SWITCH_EVENT_CHANNEL_BRIDGE: sql = switch_mprintf("insert into calls values ('%s', '%ld', '%s','%q','%q','%q','%q','%s','%q','%q','%q','%q','%s')", - switch_event_get_header(event, "event-date-local"), + switch_event_get_header_nil(event, "event-date-local"), (long)switch_timestamp(NULL), - switch_event_get_header(event, "event-calling-function"), - switch_event_get_header(event, "caller-caller-id-name"), - switch_event_get_header(event, "caller-caller-id-number"), - switch_event_get_header(event, "caller-destination-number"), - switch_event_get_header(event, "caller-channel-name"), - switch_event_get_header(event, "caller-unique-id"), - switch_event_get_header(event, "Other-Leg-caller-id-name"), - switch_event_get_header(event, "Other-Leg-caller-id-number"), - switch_event_get_header(event, "Other-Leg-destination-number"), - switch_event_get_header(event, "Other-Leg-channel-name"), switch_event_get_header(event, "Other-Leg-unique-id") + switch_event_get_header_nil(event, "event-calling-function"), + switch_event_get_header_nil(event, "caller-caller-id-name"), + switch_event_get_header_nil(event, "caller-caller-id-number"), + switch_event_get_header_nil(event, "caller-destination-number"), + switch_event_get_header_nil(event, "caller-channel-name"), + switch_event_get_header_nil(event, "caller-unique-id"), + switch_event_get_header_nil(event, "Other-Leg-caller-id-name"), + switch_event_get_header_nil(event, "Other-Leg-caller-id-number"), + switch_event_get_header_nil(event, "Other-Leg-destination-number"), + switch_event_get_header_nil(event, "Other-Leg-channel-name"), switch_event_get_header_nil(event, "Other-Leg-unique-id") ); break; case SWITCH_EVENT_CHANNEL_UNBRIDGE: - sql = switch_mprintf("delete from calls where caller_uuid='%s'", switch_event_get_header(event, "caller-unique-id")); + sql = switch_mprintf("delete from calls where caller_uuid='%s'", switch_event_get_header_nil(event, "caller-unique-id")); break; case SWITCH_EVENT_SHUTDOWN: sql = switch_mprintf("delete from channels;delete from interfaces;delete from calls"); @@ -332,10 +338,10 @@ return; case SWITCH_EVENT_MODULE_LOAD: { - const char *type = switch_event_get_header(event, "type"); - const char *name = switch_event_get_header(event, "name"); - const char *description = switch_event_get_header(event, "description"); - const char *syntax = switch_event_get_header(event, "syntax"); + const char *type = switch_event_get_header_nil(event, "type"); + const char *name = switch_event_get_header_nil(event, "name"); + const char *description = switch_event_get_header_nil(event, "description"); + const char *syntax = switch_event_get_header_nil(event, "syntax"); if (!switch_strlen_zero(type) && !switch_strlen_zero(name)) { sql = switch_mprintf("insert into interfaces (type,name,description,syntax) values('%q','%q','%q','%q')", @@ -401,6 +407,8 @@ " dest VARCHAR(255),\n" " application VARCHAR(255),\n" " application_data VARCHAR(255),\n" + " dialplan VARCHAR(255),\n" + " context VARCHAR(255),\n" " read_codec VARCHAR(255),\n" " read_rate VARCHAR(255),\n" " write_codec VARCHAR(255),\n" Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_state_machine.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_state_machine.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_core_state_machine.c Tue May 13 23:37:33 2008 @@ -54,7 +54,7 @@ switch_channel_get_name(session->channel)); } -static void switch_core_standard_on_ring(switch_core_session_t *session) +static void switch_core_standard_on_routing(switch_core_session_t *session) { switch_dialplan_interface_t *dialplan_interface = NULL; switch_caller_profile_t *caller_profile; @@ -62,7 +62,7 @@ char *expanded = NULL; char *dpstr = NULL; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Standard RING %s\n", switch_channel_get_name(session->channel)); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Standard ROUTING %s\n", switch_channel_get_name(session->channel)); if ((caller_profile = switch_channel_get_caller_profile(session->channel)) == 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't get profile!\n"); @@ -103,7 +103,7 @@ if (!count) { if (switch_channel_test_flag(session->channel, CF_OUTBOUND)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "No Dialplan, changing state to HOLD\n"); - switch_channel_set_state(session->channel, CS_HOLD); + switch_channel_set_state(session->channel, CS_CONSUME_MEDIA); goto end; } } @@ -157,14 +157,14 @@ } } -static void switch_core_standard_on_loopback(switch_core_session_t *session) +static void switch_core_standard_on_exchange_media(switch_core_session_t *session) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Standard LOOPBACK\n"); switch_ivr_session_echo(session); } -static void switch_core_standard_on_transmit(switch_core_session_t *session) +static void switch_core_standard_on_soft_execute(switch_core_session_t *session) { switch_assert(session != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Standard TRANSMIT\n"); @@ -179,7 +179,7 @@ switch_ivr_park(session, NULL); } -static void switch_core_standard_on_hold(switch_core_session_t *session) +static void switch_core_standard_on_consume_media(switch_core_session_t *session) { switch_assert(session != NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Standard HOLD\n"); @@ -369,7 +369,7 @@ break; case CS_DONE: goto done; - /* HANGUP INIT RING and RESET are all short term so we signal lock during their callbacks */ + /* HANGUP INIT ROUTING and RESET are all short term so we signal lock during their callbacks */ case CS_HANGUP: /* Deactivate and end the thread */ { const char *var = switch_channel_get_variable(session->channel, SWITCH_PROCESS_CDR_VARIABLE); @@ -413,9 +413,9 @@ STATE_MACRO(init, "INIT"); switch_core_session_signal_unlock(session); break; - case CS_RING: /* Look for a dialplan and find something to do */ + case CS_ROUTING: /* Look for a dialplan and find something to do */ switch_core_session_signal_lock(session); - STATE_MACRO(ring, "RING"); + STATE_MACRO(routing, "ROUTING"); switch_core_session_signal_unlock(session); break; case CS_RESET: /* Reset */ @@ -427,17 +427,17 @@ case CS_EXECUTE: /* Execute an Operation */ STATE_MACRO(execute, "EXECUTE"); break; - case CS_LOOPBACK: /* loop all data back to source */ - STATE_MACRO(loopback, "LOOPBACK"); + case CS_EXCHANGE_MEDIA: /* loop all data back to source */ + STATE_MACRO(exchange_media, "EXCHANGE_MEDIA"); break; - case CS_TRANSMIT: /* send/recieve data to/from another channel */ - STATE_MACRO(transmit, "TRANSMIT"); + case CS_SOFT_EXECUTE: /* send/recieve data to/from another channel */ + STATE_MACRO(soft_execute, "SOFT_EXECUTE"); break; case CS_PARK: /* wait in limbo */ STATE_MACRO(park, "PARK"); break; - case CS_HOLD: /* wait in limbo */ - STATE_MACRO(hold, "HOLD"); + case CS_CONSUME_MEDIA: /* wait in limbo */ + STATE_MACRO(consume_media, "CONSUME_MEDIA"); break; case CS_HIBERNATE: /* sleep */ STATE_MACRO(hibernate, "HIBERNATE"); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_cpp.cpp ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_cpp.cpp (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_cpp.cpp Tue May 13 23:37:33 2008 @@ -270,13 +270,13 @@ return NULL; } -SWITCH_DECLARE(char *)Event::getType(void) +SWITCH_DECLARE(const char *)Event::getType(void) { if (event) { return switch_event_name(event->event_id); } - return "invalid"; + return (char *) "invalid"; } SWITCH_DECLARE_CONSTRUCTOR Stream::Stream() @@ -352,7 +352,7 @@ allocated = 1; switch_set_flag(this, S_HUP); uuid = strdup(switch_core_session_get_uuid(session)); - switch_channel_set_state(switch_core_session_get_channel(session), CS_TRANSMIT); + switch_channel_set_state(switch_core_session_get_channel(session), CS_SOFT_EXECUTE); } } } @@ -382,11 +382,38 @@ switch_core_session_rwunlock(session); } + switch_safe_free(xml_cdr_text); switch_safe_free(uuid); switch_safe_free(tts_name); switch_safe_free(voice_name); } +SWITCH_DECLARE(char *) CoreSession::getXMLCDR() +{ + + switch_xml_t cdr; + + sanity_check((char *)""); + + switch_safe_free(xml_cdr_text); + + if (switch_ivr_generate_xml_cdr(session, &cdr) == SWITCH_STATUS_SUCCESS) { + xml_cdr_text = switch_xml_toxml(cdr, SWITCH_FALSE); + switch_xml_free(cdr); + } + + return (char *) (xml_cdr_text ? xml_cdr_text : ""); +} + +SWITCH_DECLARE(void) CoreSession::setEventData(Event *e) +{ + sanity_check_noreturn; + + if (channel && e->event) { + switch_channel_event_set_data(channel, e->event); + } +} + SWITCH_DECLARE(int) CoreSession::answer() { switch_status_t status; @@ -408,7 +435,9 @@ { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "CoreSession::hangup\n"); sanity_check_noreturn; + this->begin_allow_threads(); switch_channel_hangup(channel, switch_channel_str2cause(cause)); + this->end_allow_threads(); } SWITCH_DECLARE(void) CoreSession::setPrivate(char *var, void *val) @@ -532,7 +561,7 @@ int timeout) { switch_status_t status; - sanity_check(""); + sanity_check((char *)""); begin_allow_threads(); char terminator; @@ -594,7 +623,7 @@ char *digits_regex) { switch_status_t status; - sanity_check(""); + sanity_check((char *)""); begin_allow_threads(); memset(dtmf_buf, 0, sizeof(dtmf_buf)); status = switch_play_and_get_digits( session, @@ -694,7 +723,7 @@ if (a_leg_session) a_leg_session->end_allow_threads(); channel = switch_core_session_get_channel(session); allocated = 1; - switch_channel_set_state(switch_core_session_get_channel(session), CS_TRANSMIT); + switch_channel_set_state(switch_core_session_get_channel(session), CS_SOFT_EXECUTE); return SWITCH_STATUS_SUCCESS; @@ -909,7 +938,6 @@ } - SWITCH_DECLARE(switch_status_t) CoreSession::process_callback_result(char *ret) { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_event.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_event.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_event.c Tue May 13 23:37:33 2008 @@ -297,7 +297,7 @@ return SYSTEM_RUNNING ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE; } -SWITCH_DECLARE(char *) switch_event_name(switch_event_types_t event) +SWITCH_DECLARE(const char *) switch_event_name(switch_event_types_t event) { switch_assert(BLOCK != NULL); switch_assert(RUNTIME_POOL != NULL); @@ -510,6 +510,7 @@ SWITCH_DECLARE(char *) switch_event_get_header(switch_event_t *event, char *header_name) { switch_event_header_t *hp; + switch_assert(event); if (!header_name) return NULL; for (hp = event->headers; hp; hp = hp->next) { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr.c Tue May 13 23:37:33 2008 @@ -60,11 +60,16 @@ break; } + if (switch_channel_test_flag(channel, CF_PROXY_MODE)) { + switch_yield(1000); + continue; + } + if (switch_channel_test_flag(channel, CF_SERVICE) || (!switch_channel_test_flag(channel, CF_ANSWERED) && !switch_channel_test_flag(channel, CF_EARLY_MEDIA))) { switch_yield(1000); } else { - status = switch_core_session_read_frame(session, &read_frame, left, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } @@ -93,7 +98,7 @@ } conninfo->write_frame.datalen = (uint32_t)len; conninfo->write_frame.samples = conninfo->write_frame.datalen / 2; - switch_core_session_write_frame(conninfo->session, &conninfo->write_frame, -1, conninfo->stream_id); + switch_core_session_write_frame(conninfo->session, &conninfo->write_frame, SWITCH_IO_FLAG_NONE, conninfo->stream_id); } switch_clear_flag_locked(conninfo, SUF_READY); @@ -276,7 +281,7 @@ int frame_count = atoi(lead_frames); while(frame_count > 0) { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { goto done; } @@ -449,7 +454,7 @@ while (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_CONTROLLED)) { - if ((status = switch_core_session_read_frame(session, &read_frame, -1, stream_id)) == SWITCH_STATUS_SUCCESS) { + if ((status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, stream_id)) == SWITCH_STATUS_SUCCESS) { if (!SWITCH_READ_ACCEPTABLE(status)) { break; } @@ -615,7 +620,7 @@ if (switch_channel_test_flag(channel, CF_SERVICE)) { switch_yield(1000); } else { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); } if (!SWITCH_READ_ACCEPTABLE(status)) { @@ -731,7 +736,7 @@ if (switch_channel_test_flag(channel, CF_SERVICE)) { switch_yield(1000); } else { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } @@ -843,7 +848,7 @@ switch_core_session_receive_message(session, &msg); switch_channel_wait_for_flag(channel, CF_REQ_MEDIA, SWITCH_FALSE, 10000); - switch_core_session_read_frame(session, &read_frame, -1, 0); + switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if ((flags & SMF_REBRIDGE) && (other_uuid = switch_channel_get_variable(channel, SWITCH_SIGNAL_BRIDGE_VARIABLE)) @@ -852,7 +857,7 @@ switch_assert(other_channel != NULL); switch_core_session_receive_message(other_session, &msg); switch_channel_wait_for_flag(other_channel, CF_REQ_MEDIA, SWITCH_FALSE, 10000); - switch_core_session_read_frame(other_session, &read_frame, -1, 0); + switch_core_session_read_frame(other_session, &read_frame, SWITCH_IO_FLAG_NONE, 0); switch_channel_clear_state_handler(other_channel, NULL); switch_core_session_rwunlock(other_session); } @@ -1023,7 +1028,7 @@ switch_channel_set_caller_profile(channel, new_profile); switch_channel_set_flag(channel, CF_TRANSFER); - switch_channel_set_state(channel, CS_RING); + switch_channel_set_state(channel, CS_ROUTING); msg.message_id = SWITCH_MESSAGE_INDICATE_TRANSFER; msg.from = __FILE__; @@ -1642,7 +1647,7 @@ write_frame.codec = read_codec; while(switch_channel_ready(channel)) { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } @@ -1653,7 +1658,7 @@ if ((jb_frame = stfu_n_read_a_frame(jb))) { write_frame.data = jb_frame->data; write_frame.datalen = (uint32_t)jb_frame->dlen; - status = switch_core_session_write_frame(session, &write_frame, -1, 0); + status = switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } @@ -1663,6 +1668,21 @@ stfu_n_destroy(&jb); } +SWITCH_DECLARE(switch_status_t) switch_ivr_say(switch_core_session_t *session, const char *tosay, const char *module_name, const char *say_type, const char *say_method, switch_input_args_t *args) +{ + switch_say_interface_t *si; + switch_status_t status = SWITCH_STATUS_SUCCESS; + + if ((si = switch_loadable_module_get_say_interface(module_name))) { + // should go back and proto all the say mods to const.... + status = si->say_function(session, (char *)tosay, switch_ivr_get_say_type_by_name(say_type), switch_ivr_get_say_method_by_name(say_method), args); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid SAY Interface [%s]!\n", module_name); + status = SWITCH_STATUS_FALSE; + } + + return status; +} /* For Emacs: * Local Variables: Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_async.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_async.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_async.c Tue May 13 23:37:33 2008 @@ -49,7 +49,7 @@ eh->up = 1; while(switch_channel_ready(channel)) { - status = switch_core_session_read_video_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_video_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -59,7 +59,7 @@ continue; } - switch_core_session_write_video_frame(session, read_frame, -1, 0); + switch_core_session_write_video_frame(session, read_frame, SWITCH_IO_FLAG_NONE, 0); } eh->up = 0; @@ -91,14 +91,14 @@ #endif while(switch_channel_ready(channel)) { - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } - switch_core_session_write_frame(session, read_frame, -1, 0); + switch_core_session_write_frame(session, read_frame, SWITCH_IO_FLAG_NONE, 0); #ifndef SWITCH_VIDEO_IN_THREADS - status = switch_core_session_read_video_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_video_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -108,7 +108,7 @@ continue; } - switch_core_session_write_video_frame(session, read_frame, -1, 0); + switch_core_session_write_video_frame(session, read_frame, SWITCH_IO_FLAG_NONE, 0); #endif } @@ -308,7 +308,7 @@ read_codec->implementation->number_of_channels, read_codec->implementation->actual_samples_per_second, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, - switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + NULL) != SWITCH_STATUS_SUCCESS) { switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); switch_core_session_reset(session, SWITCH_TRUE); return SWITCH_STATUS_GENERR; @@ -590,7 +590,7 @@ char *fcommand = NULL; char db[2] = ""; - status = switch_core_session_read_frame(session, &read_frame, 1000, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { goto end; @@ -676,7 +676,7 @@ while (switch_buffer_inuse(ep->buffer) >= len) { write_frame.datalen = (uint32_t)switch_buffer_read(ep->buffer, buf, len); write_frame.samples = write_frame.datalen / 2; - if ((status = switch_core_session_write_frame(session, &write_frame, 1000, 0)) != SWITCH_STATUS_SUCCESS) { + if ((status = switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0)) != SWITCH_STATUS_SUCCESS) { break; } } @@ -755,7 +755,7 @@ file, channels, read_codec->implementation->actual_samples_per_second, - SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error opening %s\n", file); switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); switch_core_session_reset(session, SWITCH_TRUE); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_bridge.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_bridge.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_bridge.c Tue May 13 23:37:33 2008 @@ -52,13 +52,13 @@ vh->up = 1; while(switch_channel_ready(channel) && vh->up == 1) { - status = switch_core_session_read_video_frame(vh->session_a, &read_frame, -1, 0); + status = switch_core_session_read_video_frame(vh->session_a, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } - switch_core_session_write_video_frame(vh->session_b, read_frame, -1, 0); + switch_core_session_write_video_frame(vh->session_b, read_frame, SWITCH_IO_FLAG_NONE, 0); } vh->up = 0; @@ -161,12 +161,8 @@ } if (!nosuspend && (switch_channel_test_flag(chan_a, CF_SUSPEND) || switch_channel_test_flag(chan_b, CF_SUSPEND))) { - if (switch_channel_test_flag(chan_a, CF_SUSPEND)) { - status = SWITCH_STATUS_SUCCESS; - } else { - status = switch_core_session_read_frame(session_a, &read_frame, -1, stream_id); - } - + status = switch_core_session_read_frame(session_a, &read_frame, SWITCH_IO_FLAG_NONE, stream_id); + if (!SWITCH_READ_ACCEPTABLE(status)) { goto end_of_bridge_loop; } @@ -250,18 +246,18 @@ #ifndef SWITCH_VIDEO_IN_THREADS if (switch_channel_test_flag(chan_a, CF_VIDEO) && switch_channel_test_flag(chan_b, CF_VIDEO)) { /* read video from 1 channel and write it to the other */ - status = switch_core_session_read_video_frame(session_a, &read_frame, -1, 0); + status = switch_core_session_read_video_frame(session_a, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { goto end_of_bridge_loop; } - switch_core_session_write_video_frame(session_b, read_frame, -1, 0); + switch_core_session_write_video_frame(session_b, read_frame, SWITCH_IO_FLAG_NONE, 0); } #endif /* read audio from 1 channel and write it to the other */ - status = switch_core_session_read_frame(session_a, &read_frame, -1, stream_id); + status = switch_core_session_read_frame(session_a, &read_frame, SWITCH_IO_FLAG_NONE, stream_id); if (SWITCH_READ_ACCEPTABLE(status)) { if (switch_test_flag(read_frame, SFF_CNG)) { @@ -269,7 +265,7 @@ } if (status != SWITCH_STATUS_BREAK && !switch_channel_test_flag(chan_a, CF_HOLD)) { - if (switch_core_session_write_frame(session_b, read_frame, -1, stream_id) != SWITCH_STATUS_SUCCESS) { + if (switch_core_session_write_frame(session_b, read_frame, SWITCH_IO_FLAG_NONE, stream_id) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "write: %s Bad Frame....[%u] Bubye!\n", switch_channel_get_name(chan_b), read_frame->datalen); goto end_of_bridge_loop; @@ -354,7 +350,7 @@ return NULL; } -static switch_status_t audio_bridge_on_loopback(switch_core_session_t *session) +static switch_status_t audio_bridge_on_exchange_media(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); switch_ivr_bridge_data_t *bd = switch_channel_get_private(channel, "_bridge_"); @@ -374,25 +370,25 @@ state = switch_channel_get_state(channel); - if (!switch_channel_test_flag(channel, CF_TRANSFER) && state != CS_PARK && state != CS_RING) { + if (!switch_channel_test_flag(channel, CF_TRANSFER) && state != CS_PARK && state != CS_ROUTING) { switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); } return SWITCH_STATUS_FALSE; } -static switch_status_t audio_bridge_on_ring(switch_core_session_t *session) +static switch_status_t audio_bridge_on_routing(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM RING\n", switch_channel_get_name(channel)); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CUSTOM ROUTING\n", switch_channel_get_name(channel)); /* put the channel in a passive state so we can loop audio to it */ - switch_channel_set_state(channel, CS_HOLD); + switch_channel_set_state(channel, CS_CONSUME_MEDIA); return SWITCH_STATUS_FALSE; } -static switch_status_t audio_bridge_on_hold(switch_core_session_t *session) +static switch_status_t audio_bridge_on_consume_media(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); @@ -404,12 +400,12 @@ static const switch_state_handler_table_t audio_bridge_peer_state_handlers = { /*.on_init */ NULL, - /*.on_ring */ audio_bridge_on_ring, + /*.on_routing */ audio_bridge_on_routing, /*.on_execute */ NULL, /*.on_hangup */ NULL, - /*.on_loopback */ audio_bridge_on_loopback, - /*.on_transmit */ NULL, - /*.on_hold */ audio_bridge_on_hold, + /*.on_exchange_media */ audio_bridge_on_exchange_media, + /*.on_soft_execute */ NULL, + /*.on_consume_media */ audio_bridge_on_consume_media, }; static switch_status_t uuid_bridge_on_reset(switch_core_session_t *session) @@ -421,13 +417,13 @@ switch_channel_clear_flag(channel, CF_TRANSFER); if (switch_channel_test_flag(channel, CF_ORIGINATOR)) { - switch_channel_set_state(channel, CS_TRANSMIT); + switch_channel_set_state(channel, CS_SOFT_EXECUTE); } return SWITCH_STATUS_SUCCESS; } -static switch_status_t uuid_bridge_on_transmit(switch_core_session_t *session) +static switch_status_t uuid_bridge_on_soft_execute(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); switch_core_session_t *other_session; @@ -459,10 +455,10 @@ } if (switch_channel_get_state(other_channel) == CS_RESET) { - switch_channel_set_state(other_channel, CS_TRANSMIT); + switch_channel_set_state(other_channel, CS_SOFT_EXECUTE); } - switch_channel_wait_for_state(channel, other_channel, CS_TRANSMIT); + switch_channel_wait_for_state(channel, other_channel, CS_SOFT_EXECUTE); switch_channel_clear_flag(channel, CF_TRANSFER); switch_channel_clear_flag(other_channel, CF_TRANSFER); @@ -512,12 +508,12 @@ static const switch_state_handler_table_t uuid_bridge_state_handlers = { /*.on_init */ NULL, - /*.on_ring */ NULL, + /*.on_routing */ NULL, /*.on_execute */ NULL, /*.on_hangup */ NULL, - /*.on_loopback */ NULL, - /*.on_transmit */ uuid_bridge_on_transmit, - /*.on_hold */ NULL, + /*.on_exchange_media */ NULL, + /*.on_soft_execute */ uuid_bridge_on_soft_execute, + /*.on_consume_media */ NULL, /*.on_hibernate*/ NULL, /*.on_reset*/ uuid_bridge_on_reset }; @@ -572,12 +568,12 @@ static const switch_state_handler_table_t signal_bridge_state_handlers = { /*.on_init */ NULL, - /*.on_ring */ NULL, + /*.on_routing */ NULL, /*.on_execute */ NULL, /*.on_hangup */ signal_bridge_on_hangup, - /*.on_loopback */ NULL, - /*.on_transmit */ NULL, - /*.on_hold */ NULL, + /*.on_exchange_media */ NULL, + /*.on_soft_execute */ NULL, + /*.on_consume_media */ NULL, /*.on_hibernate */ signal_bridge_on_hibernate }; @@ -681,7 +677,7 @@ const switch_application_interface_t *application_interface; const char *app, *data; - switch_channel_set_state(peer_channel, CS_HOLD); + switch_channel_set_state(peer_channel, CS_CONSUME_MEDIA); if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_BRIDGE) == SWITCH_STATUS_SUCCESS) { switch_channel_event_set_data(caller_channel, event); @@ -697,7 +693,7 @@ if ((status = switch_ivr_wait_for_answer(session, peer_session)) != SWITCH_STATUS_SUCCESS) { switch_channel_state_t w_state = switch_channel_get_state(caller_channel); switch_channel_hangup(peer_channel, SWITCH_CAUSE_ALLOTTED_TIMEOUT); - if (w_state < CS_HANGUP && w_state != CS_RING && w_state != CS_PARK && !switch_channel_test_flag(caller_channel, CF_TRANSFER) && + if (w_state < CS_HANGUP && w_state != CS_ROUTING && w_state != CS_PARK && !switch_channel_test_flag(caller_channel, CF_TRANSFER) && w_state != CS_EXECUTE) { const char *ext = switch_channel_get_variable(peer_channel, "original_destination_number"); if (!ext) { @@ -757,17 +753,17 @@ } switch_channel_set_private(peer_channel, "_bridge_", b_leg); - switch_channel_set_state(peer_channel, CS_LOOPBACK); + switch_channel_set_state(peer_channel, CS_EXCHANGE_MEDIA); audio_bridge_thread(NULL, (void *) a_leg); switch_channel_clear_flag(caller_channel, CF_ORIGINATOR); //make sure this doesnt break anything - if (!switch_channel_test_flag(peer_channel, CF_TRANSFER) && switch_channel_get_state(peer_channel) == CS_LOOPBACK) { + if (!switch_channel_test_flag(peer_channel, CF_TRANSFER) && switch_channel_get_state(peer_channel) == CS_EXCHANGE_MEDIA) { switch_channel_set_state(peer_channel, CS_RESET); } - while (switch_channel_get_state(peer_channel) == CS_LOOPBACK) { + while (switch_channel_get_state(peer_channel) == CS_EXCHANGE_MEDIA) { switch_yield(1000); } @@ -800,7 +796,7 @@ state = switch_channel_get_state(caller_channel); if (!switch_channel_test_flag(caller_channel, CF_TRANSFER)) { - if ((state != CS_EXECUTE && state != CS_PARK && state != CS_RING) || + if ((state != CS_EXECUTE && state != CS_PARK && state != CS_ROUTING) || (switch_channel_test_flag(peer_channel, CF_ANSWERED) && state < CS_HANGUP && switch_true(switch_channel_get_variable(caller_channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE)))) { switch_channel_hangup(caller_channel, switch_channel_get_cause(peer_channel)); @@ -849,7 +845,7 @@ /* override transmit state for originator_channel to bridge to originatee_channel * install pointer to originatee_session into originator_channel - * set CF_TRANSFER on both channels and change state to CS_TRANSMIT to + * set CF_TRANSFER on both channels and change state to CS_SOFT_EXECUTE to * inturrupt anything they are already doing. * originatee_session will fall asleep and originator_session will bridge to it */ Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_originate.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_originate.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_originate.c Tue May 13 23:37:33 2008 @@ -34,12 +34,14 @@ static const switch_state_handler_table_t originate_state_handlers; -static switch_status_t originate_on_hold_transmit(switch_core_session_t *session) +static switch_status_t originate_on_consume_media_transmit(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); - while(switch_channel_get_state(channel) == CS_HOLD) { - switch_ivr_sleep(session, 10); + if (!switch_channel_test_flag(channel, CF_PROXY_MODE)) { + while(switch_channel_get_state(channel) == CS_CONSUME_MEDIA) { + switch_ivr_sleep(session, 10); + } } switch_channel_clear_state_handler(channel, &originate_state_handlers); @@ -47,24 +49,24 @@ return SWITCH_STATUS_FALSE; } -static switch_status_t originate_on_ring(switch_core_session_t *session) +static switch_status_t originate_on_routing(switch_core_session_t *session) { switch_channel_t *channel = switch_core_session_get_channel(session); /* put the channel in a passive state until it is answered */ - switch_channel_set_state(channel, CS_HOLD); + switch_channel_set_state(channel, CS_CONSUME_MEDIA); return SWITCH_STATUS_FALSE; } static const switch_state_handler_table_t originate_state_handlers = { /*.on_init */ NULL, - /*.on_ring */ originate_on_ring, + /*.on_routing */ originate_on_routing, /*.on_execute */ NULL, /*.on_hangup */ NULL, - /*.on_loopback */ NULL, - /*.on_transmit */ originate_on_hold_transmit, - /*.on_hold */ originate_on_hold_transmit + /*.on_exchange_media */ NULL, + /*.on_soft_execute */ originate_on_consume_media_transmit, + /*.on_consume_media */ originate_on_consume_media_transmit }; typedef enum { @@ -113,7 +115,7 @@ goto wbreak; } - switch_channel_set_state(channel, CS_TRANSMIT); + switch_channel_set_state(channel, CS_SOFT_EXECUTE); switch_core_session_exec(collect->session, application_interface, app_data); if (switch_channel_get_state(channel) < CS_HANGUP) { @@ -341,7 +343,7 @@ read_codec->implementation->number_of_channels, read_codec->implementation->actual_samples_per_second, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, - switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Playing File\n"); switch_safe_free(tmp_data); goto done; @@ -383,7 +385,7 @@ message = NULL; } } - status = switch_core_session_read_frame(session, &read_frame, 1000, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } @@ -421,7 +423,7 @@ } } - if (switch_core_session_write_frame(session, &write_frame, 1000, 0) != SWITCH_STATUS_SUCCESS) { + if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { break; } } else { @@ -884,7 +886,7 @@ if (!switch_core_session_running(peer_sessions[i])) { //if (!(flags & SOF_NOBLOCK)) { - //switch_channel_set_state(peer_channels[i], CS_RING); + //switch_channel_set_state(peer_channels[i], CS_ROUTING); //} //} else { switch_core_session_thread_launch(peer_sessions[i]); @@ -910,7 +912,7 @@ continue; } - if (state >= CS_RING) { + if (state >= CS_ROUTING) { goto endfor1; } @@ -994,7 +996,7 @@ read_codec->implementation->number_of_channels, read_codec->implementation->actual_samples_per_second, SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, - switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Playing File\n"); switch_safe_free(tmp_data); goto notready; @@ -1057,11 +1059,13 @@ } } - /* read from the channel while we wait if the audio is up on it */ - if (session && (ringback_data || - !(switch_channel_test_flag(caller_channel, CF_PROXY_MODE) && switch_channel_test_flag(caller_channel, CF_PROXY_MODE))) && - (switch_channel_test_flag(caller_channel, CF_ANSWERED) || switch_channel_test_flag(caller_channel, CF_EARLY_MEDIA))) { - switch_status_t tstatus = switch_core_session_read_frame(session, &read_frame, 1000, 0); + /* read from the channel while we wait if the audio is up on it */ + if (session && + !switch_channel_test_flag(caller_channel, CF_PROXY_MODE) && + !switch_channel_test_flag(caller_channel, CF_PROXY_MEDIA) && + (ringback_data || (switch_channel_test_flag(caller_channel, CF_ANSWERED) || switch_channel_test_flag(caller_channel, CF_EARLY_MEDIA)))) { + + switch_status_t tstatus = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(tstatus)) { break; @@ -1100,7 +1104,7 @@ } } - if (switch_core_session_write_frame(session, &write_frame, 1000, 0) != SWITCH_STATUS_SUCCESS) { + if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { break; } } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_play_say.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_play_say.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_ivr_play_say.c Tue May 13 23:37:33 2008 @@ -65,7 +65,7 @@ NULL }; -static switch_say_method_t get_say_method_by_name(char *name) +SWITCH_DECLARE(switch_say_method_t) switch_ivr_get_say_method_by_name(const char *name) { int x = 0; for (x = 0; SAY_METHOD_NAMES[x]; x++) { @@ -77,7 +77,7 @@ return (switch_say_method_t) x; } -static switch_say_type_t get_say_type_by_name(char *name) +SWITCH_DECLARE(switch_say_type_t) switch_ivr_get_say_type_by_name(const char *name) { int x = 0; for (x = 0; SAY_TYPE_NAMES[x]; x++) { @@ -286,7 +286,7 @@ char *say_type = (char *) switch_xml_attr_soft(action, "type"); char *say_method = (char *) switch_xml_attr_soft(action, "method"); - status = si->say_function(session, odata, get_say_type_by_name(say_type), get_say_method_by_name(say_method), args); + status = si->say_function(session, odata, switch_ivr_get_say_type_by_name(say_type), switch_ivr_get_say_method_by_name(say_method), args); } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid SAY Interface [%s]!\n", module_name); } @@ -373,7 +373,7 @@ file, fh->channels, read_codec->implementation->actual_samples_per_second, - SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) { switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); switch_core_session_reset(session, SWITCH_TRUE); return SWITCH_STATUS_GENERR; @@ -505,7 +505,7 @@ } } - status = switch_core_session_read_frame(session, &read_frame, -1, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; } @@ -624,7 +624,7 @@ break; } - status = switch_core_session_read_frame(session, &read_frame, 1000, 0); + status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(status)) { break; @@ -643,7 +643,7 @@ write_frame.samples = write_frame.datalen / 2; - if (switch_core_session_write_frame(session, &write_frame, 1000, 0) != SWITCH_STATUS_SUCCESS) { + if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { break; } } @@ -674,7 +674,6 @@ switch_codec_t codec; switch_memory_pool_t *pool = switch_core_session_get_pool(session); char *codec_name; - int stream_id = 0; switch_status_t status = SWITCH_STATUS_SUCCESS; switch_file_handle_t lfh; switch_codec_t *read_codec = NULL; @@ -789,7 +788,7 @@ file, read_codec->implementation->number_of_channels, read_codec->implementation->actual_samples_per_second, - SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) != SWITCH_STATUS_SUCCESS) { switch_core_session_reset(session, SWITCH_TRUE); status = SWITCH_STATUS_NOTFOUND; goto end; @@ -899,9 +898,7 @@ if (timer_name) { /* start a thread to absorb incoming audio */ - for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) { - switch_core_service_session(session, &thread_session, stream_id); - } + switch_core_service_session(session, &thread_session, 0); } ilen = samples; @@ -1080,14 +1077,12 @@ } #endif #endif - stream_id = 0; - if (fh->vol) { switch_change_sln_volume(write_frame.data, write_frame.datalen / 2, fh->vol); } fh->offset_pos += write_frame.samples / 2; - status = switch_core_session_write_frame(session, &write_frame, -1, stream_id); + status = switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0); if (status == SWITCH_STATUS_MORE_DATA) { status = SWITCH_STATUS_SUCCESS; @@ -1112,7 +1107,7 @@ switch_yield(10000); } - tstatus = switch_core_session_read_frame(session, &read_frame, -1, 0); + tstatus = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); if (!SWITCH_READ_ACCEPTABLE(tstatus)) { break; @@ -1338,7 +1333,6 @@ switch_size_t ilen = 0; switch_frame_t write_frame = { 0 }; int x; - int stream_id = 0; int done = 0; int lead_in_out = 10; switch_status_t status = SWITCH_STATUS_SUCCESS; @@ -1420,7 +1414,7 @@ if (timer) { write_frame.timestamp = timer->samplecount; } - if (switch_core_session_write_frame(session, &write_frame, -1, stream_id) != SWITCH_STATUS_SUCCESS) { + if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { done = 1; break; } @@ -1490,7 +1484,7 @@ } } else { switch_frame_t *read_frame; - switch_status_t tstatus = switch_core_session_read_frame(session, &read_frame, -1, 0); + switch_status_t tstatus = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); while (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_HOLD)) { switch_yield(10000); @@ -1518,7 +1512,7 @@ if (timer) { write_frame.timestamp = timer->samplecount; } - if (switch_core_session_write_frame(session, &write_frame, -1, stream_id) != SWITCH_STATUS_SUCCESS) { + if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { done = 1; break; } @@ -1538,7 +1532,7 @@ if (timer) { write_frame.timestamp = timer->samplecount; } - if (switch_core_session_write_frame(session, &write_frame, -1, stream_id) != SWITCH_STATUS_SUCCESS) { + if (switch_core_session_write_frame(session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) { done = 1; break; } @@ -1553,7 +1547,7 @@ } } else { /* time off the channel (if you must) */ switch_frame_t *read_frame; - switch_status_t tstatus = switch_core_session_read_frame(session, &read_frame, -1, 0); + switch_status_t tstatus = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); while (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_HOLD)) { switch_yield(10000); @@ -1618,7 +1612,6 @@ switch_codec_t lcodec, *codec; switch_memory_pool_t *pool = switch_core_session_get_pool(session); char *codec_name; - int stream_id = 0; switch_status_t status = SWITCH_STATUS_SUCCESS; switch_speech_handle_t lsh, *sh; switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_NONE; @@ -1721,9 +1714,8 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "setup timer success %u bytes per %d ms!\n", sh->samples * 2, interval); } /* start a thread to absorb incoming audio */ - for (stream_id = 0; stream_id < switch_core_session_get_stream_count(session); stream_id++) { - switch_core_service_session(session, &thread_session, stream_id); - } + switch_core_service_session(session, &thread_session, 0); + } status = switch_ivr_speak_text_handle(session, sh, write_frame.codec, timer_name ? timer : NULL, text, args); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_loadable_module.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_loadable_module.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_loadable_module.c Tue May 13 23:37:33 2008 @@ -1276,12 +1276,14 @@ for (imp = codec_interface->implementations; imp; imp = imp->next) { uint8_t match = 1; - if ((uint32_t) (imp->microseconds_per_frame / 1000) != 20) { - match = 0; - } - - if (match && rate && (uint32_t) imp->samples_per_second != rate) { - match = 0; + if (imp->codec_type != SWITCH_CODEC_TYPE_VIDEO) { + if ((uint32_t) (imp->microseconds_per_frame / 1000) != 20) { + match = 0; + } + + if (match && rate && (uint32_t) imp->samples_per_second != rate) { + match = 0; + } } if (match) { @@ -1295,12 +1297,14 @@ for (imp = codec_interface->implementations; imp; imp = imp->next) { uint8_t match = 1; - if (interval && (uint32_t) (imp->microseconds_per_frame / 1000) != interval) { - match = 0; - } + if (imp->codec_type != SWITCH_CODEC_TYPE_VIDEO) { + if (interval && (uint32_t) (imp->microseconds_per_frame / 1000) != interval) { + match = 0; + } - if (match && rate && (uint32_t) imp->samples_per_second != rate) { - match = 0; + if (match && rate && (uint32_t) imp->samples_per_second != rate) { + match = 0; + } } if (match) { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_rtp.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_rtp.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_rtp.c Tue May 13 23:37:33 2008 @@ -238,6 +238,7 @@ { switch_stun_packet_t *packet; switch_stun_packet_attribute_t *attr; + void *end_buf; char username[33] = { 0 }; unsigned char buf[512] = { 0 }; switch_size_t cpylen = len; @@ -260,6 +261,12 @@ memcpy(buf, data, cpylen); packet = switch_stun_packet_parse(buf, sizeof(buf)); + if (!packet) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid STUN/ICE packet received\n"); + goto end; + } + end_buf = buf + ((sizeof(buf) > packet->header.length) ? packet->header.length : sizeof(buf)); + rtp_session->last_stun = switch_time_now(); switch_stun_packet_first_attribute(packet, attr); @@ -279,7 +286,7 @@ } break; } - } while (switch_stun_packet_next_attribute(attr)); + } while (switch_stun_packet_next_attribute(attr, end_buf)); if ((packet->header.type == SWITCH_STUN_BINDING_REQUEST) && !strcmp(rtp_session->user_ice, username)) { uint8_t stunbuf[512]; @@ -1094,7 +1101,7 @@ } } -static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_type, switch_frame_flag_t *flags) +static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_type, switch_frame_flag_t *flags, switch_io_flag_t io_flags) { switch_size_t bytes = 0; switch_status_t status; @@ -1142,6 +1149,12 @@ goto end; } + if (!bytes && (io_flags & SWITCH_IO_FLAG_NOBLOCK)) { + do_cng = 1; + goto cng; + } + + if (rtp_session->timer.interval) { check = (uint8_t) (switch_core_timer_check(&rtp_session->timer, SWITCH_TRUE) == SWITCH_STATUS_SUCCESS); if (bytes) { @@ -1508,7 +1521,7 @@ } SWITCH_DECLARE(switch_status_t) switch_rtp_read(switch_rtp_t *rtp_session, void *data, uint32_t * datalen, - switch_payload_t *payload_type, switch_frame_flag_t *flags) + switch_payload_t *payload_type, switch_frame_flag_t *flags, switch_io_flag_t io_flags) { int bytes = 0; @@ -1516,7 +1529,7 @@ return SWITCH_STATUS_FALSE; } - bytes = rtp_common_read(rtp_session, payload_type, flags); + bytes = rtp_common_read(rtp_session, payload_type, flags, io_flags); if (bytes < 0) { *datalen = 0; @@ -1535,7 +1548,7 @@ return SWITCH_STATUS_SUCCESS; } -SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read_frame(switch_rtp_t *rtp_session, switch_frame_t *frame) +SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read_frame(switch_rtp_t *rtp_session, switch_frame_t *frame, switch_io_flag_t io_flags) { int bytes = 0; @@ -1543,7 +1556,7 @@ return SWITCH_STATUS_FALSE; } - bytes = rtp_common_read(rtp_session, &frame->payload, &frame->flags); + bytes = rtp_common_read(rtp_session, &frame->payload, &frame->flags, io_flags); frame->data = rtp_session->recv_msg.body; frame->packet = &rtp_session->recv_msg; @@ -1574,7 +1587,7 @@ } SWITCH_DECLARE(switch_status_t) switch_rtp_zerocopy_read(switch_rtp_t *rtp_session, - void **data, uint32_t * datalen, switch_payload_t *payload_type, switch_frame_flag_t *flags) + void **data, uint32_t * datalen, switch_payload_t *payload_type, switch_frame_flag_t *flags, switch_io_flag_t io_flags) { int bytes = 0; @@ -1582,7 +1595,7 @@ return SWITCH_STATUS_FALSE; } - bytes = rtp_common_read(rtp_session, payload_type, flags); + bytes = rtp_common_read(rtp_session, payload_type, flags, io_flags); *data = rtp_session->recv_msg.body; if (bytes < 0) { Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_stun.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_stun.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_stun.c Tue May 13 23:37:33 2008 @@ -113,10 +113,13 @@ } } + SWITCH_DECLARE(switch_stun_packet_t *) switch_stun_packet_parse(uint8_t * buf, uint32_t len) { switch_stun_packet_t *packet; switch_stun_packet_attribute_t *attr; + uint32_t bytes_left = len; + void *end_buf = buf + len; if (len < SWITCH_STUN_PACKET_MIN_LEN) { return NULL; @@ -125,23 +128,181 @@ packet = (switch_stun_packet_t *) buf; packet->header.type = ntohs(packet->header.type); packet->header.length = ntohs(packet->header.length); + bytes_left -= packet->header.length + 20; + + /* + * Check packet type (RFC3489(bis?) values) + */ + switch(packet->header.type) { + case SWITCH_STUN_BINDING_REQUEST: + case SWITCH_STUN_BINDING_RESPONSE: + case SWITCH_STUN_BINDING_ERROR_RESPONSE: + case SWITCH_STUN_SHARED_SECRET_REQUEST: + case SWITCH_STUN_SHARED_SECRET_RESPONSE: + case SWITCH_STUN_SHARED_SECRET_ERROR_RESPONSE: + case SWITCH_STUN_ALLOCATE_REQUEST: + case SWITCH_STUN_ALLOCATE_RESPONSE: + case SWITCH_STUN_ALLOCATE_ERROR_RESPONSE: + case SWITCH_STUN_SEND_REQUEST: + case SWITCH_STUN_SEND_RESPONSE: + case SWITCH_STUN_SEND_ERROR_RESPONSE: + case SWITCH_STUN_DATA_INDICATION: + /* Valid */ + break; + + default: + /* Invalid value */ + return NULL; + } + + /* + * Check for length overflow + */ + if (bytes_left <= 0) { + /* Invalid */ + return NULL; + } + + /* + * No payload? + */ + if (packet->header.length == 0) { + /* Invalid?! */ + return NULL; + } + + /* check if we have enough bytes left for an attribute */ + if (bytes_left < SWITCH_STUN_ATTRIBUTE_MIN_LEN) { + return NULL; + } + switch_stun_packet_first_attribute(packet, attr); do { attr->length = ntohs(attr->length); attr->type = ntohs(attr->type); - if (!attr->length) { - break; + bytes_left -= 4; /* attribute header consumed */ + + if (!attr->length || switch_stun_attribute_padded_length(attr) > bytes_left) { + /* + * Note we simply don't "break" here out of the loop anymore because + * we don't want the upper layers to have to deal with attributes without a value + * (or worse: invalid length) + */ + return NULL; } + + /* + * Handle STUN attributes + */ switch (attr->type) { - case SWITCH_STUN_ATTR_MAPPED_ADDRESS: - if (attr->type) { + case SWITCH_STUN_ATTR_MAPPED_ADDRESS: /* Address, we only care about this one, but parse the others too */ + case SWITCH_STUN_ATTR_RESPONSE_ADDRESS: + case SWITCH_STUN_ATTR_SOURCE_ADDRESS: + case SWITCH_STUN_ATTR_CHANGED_ADDRESS: + case SWITCH_STUN_ATTR_REFLECTED_FROM: + case SWITCH_STUN_ATTR_ALTERNATE_SERVER: + case SWITCH_STUN_ATTR_DESTINATION_ADDRESS: + case SWITCH_STUN_ATTR_SOURCE_ADDRESS2: + { switch_stun_ip_t *ip; + uint32_t addr_length = 0; ip = (switch_stun_ip_t *) attr->value; + + switch (ip->family) { + case 0x01: /* IPv4 */ + addr_length = 4; + break; + + case 0x02: /* IPv6 */ + addr_length = 16; + break; + + default: /* Invalid */ + return NULL; + } + + /* attribute payload length must be == address length + size of other payload fields (family...) */ + if (attr->length != addr_length + 4) { + /* Invalid */ + return NULL; + } + ip->port = ntohs(ip->port); } break; + + case SWITCH_STUN_ATTR_CHANGE_REQUEST: /* UInt32 */ + case SWITCH_STUN_ATTR_LIFETIME: + case SWITCH_STUN_ATTR_BANDWIDTH: + case SWITCH_STUN_ATTR_OPTIONS: + { + uint32_t *val = (uint32_t *) attr->value; + + if (attr->length != sizeof(uint32_t)) { + /* Invalid */ + return NULL; + } + + *val = ntohl(*val); /* should we do this here? */ + } + break; + + case SWITCH_STUN_ATTR_USERNAME: /* ByteString, multiple of 4 bytes */ + case SWITCH_STUN_ATTR_PASSWORD: /* ByteString, multiple of 4 bytes */ + if (attr->length % 4 != 0) { + /* Invalid */ + return NULL; + } + break; + + case SWITCH_STUN_ATTR_DATA: /* ByteString */ + case SWITCH_STUN_ATTR_ERROR_CODE: /* ErrorCode */ + case SWITCH_STUN_ATTR_TRANSPORT_PREFERENCES: /* TransportPrefs */ + /* + * No length checking here, since we already checked against the padded length + * before + */ + break; + + case SWITCH_STUN_ATTR_MESSAGE_INTEGRITY: /* ByteString, 20 bytes */ + if (attr->length != 20) { + /* Invalid */ + return NULL; + } + break; + + case SWITCH_STUN_ATTR_MAGIC_COOKIE: /* ByteString, 4 bytes */ + if (attr->length != 4) { + /* Invalid */ + return NULL; + } + break; + + case SWITCH_STUN_ATTR_UNKNOWN_ATTRIBUTES: /* UInt16List (= multiple of 2 bytes) */ + if (attr->length % 2 != 0) { + return NULL; + } + break; + + default: + /* Mandatory attribute range? => invalid */ + if (attr->type <= 0x7FFF) { + return NULL; + } + break; } - } while (switch_stun_packet_next_attribute(attr)); + bytes_left -= switch_stun_attribute_padded_length(attr); /* attribute value consumed, substract padded length */ + + } while (bytes_left >= SWITCH_STUN_ATTRIBUTE_MIN_LEN && switch_stun_packet_next_attribute(attr, end_buf)); + + if ((uint32_t)(packet->header.length + 20) > (uint32_t)(len - bytes_left)) { + /* + * the packet length is longer than the length of all attributes? + * for now simply decrease the packet size + */ + packet->header.length = (uint16_t)((len - bytes_left) - 20); + } + return packet; } @@ -273,6 +434,7 @@ switch_sockaddr_t *local_addr = NULL, *remote_addr = NULL, *from_addr = NULL; switch_socket_t *sock = NULL; uint8_t buf[256] = { 0 }; + void *end_buf; switch_stun_packet_t *packet; switch_stun_packet_attribute_t *attr; switch_size_t bytes = 0; @@ -335,8 +497,13 @@ switch_socket_close(sock); packet = switch_stun_packet_parse(buf, sizeof(buf)); - switch_stun_packet_first_attribute(packet, attr); + if (!packet) { + *err = "Invalid STUN/ICE packet"; + return SWITCH_STATUS_FALSE; + } + end_buf = buf + ((sizeof(buf) > packet->header.length) ? packet->header.length : sizeof(buf)); + switch_stun_packet_first_attribute(packet, attr); do { switch (attr->type) { case SWITCH_STUN_ATTR_MAPPED_ADDRESS: @@ -350,7 +517,7 @@ } break; } - } while (switch_stun_packet_next_attribute(attr)); + } while (switch_stun_packet_next_attribute(attr, end_buf)); if (packet->header.type == SWITCH_STUN_BINDING_RESPONSE) { *ip = switch_core_strdup(pool, rip); Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_time.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_time.c (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/src/switch_time.c Tue May 13 23:37:33 2008 @@ -173,6 +173,9 @@ } if ((private_info = switch_core_alloc(timer->memory_pool, sizeof(*private_info)))) { +#if defined(WIN32) + timeBeginPeriod(1); +#endif switch_mutex_lock(globals.mutex); TIMER_MATRIX[timer->interval].count++; switch_mutex_unlock(globals.mutex); @@ -454,6 +457,12 @@ switch_yield(10000); } } + +#if defined(WIN32) + timeEndPeriod(1); +#endif + + return SWITCH_STATUS_SUCCESS; } Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/w32/Setup/Setup.2008.vdproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/w32/Setup/Setup.2008.vdproj (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/w32/Setup/Setup.2008.vdproj Tue May 13 23:37:33 2008 @@ -219,12 +219,6 @@ } "Entry" { - "MsmKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_4132509BFE93497C8E86E017E5B98F69" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -279,6 +273,12 @@ } "Entry" { + "MsmKey" = "8:_52E46D57FE2F483E9CB36B77E39EB120" + "OwnerKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_549D54D0FFCA4C719EE17DF14BB3E61C" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -496,7 +496,7 @@ "Entry" { "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" + "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" "MsmSig" = "8:_UNDEFINED" } "Entry" @@ -513,12 +513,6 @@ } "Entry" { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_8B53F026686B44189676CBC200E641C1" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -627,18 +621,312 @@ } "Entry" { - "MsmKey" = "8:_A164EF86C4B57E41C8CE77B48F39DAC7" + "MsmKey" = "8:_A3936A2727E73289F5804D5DA006FD0A" + "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_0772289C2CC6435396616D7A2C407EA2" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_FBD45C36E901435399634CACA5339597" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_FBB0E565B1DE49CE9C827ACAC337AC5B" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_FB1B9FBDC3294F1C96DAC4246C013C22" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_F366CE9AB8F74F8E8388B033FC81C4C3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_EF14CB99F3414BB689D0CB0E6D6B8AB8" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_EC4922AEC1064C90B96EBBDD3104D761" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_EAF4B051F44745ABA9B58038FB93994C" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_E763C699DF0948B6984DDEB96A2DFD06" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_E1AA7C5B96DA4A26859D2C7A21E00AB6" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_D7EC5795A9C645AC8E129C2EE6D461ED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_D6F0F5845FAD4707975CE012A33CD607" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_A3936A2727E73289F5804D5DA006FD0A" + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_D1269F1E49D442CF8EAC96C23E60325D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_D0BB09AFB8D94B76918F0EE85BCCAD0A" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_C81AC700C1BC4A55B98DF12C0CBAFD6F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_C105055EE271471A999CE7022E617EB7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_C1036825E1364537B537E542E71F9C0E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_BB99CEDF341D40F3976B6D5486D9366D" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_B5542B260CD5493395871EFDE833E438" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_B0A2E9B4C45D4098AFD734D0C4E3EAFB" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_A1132A25606840309D744CBC67BE0579" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_9B19C40442134D69B533E16D0851D99B" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_96F8F7DE89C74DC399E8AE55C22B4F15" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_95D01083472B4853AC3F06514558F347" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_8E023477B9DC4126921A556B285B29E5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_8B53F026686B44189676CBC200E641C1" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_7B1050643E1E48A3B67B281B4AD43904" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_77550ABD8CC84D66A3B6C3C3C48665A4" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_6E5C001E7A314DCEA0A4BF52BF74BCAD" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_6DF726E4018A4136BC27E2C6F4B67B9E" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_5EDFD5418DD243D1A03D882B83BBBCF1" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_4A285D260C3748A4BEFA6E5A9004D128" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_3E37631016BC45B2B672FE23257D542B" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_3DB5A5EF1E624F999BCEA20250508EEA" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_318FCC99E8D143D6B4F9F534E63009B3" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_2F2FEC549F02436EB87961BD1B9E5783" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_2D9E612823084E3F9E10376A7AC0C476" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_2C6E622B76524C41A3C12953761C6693" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_2B80DCCD934745B1BB4F0B31099094D9" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_297D0BADB993435092DDB8CDF9F2A3C6" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" "MsmSig" = "8:_UNDEFINED" } "Entry" { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_2814E641538B42EFA83525986A9D5AC1" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_1DCA6B2BA0F842FDB5CBA54CF52228F7" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_1CFB1AB04E024FC993E0EB4859DF8408" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_1777CB4B737E4B8481E25A10950B2B5A" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_1678ADE0786044AF9A26FACF1EBA0CF6" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_A5FD3A07B7CB423590AF4F9C015C77E0" + "OwnerKey" = "8:_166BDBE308F54EE4881DA68F2A8189F5" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_A944ADCEDF884574A23F7BA5420A6BA1" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -795,12 +1083,6 @@ } "Entry" { - "MsmKey" = "8:_CB7CBDD38519056FAA16312EEF6BCAF7" - "OwnerKey" = "8:_2C6E622B76524C41A3C12953761C6693" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_CCAC35C9D0644917A28341E382DB6B93" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -1216,7 +1498,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1273F63008CF585CA0E063E436B4646F" { - "SourcePath" = "8:iphlpapi.dll" + "SourcePath" = "8:IPHLPAPI.DLL" "TargetName" = "8:iphlpapi.dll" "Tag" = "8:" "Folder" = "8:_06036160035041E38F4179E6DB6380C5" @@ -2514,26 +2796,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A164EF86C4B57E41C8CE77B48F39DAC7" - { - "SourcePath" = "8:libaprutil.dll" - "TargetName" = "8:libaprutil.dll" - "Tag" = "8:" - "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A3936A2727E73289F5804D5DA006FD0A" { "SourcePath" = "8:RPCRT4.dll" @@ -2814,26 +3076,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CB7CBDD38519056FAA16312EEF6BCAF7" - { - "SourcePath" = "8:mod_spidermonkey.dll" - "TargetName" = "8:mod_spidermonkey.dll" - "Tag" = "8:" - "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CCAC35C9D0644917A28341E382DB6B93" { "SourcePath" = "8:..\\..\\conf\\dialplan\\default.xml" @@ -4083,6 +4325,34 @@ } "MergeModule" { + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_52E46D57FE2F483E9CB36B77E39EB120" + { + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:TRUE" + "SourcePath" = "8:microsoft_vc90_debugcrt_x86.msm" + "Properties" + { + } + "LanguageId" = "3:0" + "Exclude" = "11:FALSE" + "Folder" = "8:" + "Feature" = "8:" + "IsolateTo" = "8:" + } + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_A5FD3A07B7CB423590AF4F9C015C77E0" + { + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:TRUE" + "SourcePath" = "8:policy_9_0_Microsoft_VC90_DebugCRT_x86.msm" + "Properties" + { + } + "LanguageId" = "3:0" + "Exclude" = "11:FALSE" + "Folder" = "8:" + "Feature" = "8:" + "IsolateTo" = "8:" + } } "ProjectOutput" { @@ -4534,34 +4804,6 @@ { } } - "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3FBEFE0119944C6781F81104ECEF37CA" - { - "SourcePath" = "8:..\\..\\Debug\\libapriconv.dll" - "TargetName" = "8:" - "Tag" = "8:" - "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - "ProjectOutputGroupRegister" = "3:1" - "OutputConfiguration" = "8:" - "OutputGroupCanonicalName" = "8:Built" - "OutputProjectGuid" = "8:{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}" - "ShowKeyOutput" = "11:TRUE" - "ExcludeFilters" - { - } - } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_4A285D260C3748A4BEFA6E5A9004D128" { "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey.dll" Modified: freeswitch/branches/lukedashjr/syslibs/freeswitch/w32/Setup/Setup.vdproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/freeswitch/w32/Setup/Setup.vdproj (original) +++ freeswitch/branches/lukedashjr/syslibs/freeswitch/w32/Setup/Setup.vdproj Tue May 13 23:37:33 2008 @@ -27,318 +27,6 @@ } "Entry" { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_0772289C2CC6435396616D7A2C407EA2" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_BA769056DBAF4259B38F5C3FF7377055" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_A8D70CB0D12C4B3FB2E2E896E9A7C843" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_78F060A241D0428998B42093C467AD36" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_9527B92C45BB45629BDB19ED3C8DC194" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_FBD45C36E901435399634CACA5339597" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_FBB0E565B1DE49CE9C827ACAC337AC5B" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_FB1B9FBDC3294F1C96DAC4246C013C22" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_EF14CB99F3414BB689D0CB0E6D6B8AB8" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_EC4922AEC1064C90B96EBBDD3104D761" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_EAF4B051F44745ABA9B58038FB93994C" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_E763C699DF0948B6984DDEB96A2DFD06" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_E1AA7C5B96DA4A26859D2C7A21E00AB6" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_D7EC5795A9C645AC8E129C2EE6D461ED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_D6F0F5845FAD4707975CE012A33CD607" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_D1269F1E49D442CF8EAC96C23E60325D" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_D0BB09AFB8D94B76918F0EE85BCCAD0A" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_C81AC700C1BC4A55B98DF12C0CBAFD6F" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_C105055EE271471A999CE7022E617EB7" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_C1036825E1364537B537E542E71F9C0E" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_BB99CEDF341D40F3976B6D5486D9366D" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_B5542B260CD5493395871EFDE833E438" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_B0A2E9B4C45D4098AFD734D0C4E3EAFB" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_A0D5F714A0F94250A1C39603B699AB82" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_9B19C40442134D69B533E16D0851D99B" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_96F8F7DE89C74DC399E8AE55C22B4F15" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_95D01083472B4853AC3F06514558F347" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_8E023477B9DC4126921A556B285B29E5" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_8B53F026686B44189676CBC200E641C1" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_7B1050643E1E48A3B67B281B4AD43904" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_77550ABD8CC84D66A3B6C3C3C48665A4" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_6E5C001E7A314DCEA0A4BF52BF74BCAD" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_6DF726E4018A4136BC27E2C6F4B67B9E" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_5EDFD5418DD243D1A03D882B83BBBCF1" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_4A285D260C3748A4BEFA6E5A9004D128" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_3E37631016BC45B2B672FE23257D542B" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_3DB5A5EF1E624F999BCEA20250508EEA" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_318FCC99E8D143D6B4F9F534E63009B3" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_2F2FEC549F02436EB87961BD1B9E5783" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_2D9E612823084E3F9E10376A7AC0C476" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_2B80DCCD934745B1BB4F0B31099094D9" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_297D0BADB993435092DDB8CDF9F2A3C6" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_2814E641538B42EFA83525986A9D5AC1" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_1DCA6B2BA0F842FDB5CBA54CF52228F7" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_1CFB1AB04E024FC993E0EB4859DF8408" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_1777CB4B737E4B8481E25A10950B2B5A" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" - "OwnerKey" = "8:_166BDBE308F54EE4881DA68F2A8189F5" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_103209E575C54D649DD1472DBB9B5F5D" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -393,6 +81,18 @@ } "Entry" { + "MsmKey" = "8:_22F4FC6A582C42A0817BA85C8FEBAA18" + "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_22F4FC6A582C42A0817BA85C8FEBAA18" + "OwnerKey" = "8:_A0D5F714A0F94250A1C39603B699AB82" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_27E8189E01B6420CB898CC51360C83A3" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -519,12 +219,6 @@ } "Entry" { - "MsmKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_4132509BFE93497C8E86E017E5B98F69" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -633,12 +327,6 @@ } "Entry" { - "MsmKey" = "8:_6A4CAD73F43678BF7C05E8FB41042F74" - "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_6AA8D6AF639F4E6B92D28A7E0D13FD5E" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -729,104 +417,98 @@ } "Entry" { - "MsmKey" = "8:_7B1050643E1E48A3B67B281B4AD43904" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_7A08061CFF2F14AC1D5A1B4592BEDB6D" + "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_7CFCCDD9C6694A0498D7CD6CDD285042" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_7A08061CFF2F14AC1D5A1B4592BEDB6D" + "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_7E46520FEA2B4DA7A90171E3467C29CA" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_7A08061CFF2F14AC1D5A1B4592BEDB6D" + "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_7F2A5D1B25FD4B109F5E17402117543A" + "MsmKey" = "8:_7B1050643E1E48A3B67B281B4AD43904" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_7FDBEDFAE608481684258301B02CFD1C" - "OwnerKey" = "8:_0CDD28A9559445CE96186F5FB19F690B" + "MsmKey" = "8:_7BBFE2768ACD3A62F3874EF99D16C0B8" + "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_7FEA1E60C11343F1A98DC33C512051FA" + "MsmKey" = "8:_7CFCCDD9C6694A0498D7CD6CDD285042" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_80D44DD7FA3C4E3F8D6BB8B4F949F6AF" + "MsmKey" = "8:_7E46520FEA2B4DA7A90171E3467C29CA" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_82158C38354740E99D416F1DB58C7E18" + "MsmKey" = "8:_7F2A5D1B25FD4B109F5E17402117543A" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_821771D6A597416391F899CD9147F75B" + "MsmKey" = "8:_7FEA1E60C11343F1A98DC33C512051FA" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_83131C9ADB7C4E6C88388D820F720BB5" + "MsmKey" = "8:_80D44DD7FA3C4E3F8D6BB8B4F949F6AF" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_8471500508034D338D599ED5C35F938F" + "MsmKey" = "8:_82158C38354740E99D416F1DB58C7E18" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_860B731FDCC848F79AB8DFD4D03E2A47" + "MsmKey" = "8:_821771D6A597416391F899CD9147F75B" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_86D8DF7599FF472096D6826044347537" + "MsmKey" = "8:_83131C9ADB7C4E6C88388D820F720BB5" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_3FBEFE0119944C6781F81104ECEF37CA" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" + "MsmKey" = "8:_8471500508034D338D599ED5C35F938F" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" + "MsmKey" = "8:_860B731FDCC848F79AB8DFD4D03E2A47" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_879085EF680EFDF6242DCB77439EC825" - "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" + "MsmKey" = "8:_86D8DF7599FF472096D6826044347537" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" @@ -849,14 +531,8 @@ } "Entry" { - "MsmKey" = "8:_90D7F247E8254DE797317F431E3FB010" - "OwnerKey" = "8:_UNDEFINED" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_91BA2668F87764F53188E93BC8D363D7" - "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" + "MsmKey" = "8:_90D7F247E8254DE797317F431E3FB010" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" @@ -939,12 +615,6 @@ } "Entry" { - "MsmKey" = "8:_A164EF86C4B57E41C8CE77B48F39DAC7" - "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_A3936A2727E73289F5804D5DA006FD0A" "OwnerKey" = "8:_28FBC5A60B44423B8A2CC378347483CE" "MsmSig" = "8:_UNDEFINED" @@ -1023,6 +693,12 @@ } "Entry" { + "MsmKey" = "8:_B540FA32E4F6382CF1426D13A0A4E6B7" + "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_B5542B260CD5493395871EFDE833E438" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -1083,6 +759,12 @@ } "Entry" { + "MsmKey" = "8:_BFD1EC957C5DBC08B54E6594C7CC5F91" + "OwnerKey" = "8:_D2EF447106B24E67907DAED3D39CFBB1" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_C1036825E1364537B537E542E71F9C0E" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -1119,12 +801,6 @@ } "Entry" { - "MsmKey" = "8:_CB7CBDD38519056FAA16312EEF6BCAF7" - "OwnerKey" = "8:_BA769056DBAF4259B38F5C3FF7377055" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_CCAC35C9D0644917A28341E382DB6B93" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -1167,14 +843,14 @@ } "Entry" { - "MsmKey" = "8:_D7E82DD20D5B47395F635480C8E3A1D3" - "OwnerKey" = "8:_F0B800E719294692A02518CFD8CBAEFF" + "MsmKey" = "8:_D7EC5795A9C645AC8E129C2EE6D461ED" + "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" } "Entry" { - "MsmKey" = "8:_D7EC5795A9C645AC8E129C2EE6D461ED" - "OwnerKey" = "8:_UNDEFINED" + "MsmKey" = "8:_DC30A9FB71F9449BAF1F5981E3538D1E" + "OwnerKey" = "8:_22F4FC6A582C42A0817BA85C8FEBAA18" "MsmSig" = "8:_UNDEFINED" } "Entry" @@ -1191,12 +867,6 @@ } "Entry" { - "MsmKey" = "8:_E1CC91FCF87955D17FC3C0A8E875B690" - "OwnerKey" = "8:_59CFED0C4EC0492C945E4EBC04FE965F" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { "MsmKey" = "8:_E5C5D9225978484CA7AD0BD78C1222EE" "OwnerKey" = "8:_UNDEFINED" "MsmSig" = "8:_UNDEFINED" @@ -1534,7 +1204,7 @@ } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1273F63008CF585CA0E063E436B4646F" { - "SourcePath" = "8:iphlpapi.dll" + "SourcePath" = "8:IPHLPAPI.DLL" "TargetName" = "8:iphlpapi.dll" "Tag" = "8:" "Folder" = "8:_06036160035041E38F4179E6DB6380C5" @@ -2132,26 +1802,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6A4CAD73F43678BF7C05E8FB41042F74" - { - "SourcePath" = "8:libteletone.dll" - "TargetName" = "8:libteletone.dll" - "Tag" = "8:" - "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6AA8D6AF639F4E6B92D28A7E0D13FD5E" { "SourcePath" = "8:..\\..\\conf\\dialplan\\extensions\\sipphone.com.noload" @@ -2372,6 +2022,46 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7A08061CFF2F14AC1D5A1B4592BEDB6D" + { + "SourcePath" = "8:libapr.dll" + "TargetName" = "8:libapr.dll" + "Tag" = "8:" + "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7BBFE2768ACD3A62F3874EF99D16C0B8" + { + "SourcePath" = "8:FreeSwitch.dll" + "TargetName" = "8:FreeSwitch.dll" + "Tag" = "8:" + "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7CFCCDD9C6694A0498D7CD6CDD285042" { "SourcePath" = "8:..\\..\\conf\\lang\\de\\de.xml" @@ -2592,26 +2282,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_879085EF680EFDF6242DCB77439EC825" - { - "SourcePath" = "8:libapr.dll" - "TargetName" = "8:libapr.dll" - "Tag" = "8:" - "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8FB175B8685A47F7BE75E1A025F65693" { "SourcePath" = "8:..\\..\\conf\\autoload_configs\\limit.conf.xml" @@ -2652,26 +2322,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_91BA2668F87764F53188E93BC8D363D7" - { - "SourcePath" = "8:libapriconv.dll" - "TargetName" = "8:libapriconv.dll" - "Tag" = "8:" - "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:TRUE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_92F95219F6434CE3A736526946DA2ABB" { "SourcePath" = "8:..\\..\\conf\\autoload_configs\\event_socket.conf.xml" @@ -2832,26 +2482,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A164EF86C4B57E41C8CE77B48F39DAC7" - { - "SourcePath" = "8:libaprutil.dll" - "TargetName" = "8:libaprutil.dll" - "Tag" = "8:" - "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A3936A2727E73289F5804D5DA006FD0A" { "SourcePath" = "8:RPCRT4.dll" @@ -2952,6 +2582,26 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B540FA32E4F6382CF1426D13A0A4E6B7" + { + "SourcePath" = "8:libteletone.dll" + "TargetName" = "8:libteletone.dll" + "Tag" = "8:" + "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B5ADB663C7CE49A1A11E895E4EBB4933" { "SourcePath" = "8:..\\..\\conf\\autoload_configs\\zeroconf.conf.xml" @@ -3072,12 +2722,12 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C7E9135AE3874E19809A03F02CCC15C9" + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BFD1EC957C5DBC08B54E6594C7CC5F91" { - "SourcePath" = "8:..\\..\\conf\\jingle_profiles\\server.noload" - "TargetName" = "8:server.noload" + "SourcePath" = "8:libaprutil.dll" + "TargetName" = "8:libaprutil.dll" "Tag" = "8:" - "Folder" = "8:_6521C567C8FB4E1389A5CD0BAA719A2E" + "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" @@ -3089,15 +2739,15 @@ "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" + "IsDependency" = "11:TRUE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C93A983EC95F4F45AF27F37D674CF86B" + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C7E9135AE3874E19809A03F02CCC15C9" { - "SourcePath" = "8:..\\..\\conf\\autoload_configs\\woomera.conf.xml" - "TargetName" = "8:woomera.conf.xml" + "SourcePath" = "8:..\\..\\conf\\jingle_profiles\\server.noload" + "TargetName" = "8:server.noload" "Tag" = "8:" - "Folder" = "8:_B3CE338501E445B593742462EDD46103" + "Folder" = "8:_6521C567C8FB4E1389A5CD0BAA719A2E" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" @@ -3112,12 +2762,12 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CB0CF364674E42A1B928D78A3823CB76" + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C93A983EC95F4F45AF27F37D674CF86B" { - "SourcePath" = "8:..\\..\\conf\\directory\\default\\1013.xml" - "TargetName" = "8:1013.xml" + "SourcePath" = "8:..\\..\\conf\\autoload_configs\\woomera.conf.xml" + "TargetName" = "8:woomera.conf.xml" "Tag" = "8:" - "Folder" = "8:_C67316B39FC9471EA6A197EDF9897073" + "Folder" = "8:_B3CE338501E445B593742462EDD46103" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" @@ -3132,12 +2782,12 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CB7CBDD38519056FAA16312EEF6BCAF7" + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CB0CF364674E42A1B928D78A3823CB76" { - "SourcePath" = "8:mod_spidermonkey.dll" - "TargetName" = "8:mod_spidermonkey.dll" + "SourcePath" = "8:..\\..\\conf\\directory\\default\\1013.xml" + "TargetName" = "8:1013.xml" "Tag" = "8:" - "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" + "Folder" = "8:_C67316B39FC9471EA6A197EDF9897073" "Condition" = "8:" "Transitive" = "11:FALSE" "Vital" = "11:TRUE" @@ -3149,7 +2799,7 @@ "PackageAs" = "3:1" "Register" = "3:1" "Exclude" = "11:FALSE" - "IsDependency" = "11:TRUE" + "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CCAC35C9D0644917A28341E382DB6B93" @@ -3212,26 +2862,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D7E82DD20D5B47395F635480C8E3A1D3" - { - "SourcePath" = "8:FreeSwitch.dll" - "TargetName" = "8:FreeSwitch.dll" - "Tag" = "8:" - "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:TRUE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DD54C8F25D0546E199ADB3C4B40EA20B" { "SourcePath" = "8:..\\..\\conf\\autoload_configs\\conference.conf.xml" @@ -3252,26 +2882,6 @@ "IsDependency" = "11:FALSE" "IsolateTo" = "8:" } - "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E1CC91FCF87955D17FC3C0A8E875B690" - { - "SourcePath" = "8:WLDAP32.dll" - "TargetName" = "8:WLDAP32.dll" - "Tag" = "8:" - "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:TRUE" - "IsDependency" = "11:TRUE" - "IsolateTo" = "8:" - } "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E5C5D9225978484CA7AD0BD78C1222EE" { "SourcePath" = "8:..\\..\\conf\\autoload_configs\\java.conf.xml" @@ -4401,11 +4011,11 @@ } "MergeModule" { - "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_0CDD28A9559445CE96186F5FB19F690B" + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_22F4FC6A582C42A0817BA85C8FEBAA18" { "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:TRUE" - "SourcePath" = "8:Microsoft_VC80_DebugCRT_x86.msm" + "SourcePath" = "8:Microsoft_VC80_CRT_x86.msm" "Properties" { } @@ -4415,11 +4025,11 @@ "Feature" = "8:" "IsolateTo" = "8:" } - "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_7FDBEDFAE608481684258301B02CFD1C" + "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_DC30A9FB71F9449BAF1F5981E3538D1E" { "UseDynamicProperties" = "11:TRUE" "IsDependency" = "11:TRUE" - "SourcePath" = "8:policy_8_0_microsoft_vc80_debugcrt_x86.msm" + "SourcePath" = "8:policy_8_0_microsoft_vc80_crt_x86.msm" "Properties" { } @@ -4434,7 +4044,7 @@ { "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_0772289C2CC6435396616D7A2C407EA2" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_voicemail.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_voicemail.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4462,7 +4072,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_166BDBE308F54EE4881DA68F2A8189F5" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_enum.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_enum.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4490,7 +4100,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_1777CB4B737E4B8481E25A10950B2B5A" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_native_file.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_native_file.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4518,7 +4128,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_1CFB1AB04E024FC993E0EB4859DF8408" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_dingaling.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_dingaling.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4546,7 +4156,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_1DCA6B2BA0F842FDB5CBA54CF52228F7" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_h26x.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_h26x.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4574,7 +4184,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_2814E641538B42EFA83525986A9D5AC1" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_ilbc.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_ilbc.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4602,7 +4212,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_28FBC5A60B44423B8A2CC378347483CE" { - "SourcePath" = "8:..\\..\\Debug\\libapr.dll" + "SourcePath" = "8:..\\..\\Release\\libapr.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" @@ -4630,7 +4240,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_297D0BADB993435092DDB8CDF9F2A3C6" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_xml_cdr.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_xml_cdr.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4658,7 +4268,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_2B80DCCD934745B1BB4F0B31099094D9" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_say_en.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_say_en.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4686,7 +4296,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_2D9E612823084E3F9E10376A7AC0C476" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_g723_1.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_g723_1.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4714,7 +4324,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_2F2FEC549F02436EB87961BD1B9E5783" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_iax.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_iax.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4742,7 +4352,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_318FCC99E8D143D6B4F9F534E63009B3" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_sndfile.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_sndfile.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4770,7 +4380,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3DB5A5EF1E624F999BCEA20250508EEA" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_fifo.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_fifo.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4798,7 +4408,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3E37631016BC45B2B672FE23257D542B" { - "SourcePath" = "8:..\\..\\Debug\\pthreadVC2.dll" + "SourcePath" = "8:..\\..\\Release\\pthreadVC2.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" @@ -4824,37 +4434,9 @@ { } } - "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3FBEFE0119944C6781F81104ECEF37CA" - { - "SourcePath" = "8:..\\..\\Debug\\libapriconv.dll" - "TargetName" = "8:" - "Tag" = "8:" - "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" - "Condition" = "8:" - "Transitive" = "11:FALSE" - "Vital" = "11:TRUE" - "ReadOnly" = "11:FALSE" - "Hidden" = "11:FALSE" - "System" = "11:FALSE" - "Permanent" = "11:FALSE" - "SharedLegacy" = "11:FALSE" - "PackageAs" = "3:1" - "Register" = "3:1" - "Exclude" = "11:FALSE" - "IsDependency" = "11:FALSE" - "IsolateTo" = "8:" - "ProjectOutputGroupRegister" = "3:1" - "OutputConfiguration" = "8:" - "OutputGroupCanonicalName" = "8:Built" - "OutputProjectGuid" = "8:{101130D1-3EA6-4ED2-B65D-CEB5243A20ED}" - "ShowKeyOutput" = "11:TRUE" - "ExcludeFilters" - { - } - } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_4A285D260C3748A4BEFA6E5A9004D128" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4882,7 +4464,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_59CFED0C4EC0492C945E4EBC04FE965F" { - "SourcePath" = "8:..\\..\\Debug\\libaprutil.dll" + "SourcePath" = "8:..\\..\\Release\\libaprutil.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" @@ -4910,7 +4492,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_5EDFD5418DD243D1A03D882B83BBBCF1" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_esf.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_esf.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4938,7 +4520,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_6DF726E4018A4136BC27E2C6F4B67B9E" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_logfile.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_logfile.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4966,7 +4548,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_6E5C001E7A314DCEA0A4BF52BF74BCAD" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_speex.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_speex.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -4994,7 +4576,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_77550ABD8CC84D66A3B6C3C3C48665A4" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_dialplan_asterisk.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_dialplan_asterisk.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5022,7 +4604,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_78F060A241D0428998B42093C467AD36" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_voipcodecs.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_voipcodecs.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5050,7 +4632,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_7B1050643E1E48A3B67B281B4AD43904" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_g729.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_g729.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5078,7 +4660,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_8B53F026686B44189676CBC200E641C1" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_amr.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_amr.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5106,7 +4688,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_8E023477B9DC4126921A556B285B29E5" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_socket.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_socket.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5134,7 +4716,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_9527B92C45BB45629BDB19ED3C8DC194" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_fsv.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_fsv.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5162,7 +4744,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_95D01083472B4853AC3F06514558F347" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_teletone.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_teletone.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5190,7 +4772,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_96F8F7DE89C74DC399E8AE55C22B4F15" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_xml_curl.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_xml_curl.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5218,7 +4800,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_9B19C40442134D69B533E16D0851D99B" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_odbc.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_odbc.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5246,7 +4828,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_A0D5F714A0F94250A1C39603B699AB82" { - "SourcePath" = "8:..\\..\\Debug\\libteletone.dll" + "SourcePath" = "8:..\\..\\Release\\libteletone.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" @@ -5274,7 +4856,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_A8D70CB0D12C4B3FB2E2E896E9A7C843" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_tone_stream.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_tone_stream.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5302,7 +4884,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_A944ADCEDF884574A23F7BA5420A6BA1" { - "SourcePath" = "8:..\\..\\libs\\win32\\sqlite\\Debug\\libsqlite.lib" + "SourcePath" = "8:..\\..\\libs\\win32\\sqlite\\Release\\sqlite.lib" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" @@ -5330,7 +4912,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_B0A2E9B4C45D4098AFD734D0C4E3EAFB" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_conference.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_conference.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5358,7 +4940,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_B5542B260CD5493395871EFDE833E438" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_openmrcp.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_openmrcp.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5386,7 +4968,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_BA769056DBAF4259B38F5C3FF7377055" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_curl.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_curl.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5414,7 +4996,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_BB649A2C1ABE4895859025B09A240323" { - "SourcePath" = "8:..\\..\\libs\\win32\\pcre\\Debug\\libpcre.lib" + "SourcePath" = "8:..\\..\\libs\\win32\\pcre\\Release\\libpcre.lib" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" @@ -5442,7 +5024,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_BB99CEDF341D40F3976B6D5486D9366D" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_limit.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_limit.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5470,7 +5052,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C1036825E1364537B537E542E71F9C0E" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_event_socket.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_event_socket.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5498,7 +5080,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C105055EE271471A999CE7022E617EB7" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_commands.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_commands.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5526,7 +5108,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C81AC700C1BC4A55B98DF12C0CBAFD6F" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_dialplan_xml.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_dialplan_xml.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5554,7 +5136,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D0BB09AFB8D94B76918F0EE85BCCAD0A" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_dptools.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_dptools.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5582,7 +5164,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D1269F1E49D442CF8EAC96C23E60325D" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_xml_rpc.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_xml_rpc.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5610,7 +5192,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D2EF447106B24E67907DAED3D39CFBB1" { - "SourcePath" = "8:..\\..\\Debug\\FreeSwitch.dll" + "SourcePath" = "8:..\\..\\Release\\FreeSwitch.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" @@ -5638,7 +5220,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D6F0F5845FAD4707975CE012A33CD607" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_rss.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_rss.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5666,7 +5248,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D7EC5795A9C645AC8E129C2EE6D461ED" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_event_multicast.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_event_multicast.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5694,7 +5276,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E1AA7C5B96DA4A26859D2C7A21E00AB6" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_spidermonkey_core_db.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_spidermonkey_core_db.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5722,7 +5304,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E763C699DF0948B6984DDEB96A2DFD06" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_PortAudio.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_PortAudio.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5750,7 +5332,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EAF4B051F44745ABA9B58038FB93994C" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_expr.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_expr.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5778,7 +5360,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EC4922AEC1064C90B96EBBDD3104D761" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_local_stream.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_local_stream.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5806,7 +5388,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EF14CB99F3414BB689D0CB0E6D6B8AB8" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_console.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_console.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5834,7 +5416,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_F0B800E719294692A02518CFD8CBAEFF" { - "SourcePath" = "8:..\\..\\Debug\\FreeSwitch.exe" + "SourcePath" = "8:..\\..\\Release\\FreeSwitch.exe" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_04AC783F1C9F41AEB4E947C46CE9C9FF" @@ -5862,7 +5444,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FB1B9FBDC3294F1C96DAC4246C013C22" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_woomera.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_woomera.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5890,7 +5472,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FBB0E565B1DE49CE9C827ACAC337AC5B" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_sofia.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_sofia.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" @@ -5918,7 +5500,7 @@ } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_FBD45C36E901435399634CACA5339597" { - "SourcePath" = "8:..\\..\\Debug\\mod\\mod_cdr_csv.dll" + "SourcePath" = "8:..\\..\\Release\\mod\\mod_cdr_csv.dll" "TargetName" = "8:" "Tag" = "8:" "Folder" = "8:_B6E020422C78490D96F78DB0E1A3F521" Modified: freeswitch/branches/lukedashjr/syslibs/libs/apr-util/.update ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/apr-util/.update (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/apr-util/.update Tue May 13 23:37:33 2008 @@ -1 +1 @@ -Fri Mar 16 17:12:43 EDT 2007 +Thu May 8 18:41:57 EDT 2008 Modified: freeswitch/branches/lukedashjr/syslibs/libs/apr-util/build-outputs.mk ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/apr-util/build-outputs.mk (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/apr-util/build-outputs.mk Tue May 13 23:37:33 2008 @@ -1,37 +1,12 @@ # DO NOT EDIT. AUTOMATICALLY GENERATED. -buckets/apr_buckets_file.lo: buckets/apr_buckets_file.c .make.dirs include/apr_buckets.h -buckets/apr_brigade.lo: buckets/apr_brigade.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_mmap.lo: buckets/apr_buckets_mmap.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_heap.lo: buckets/apr_buckets_heap.c .make.dirs include/apr_buckets.h -buckets/apr_buckets.lo: buckets/apr_buckets.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_socket.lo: buckets/apr_buckets_socket.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_pool.lo: buckets/apr_buckets_pool.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_alloc.lo: buckets/apr_buckets_alloc.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_pipe.lo: buckets/apr_buckets_pipe.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_eos.lo: buckets/apr_buckets_eos.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_flush.lo: buckets/apr_buckets_flush.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_refcount.lo: buckets/apr_buckets_refcount.c .make.dirs include/apr_buckets.h -buckets/apr_buckets_simple.lo: buckets/apr_buckets_simple.c .make.dirs include/apr_buckets.h crypto/apr_md5.lo: crypto/apr_md5.c .make.dirs include/apr_xlate.h include/apr_md5.h include/apr_sha1.h crypto/uuid.lo: crypto/uuid.c .make.dirs include/apr_uuid.h crypto/apr_sha1.lo: crypto/apr_sha1.c .make.dirs include/apr_xlate.h include/apr_sha1.h include/apr_base64.h crypto/getuuid.lo: crypto/getuuid.c .make.dirs include/apr_uuid.h include/apr_md5.h include/apr_xlate.h crypto/apr_md4.lo: crypto/apr_md4.c .make.dirs include/apr_md4.h include/apr_xlate.h -dbm/apr_dbm_berkeleydb.lo: dbm/apr_dbm_berkeleydb.c .make.dirs -dbm/apr_dbm_gdbm.lo: dbm/apr_dbm_gdbm.c .make.dirs -dbm/apr_dbm_ndbm.lo: dbm/apr_dbm_ndbm.c .make.dirs -dbm/apr_dbm.lo: dbm/apr_dbm.c .make.dirs include/apr_dbm.h -dbm/apr_dbm_sdbm.lo: dbm/apr_dbm_sdbm.c .make.dirs include/apr_sdbm.h -dbm/sdbm/sdbm_hash.lo: dbm/sdbm/sdbm_hash.c .make.dirs include/apr_sdbm.h -dbm/sdbm/sdbm.lo: dbm/sdbm/sdbm.c .make.dirs include/apr_sdbm.h -dbm/sdbm/sdbm_lock.lo: dbm/sdbm/sdbm_lock.c .make.dirs include/apr_sdbm.h -dbm/sdbm/sdbm_pair.lo: dbm/sdbm/sdbm_pair.c .make.dirs include/apr_sdbm.h encoding/apr_base64.lo: encoding/apr_base64.c .make.dirs include/apr_base64.h include/apr_xlate.h hooks/apr_hooks.lo: hooks/apr_hooks.c .make.dirs include/apr_optional_hooks.h include/apr_optional.h include/apr_hooks.h -ldap/apr_ldap_option.lo: ldap/apr_ldap_option.c .make.dirs -ldap/apr_ldap_init.lo: ldap/apr_ldap_init.c .make.dirs -ldap/apr_ldap_url.lo: ldap/apr_ldap_url.c .make.dirs misc/apr_reslist.lo: misc/apr_reslist.c .make.dirs include/apr_reslist.h misc/apr_rmm.lo: misc/apr_rmm.c .make.dirs include/apr_rmm.h include/apr_anylock.h misc/apr_date.lo: misc/apr_date.c .make.dirs include/apr_date.h @@ -40,12 +15,8 @@ uri/apr_uri.lo: uri/apr_uri.c .make.dirs include/apr_uri.h strmatch/apr_strmatch.lo: strmatch/apr_strmatch.c .make.dirs include/apr_strmatch.h xlate/xlate.lo: xlate/xlate.c .make.dirs include/apr_xlate.h -dbd/apr_dbd_sqlite2.lo: dbd/apr_dbd_sqlite2.c .make.dirs -dbd/apr_dbd_pgsql.lo: dbd/apr_dbd_pgsql.c .make.dirs -dbd/apr_dbd.lo: dbd/apr_dbd.c .make.dirs include/apr_dbd.h -dbd/apr_dbd_sqlite3.lo: dbd/apr_dbd_sqlite3.c .make.dirs -OBJECTS_all = buckets/apr_buckets_file.lo buckets/apr_brigade.lo buckets/apr_buckets_mmap.lo buckets/apr_buckets_heap.lo buckets/apr_buckets.lo buckets/apr_buckets_socket.lo buckets/apr_buckets_pool.lo buckets/apr_buckets_alloc.lo buckets/apr_buckets_pipe.lo buckets/apr_buckets_eos.lo buckets/apr_buckets_flush.lo buckets/apr_buckets_refcount.lo buckets/apr_buckets_simple.lo crypto/apr_md5.lo crypto/uuid.lo crypto/apr_sha1.lo crypto/getuuid.lo crypto/apr_md4.lo dbm/apr_dbm_berkeleydb.lo dbm/apr_dbm_gdbm.lo dbm/apr_dbm_ndbm.lo dbm/apr_dbm.lo dbm/apr_dbm_sdbm.lo dbm/sdbm/sdbm_hash.lo dbm/sdbm/sdbm.lo dbm/sdbm/sdbm_lock.lo dbm/sdbm/sdbm_pair.lo encoding/apr_base64.lo hooks/apr_hooks.lo ldap/apr_ldap_option.lo ldap/apr_ldap_init.lo ldap/apr_ldap_url.lo misc/apr_reslist.lo misc/apr_rmm.lo misc/apr_date.lo misc/apu_version.lo misc/apr_queue.lo uri/apr_uri.lo strmatch/apr_strmatch.lo xlate/xlate.lo dbd/apr_dbd_sqlite2.lo dbd/apr_dbd_pgsql.lo dbd/apr_dbd.lo dbd/apr_dbd_sqlite3.lo +OBJECTS_all = crypto/apr_md5.lo crypto/uuid.lo crypto/apr_sha1.lo crypto/getuuid.lo crypto/apr_md4.lo encoding/apr_base64.lo hooks/apr_hooks.lo misc/apr_reslist.lo misc/apr_rmm.lo misc/apr_date.lo misc/apu_version.lo misc/apr_queue.lo uri/apr_uri.lo strmatch/apr_strmatch.lo xlate/xlate.lo OBJECTS_unix = $(OBJECTS_all) @@ -57,11 +28,11 @@ OBJECTS_os390 = $(OBJECTS_all) -HEADERS = $(top_srcdir)/include/apr_optional.h $(top_srcdir)/include/apu_version.h $(top_srcdir)/include/apr_dbm.h $(top_srcdir)/include/apr_strmatch.h $(top_srcdir)/include/apr_buckets.h $(top_srcdir)/include/apr_optional_hooks.h $(top_srcdir)/include/apr_sdbm.h $(top_srcdir)/include/apr_md4.h $(top_srcdir)/include/apr_reslist.h $(top_srcdir)/include/apr_base64.h $(top_srcdir)/include/apr_ldap_option.h $(top_srcdir)/include/apr_anylock.h $(top_srcdir)/include/apr_rmm.h $(top_srcdir)/include/apr_ldap_init.h $(top_srcdir)/include/apr_ldap_url.h $(top_srcdir)/include/apr_md5.h $(top_srcdir)/include/apr_date.h $(top_srcdir)/include/apr_hooks.h $(top_srcdir)/include/apr_xlate.h $(top_srcdir)/include/apr_queue.h $(top_srcdir)/include/apr_uri.h $(top_srcdir)/include/apr_uuid.h $(top_srcdir)/include/apr_sha1.h $(top_srcdir)/include/apr_dbd.h +HEADERS = $(top_srcdir)/include/apr_optional.h $(top_srcdir)/include/apu_version.h $(top_srcdir)/include/apr_strmatch.h $(top_srcdir)/include/apr_optional_hooks.h $(top_srcdir)/include/apr_sdbm.h $(top_srcdir)/include/apr_md4.h $(top_srcdir)/include/apr_reslist.h $(top_srcdir)/include/apr_base64.h $(top_srcdir)/include/apr_anylock.h $(top_srcdir)/include/apr_rmm.h $(top_srcdir)/include/apr_md5.h $(top_srcdir)/include/apr_date.h $(top_srcdir)/include/apr_hooks.h $(top_srcdir)/include/apr_xlate.h $(top_srcdir)/include/apr_queue.h $(top_srcdir)/include/apr_uri.h $(top_srcdir)/include/apr_uuid.h $(top_srcdir)/include/apr_sha1.h -SOURCE_DIRS = dbd dbm encoding hooks buckets misc crypto uri strmatch dbm/sdbm ldap xlate $(EXTRA_SOURCE_DIRS) +SOURCE_DIRS = encoding hooks misc crypto uri strmatch xlate $(EXTRA_SOURCE_DIRS) -BUILD_DIRS = buckets crypto dbd dbm dbm/sdbm encoding hooks ldap misc strmatch uri xlate +BUILD_DIRS = crypto encoding hooks misc strmatch uri xlate .make.dirs: $(srcdir)/build-outputs.mk @for d in $(BUILD_DIRS); do test -d $$d || mkdir $$d; done Modified: freeswitch/branches/lukedashjr/syslibs/libs/apr-util/crypto/getuuid.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/apr-util/crypto/getuuid.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/apr-util/crypto/getuuid.c Tue May 13 23:37:33 2008 @@ -20,10 +20,11 @@ */ #include "apr.h" #include "apr_uuid.h" -#include "apr_md5.h" #include "apr_general.h" #include "apr_portable.h" - +#if !APR_HAS_RANDOM +#include "apr_md5.h" +#endif #if APR_HAVE_UNISTD_H #include <unistd.h> /* for getpid, gethostname */ Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/.update ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/.update (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/.update Tue May 13 23:37:33 2008 @@ -1 +1 @@ -Wed Apr 23 14:38:18 EDT 2008 +Mon May 12 14:41:23 EDT 2008 Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/nta.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/nta.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/nta.c Tue May 13 23:37:33 2008 @@ -170,6 +170,10 @@ #define NTA_BRANCH_PRIME SU_U64_C(0xB9591D1C361C6521) #define NTA_TAG_PRIME SU_U64_C(0xB9591D1C361C6521) +#ifndef UINT32_MAX +#define UINT32_MAX (0xffffffffU) +#endif + HTABLE_PROTOS_WITH(leg_htable, lht, nta_leg_t, size_t, hash_value_t); static nta_leg_t *leg_find(nta_agent_t const *sa, char const *method_name, @@ -734,7 +738,7 @@ void agent_timer(su_root_magic_t *rm, su_timer_t *timer, nta_agent_t *agent) { su_time_t stamp = su_now(); - su_duration_t now = su_time_ms(stamp), next; + uint32_t now = su_time_ms(stamp), next, latest; now += now == 0; @@ -752,10 +756,11 @@ agent->sa_in_timer = 0; /* Calculate next timeout */ - next = now + SU_DURATION_MAX; + next = latest = now + NTA_TIME_MAX + 1; #define NEXT_TIMEOUT(next, p, f, now) \ - (void)(p && p->f - (next) < 0 && ((next) = (p->f - (now) > 0 ? p->f : (now)))) + (void)(p && (int32_t)(p->f - (next)) < 0 && \ + ((next) = ((int32_t)(p->f - (now)) > 0 ? p->f : (now)))) NEXT_TIMEOUT(next, agent->sa_out.re_list, orq_retry, now); NEXT_TIMEOUT(next, agent->sa_out.inv_completed->q_head, orq_timeout, now); @@ -776,8 +781,8 @@ #undef NEXT_TIMEOUT - if (next == now + SU_DURATION_MAX) { - /* Do not set timer */ + if (next == latest) { + /* Do not set timer? */ SU_DEBUG_9(("nta: timer not set\n")); assert(!agent->sa_out.completed->q_head); assert(!agent->sa_out.trying->q_head); @@ -800,6 +805,22 @@ su_timer_set_at(timer, agent_timer, agent, su_time_add(stamp, next - now)); } +/** Add uin32_t milliseconds to the time. */ +static su_time_t add_milliseconds(su_time_t t0, uint32_t ms) +{ + unsigned long sec = ms / 1000, usec = (ms % 1000) * 1000; + + t0.tv_usec += usec; + t0.tv_sec += sec; + + if (t0.tv_usec >= 1000000) { + t0.tv_sec += 1; + t0.tv_usec -= 1000000; + } + + return t0; +} + /** Calculate nonzero value for timeout. * * Sets or adjusts agent timer when needed. @@ -808,25 +829,25 @@ * @retval timeout (millisecond counter) otherwise */ static -su_duration_t set_timeout(nta_agent_t *agent, su_duration_t offset) +uint32_t set_timeout(nta_agent_t *agent, uint32_t offset) { su_time_t now; - su_duration_t next, ms; + uint32_t next, ms; if (offset == 0) return 0; - if (agent->sa_millisec) /* Avoid expensive call to su_timer_ms() */ + if (agent->sa_millisec) /* Avoid expensive call to su_now() */ now = agent->sa_now, ms = agent->sa_millisec; else - now = su_now(), ms = (su_duration_t)su_time_ms(now); + now = su_now(), ms = su_time_ms(now); next = ms + offset; if (next == 0) next = 1; - if (agent->sa_in_timer) + if (agent->sa_in_timer) /* Currently executing timer */ return next; - if (agent->sa_next == 0 || agent->sa_next - next - 5L > 0) { + if (agent->sa_next == 0 || (int32_t)(agent->sa_next - next - 5L) > 0) { /* Set timer */ if (agent->sa_next) SU_DEBUG_9(("nta: timer %s to %ld ms\n", "shortened", (long)offset)); @@ -834,7 +855,7 @@ SU_DEBUG_9(("nta: timer %s to %ld ms\n", "set", (long)offset)); su_timer_set_at(agent->sa_timer, agent_timer, agent, - su_time_add(now, offset)); + add_milliseconds(now, offset)); agent->sa_next = next; } @@ -1093,7 +1114,7 @@ } if (maxsize == 0) maxsize = 2 * 1024 * 1024; - if (maxsize > NTA_TIME_MAX) maxsize = NTA_TIME_MAX; + if (maxsize > UINT32_MAX) maxsize = UINT32_MAX; agent->sa_maxsize = maxsize; if (max_proceeding == 0) max_proceeding = SIZE_MAX; @@ -1262,7 +1283,7 @@ NTATAG_EXTRA_100(agent->sa_extra_100), NTATAG_GRAYLIST(agent->sa_graylist), NTATAG_MAXSIZE(agent->sa_maxsize), - NTATAG_MAX_PROCEEDING(agent->sa_max_proceeding), + NTATAG_MAX_PROCEEDING(agent->sa_max_proceeding), NTATAG_MAX_FORWARDS(agent->sa_max_forwards->mf_count), NTATAG_MCLASS(agent->sa_mclass), NTATAG_MERGE_482(agent->sa_merge_482), @@ -2046,11 +2067,16 @@ clear = 1, v->v_protocol = via->v_protocol; /* XXX - should we do this? */ - if (via->v_host != v->v_host && + if (!user_via && + via->v_host != v->v_host && str0cmp(via->v_host, v->v_host)) clear = 1, v->v_host = via->v_host; - if (via->v_port != v->v_port && + if ((!user_via || + /* Replace port in user Via only if we use udp and no rport */ + (v->v_protocol == sip_transport_udp && !v->v_rport && + !orq->orq_stateless)) && + via->v_port != v->v_port && str0cmp(via->v_port, v->v_port)) clear = 1, v->v_port = via->v_port; @@ -2440,16 +2466,20 @@ leg_recv(leg, msg, sip, tport); } else if (!agent->sa_is_stateless && (leg = agent->sa_default_leg)) { - if (method == sip_method_invite && agent->sa_in.proceeding->q_length >= agent->sa_max_proceeding) { - SU_DEBUG_5(("nta: proceeding queue full for %s (%u)\n", method_name, cseq)); - nta_msg_treply(agent, msg, SIP_503_SERVICE_UNAVAILABLE, - NTATAG_TPORT(tport), - TAG_END()); - return; - } else { - SU_DEBUG_5(("nta: %s (%u) %s\n", method_name, cseq, "going to a default leg")); - leg_recv(leg, msg, sip, tport); - } + if (method == sip_method_invite && + agent->sa_in.proceeding->q_length >= agent->sa_max_proceeding) { + SU_DEBUG_5(("nta: proceeding queue full for %s (%u)\n", + method_name, cseq)); + nta_msg_treply(agent, msg, SIP_503_SERVICE_UNAVAILABLE, + NTATAG_TPORT(tport), + TAG_END()); + return; + } + else { + SU_DEBUG_5(("nta: %s (%u) %s\n", + method_name, cseq, "going to a default leg")); + leg_recv(leg, msg, sip, tport); + } } else if (agent->sa_callback) { /* Stateless processing for request */ @@ -4022,6 +4052,55 @@ return leg; } +/**@internal + * Find a leg corresponding to the request message. + * + */ +static +nta_leg_t *leg_find_call_id(nta_agent_t const *sa, + sip_call_id_t const *i) +{ + hash_value_t hash = i->i_hash; + leg_htable_t const *lht = sa->sa_dialogs; + nta_leg_t **ll, *leg = NULL; + + for (ll = leg_htable_hash(lht, hash); + (leg = *ll); + ll = leg_htable_next(lht, ll)) { + sip_call_id_t const *leg_i = leg->leg_id; + + if (leg->leg_hash != hash) + continue; + if (strcmp(leg_i->i_id, i->i_id) != 0) + continue; + + return leg; + } + + return leg; +} + +/** Get dialog leg by @CallID. + * + * @since New in @VERSION_1_12_9. + */ +SOFIAPUBFUN +nta_leg_t *nta_leg_by_call_id(nta_agent_t *sa, const char *call_id) +{ + nta_leg_t *leg = NULL; + + if (call_id) { + sip_call_id_t id[1]; + sip_call_id_init(id); + + id->i_hash = msg_hash_string(id->i_id = call_id); + + leg = leg_find_call_id(sa, id); + } + + return leg; +} + /** Calculate a simple case-insensitive hash over a string */ su_inline hash_value_t hash_istring(char const *s, char const *term, hash_value_t hash) @@ -4469,7 +4548,7 @@ su_inline int incoming_is_queued(nta_incoming_t const *irq); su_inline void incoming_queue(incoming_queue_t *queue, nta_incoming_t *); su_inline void incoming_remove(nta_incoming_t *irq); -su_inline void incoming_set_timer(nta_incoming_t *, unsigned interval); +su_inline void incoming_set_timer(nta_incoming_t *, uint32_t interval); su_inline void incoming_reset_timer(nta_incoming_t *); su_inline size_t incoming_mass_destroy(nta_agent_t *, incoming_queue_t *); @@ -4803,10 +4882,10 @@ static void incoming_queue_adjust(nta_agent_t *sa, incoming_queue_t *queue, - unsigned timeout) + uint32_t timeout) { nta_incoming_t *irq; - su_duration_t latest; + uint32_t latest; if (timeout >= queue->q_timeout || !queue->q_head) { queue->q_timeout = timeout; @@ -4816,7 +4895,7 @@ latest = set_timeout(sa, queue->q_timeout = timeout); for (irq = queue->q_head; irq; irq = irq->irq_next) { - if (irq->irq_timeout - latest > 0) + if ((int32_t)(irq->irq_timeout - latest) > 0) irq->irq_timeout = latest; } } @@ -4881,7 +4960,7 @@ } su_inline -void incoming_set_timer(nta_incoming_t *irq, unsigned interval) +void incoming_set_timer(nta_incoming_t *irq, uint32_t interval) { nta_incoming_t **rq; @@ -4905,10 +4984,10 @@ rq = irq->irq_agent->sa_in.re_t1; - if (!(*rq) || (*rq)->irq_retry - irq->irq_retry > 0) + if (!(*rq) || (int32_t)((*rq)->irq_retry - irq->irq_retry) > 0) rq = &irq->irq_agent->sa_in.re_list; - while (*rq && (*rq)->irq_retry - irq->irq_retry <= 0) + while (*rq && (int32_t)((*rq)->irq_retry - irq->irq_retry) <= 0) rq = &(*rq)->irq_rnext; if ((irq->irq_rnext = *rq)) @@ -6135,7 +6214,7 @@ /** @internal Timer routine for the incoming request. */ static void incoming_timer(nta_agent_t *sa) { - su_duration_t now = sa->sa_millisec; + uint32_t now = sa->sa_millisec; nta_incoming_t *irq, *irq_next; size_t retransmitted = 0, timeout = 0, terminated = 0, destroyed = 0; size_t unconfirmed = @@ -6152,7 +6231,7 @@ /* Handle retry queue */ while ((irq = sa->sa_in.re_list)) { - if (irq->irq_retry - now > 0) + if ((int32_t)(irq->irq_retry - now) > 0) break; if (retransmitted >= timer_max_retransmit) break; @@ -6233,7 +6312,7 @@ assert(irq->irq_status < 200); assert(irq->irq_timeout); - if (irq->irq_timeout - now > 0) + if ((int32_t)(irq->irq_timeout - now) > 0) break; if (timeout >= timer_max_timeout) break; @@ -6253,7 +6332,7 @@ assert(irq->irq_timeout); assert(irq->irq_method == sip_method_invite); - if (irq->irq_timeout - now > 0 || + if ((int32_t)(irq->irq_timeout - now) > 0 || timeout >= timer_max_timeout || terminated >= timer_max_terminate) break; @@ -6281,7 +6360,8 @@ assert(irq->irq_status >= 200); assert(irq->irq_method == sip_method_invite); - if (irq->irq_timeout - now > 0 || terminated >= timer_max_terminate) + if ((int32_t)(irq->irq_timeout - now) > 0 || + terminated >= timer_max_terminate) break; /* Timer I */ @@ -6302,7 +6382,8 @@ assert(irq->irq_timeout); assert(irq->irq_method != sip_method_invite); - if (irq->irq_timeout - now > 0 || terminated >= timer_max_terminate) + if ((int32_t)(irq->irq_timeout - now) > 0 || + terminated >= timer_max_terminate) break; /* Timer J */ @@ -6395,24 +6476,24 @@ su_inline void outgoing_queue(outgoing_queue_t *queue, nta_outgoing_t *orq); su_inline void outgoing_remove(nta_outgoing_t *orq); -su_inline void outgoing_set_timer(nta_outgoing_t *orq, unsigned interval); +su_inline void outgoing_set_timer(nta_outgoing_t *orq, uint32_t interval); su_inline void outgoing_reset_timer(nta_outgoing_t *orq); static size_t outgoing_timer_dk(outgoing_queue_t *q, char const *timer, - su_duration_t now); + uint32_t now); static size_t outgoing_timer_bf(outgoing_queue_t *q, char const *timer, - su_duration_t now); + uint32_t now); static size_t outgoing_timer_c(outgoing_queue_t *q, char const *timer, - su_duration_t now); + uint32_t now); static void outgoing_ack(nta_outgoing_t *orq, sip_t *sip); static msg_t *outgoing_ackmsg(nta_outgoing_t *, sip_method_t, char const *, tagi_t const *tags); static void outgoing_retransmit(nta_outgoing_t *orq); static void outgoing_trying(nta_outgoing_t *orq); -static void outgoing_timeout(nta_outgoing_t *orq, su_duration_t now); +static void outgoing_timeout(nta_outgoing_t *orq, uint32_t now); static int outgoing_complete(nta_outgoing_t *orq); static int outgoing_terminate(nta_outgoing_t *orq); static size_t outgoing_mass_destroy(nta_agent_t *sa, outgoing_queue_t *q); @@ -7654,7 +7735,7 @@ unsigned timeout) { nta_outgoing_t *orq; - su_duration_t latest; + uint32_t latest; if (timeout >= queue->q_timeout || !queue->q_head) { queue->q_timeout = timeout; @@ -7665,7 +7746,7 @@ for (orq = queue->q_head; orq; orq = orq->orq_next) { if (orq->orq_timeout == 0 || - orq->orq_timeout - latest > 0) + (int32_t)(orq->orq_timeout - latest) > 0) orq->orq_timeout = latest; } } @@ -7735,7 +7816,7 @@ * Set the retry timer (B/D) on the outgoing request (client transaction). */ su_inline -void outgoing_set_timer(nta_outgoing_t *orq, unsigned interval) +void outgoing_set_timer(nta_outgoing_t *orq, uint32_t interval) { nta_outgoing_t **rq; @@ -7762,10 +7843,10 @@ /* Shortcut into queue at SIP T1 */ rq = orq->orq_agent->sa_out.re_t1; - if (!(*rq) || (*rq)->orq_retry - orq->orq_retry > 0) + if (!(*rq) || (int32_t)((*rq)->orq_retry - orq->orq_retry) > 0) rq = &orq->orq_agent->sa_out.re_list; - while (*rq && (*rq)->orq_retry - orq->orq_retry <= 0) + while (*rq && (int32_t)((*rq)->orq_retry - orq->orq_retry) <= 0) rq = &(*rq)->orq_rnext; if ((orq->orq_rnext = *rq)) @@ -7913,7 +7994,7 @@ */ static void outgoing_timer(nta_agent_t *sa) { - su_duration_t now = sa->sa_millisec; + uint32_t now = sa->sa_millisec; nta_outgoing_t *orq; outgoing_queue_t rq[1]; size_t retransmitted = 0, terminated = 0, timeout = 0, destroyed; @@ -7927,7 +8008,7 @@ outgoing_queue_init(sa->sa_out.free = rq, 0); while ((orq = sa->sa_out.re_list)) { - if (orq->orq_retry - now > 0) + if ((int32_t)(orq->orq_retry) - now > 0) break; if (retransmitted >= timer_max_retransmit) break; @@ -8023,13 +8104,14 @@ static size_t outgoing_timer_bf(outgoing_queue_t *q, char const *timer, - su_duration_t now) + uint32_t now) { nta_outgoing_t *orq; size_t timeout = 0; while ((orq = q->q_head)) { - if (orq->orq_timeout - now > 0 || timeout >= timer_max_timeout) + if ((int32_t)(orq->orq_timeout - now) > 0 || + timeout >= timer_max_timeout) break; timeout++; @@ -8044,7 +8126,7 @@ else outgoing_terminate(orq); - assert(q->q_head != orq || orq->orq_timeout - now > 0); + assert(q->q_head != orq || (int32_t)(orq->orq_timeout - now) > 0); } return timeout; @@ -8054,7 +8136,7 @@ static size_t outgoing_timer_c(outgoing_queue_t *q, char const *timer, - su_duration_t now) + uint32_t now) { nta_outgoing_t *orq; size_t timeout = 0; @@ -8063,7 +8145,7 @@ return 0; while ((orq = q->q_head)) { - if (orq->orq_timeout - now > 0 || timeout >= timer_max_timeout) + if ((int32_t)(orq->orq_timeout - now) > 0 || timeout >= timer_max_timeout) break; timeout++; @@ -8083,7 +8165,7 @@ } /** @internal Signal transaction timeout to the application. */ -void outgoing_timeout(nta_outgoing_t *orq, su_duration_t now) +void outgoing_timeout(nta_outgoing_t *orq, uint32_t now) { nta_outgoing_t *cancel; @@ -8131,13 +8213,14 @@ static size_t outgoing_timer_dk(outgoing_queue_t *q, char const *timer, - su_duration_t now) + uint32_t now) { nta_outgoing_t *orq; size_t terminated = 0; while ((orq = q->q_head)) { - if (orq->orq_timeout - now > 0 || terminated >= timer_max_terminate) + if ((int32_t)(orq->orq_timeout - now) > 0 || + terminated >= timer_max_terminate) break; terminated++; Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/nta_internal.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/nta_internal.h (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/nta_internal.h Tue May 13 23:37:33 2008 @@ -102,9 +102,9 @@ nta_update_magic_t *sa_update_magic; nta_update_tport_f *sa_update_tport; - su_duration_t sa_next; /**< Timestamp for next agent_timer. */ su_time_t sa_now; /**< Timestamp in microsecond resolution. */ - uint32_t sa_millisec; /**< Timestamp in milliseconds resolution. */ + uint32_t sa_next; /**< Timestamp for next agent_timer. */ + uint32_t sa_millisec; /**< Timestamp in milliseconds. */ uint32_t sa_nw_updates; /* Shall we enable network detector? */ @@ -419,8 +419,8 @@ sip_timestamp_t *irq_timestamp; su_time_t irq_received; - su_duration_t irq_timeout; /**< Timer H, I, J */ - su_duration_t irq_retry; /**< Timer G */ + uint32_t irq_timeout; /**< Timer H, I, J */ + uint32_t irq_retry; /**< Timer G */ unsigned short irq_interval; /**< Next timer */ short irq_status; @@ -499,8 +499,8 @@ su_time_t orq_sent; /**< When request was sent? */ unsigned orq_delay; /**< RTT estimate */ - su_duration_t orq_retry; /**< Timer A, E */ - su_duration_t orq_timeout; /**< Timer B, D, F, K */ + uint32_t orq_retry; /**< Timer A, E */ + uint32_t orq_timeout; /**< Timer B, D, F, K */ unsigned short orq_interval; /**< Next timer A/E */ Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta.h (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip/nta.h Tue May 13 23:37:33 2008 @@ -253,6 +253,10 @@ SOFIAPUBFUN nta_leg_t *nta_leg_by_replaces(nta_agent_t *, sip_replaces_t const *); +/** Get dialog leg by CallID */ +SOFIAPUBFUN +nta_leg_t *nta_leg_by_call_id(nta_agent_t *sa, const char *call_id); + /* ---------------------------------------------------------------------- * 6) Prototypes for incoming transactions */ Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua.c Tue May 13 23:37:33 2008 @@ -1005,6 +1005,21 @@ return 0; } +struct nua_stack_handle_by_call_id_args { + nua_handle_t *retval; + nua_t *nua; + const char *call_id; +}; + +static int nua_stack_handle_by_call_id_call(void *arg) +{ + struct nua_stack_handle_by_call_id_args *a = arg; + + a->retval = nua_stack_handle_by_call_id(a->nua, a->call_id); + + return 0; +} + /** Obtain a new reference to an existing handle based on @Replaces header. * * @since New in @VERSION_1_12_4. @@ -1039,3 +1054,38 @@ } return NULL; } + +/** Obtain a new reference to an existing handle based on @CallID. + * + * @since New in @VERSION_1_12_9. + * + * @note + * You should release the reference with nua_handle_unref() when you are + * done with the handle. + * + * @sa nua_handle_make_replaces(), @Replaces, @RFC3891, nua_refer(), + * #nua_i_refer, @ReferTo, nta_leg_by_replaces() + */ +nua_handle_t *nua_handle_by_call_id(nua_t *nua, const char *call_id) +{ + if (nua) { +#if HAVE_OPEN_C + struct nua_stack_handle_by_call_id_args a; + a.retval = NULL; + a.nua = nua; + a.call_id = call_id; +#else + struct nua_stack_handle_by_call_id_args a = { NULL, nua, call_id }; +#endif + + if (su_task_execute(nua->nua_server, + nua_stack_handle_by_call_id_call, (void *)&a, + NULL) == 0) { + nua_handle_t *nh = a.retval; + + if (nh && !NH_IS_DEFAULT(nh) && nh->nh_valid) + return nua_handle_ref(nh); + } + } + return NULL; +} Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_notifier.c Tue May 13 23:37:33 2008 @@ -558,9 +558,6 @@ } } - if (nu->nu_substate == nua_substate_terminated) - cr->cr_terminating = 1; - cr->cr_usage = du; return nua_notify_client_init_etag(cr, msg, sip, tags); @@ -700,6 +697,18 @@ if (nu->nu_substate == nua_substate_terminated) cr->cr_terminating = 1; + if (cr->cr_terminating) { + nua_server_request_t *sr; + for (sr = du->du_dialog->ds_sr; sr; sr = sr->sr_next) { + if (sr->sr_usage == du) { + /* If subscribe has not been responded, don't terminate usage by NOTIFY */ + sr->sr_terminating = 1; + cr->cr_terminating = 0; + break; + } + } + } + if (du->du_event && !sip->sip_event) sip_add_dup(cr->cr_msg, sip, (sip_header_t *)du->du_event); Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c Tue May 13 23:37:33 2008 @@ -1293,7 +1293,9 @@ /* signal SOA that O/A round(s) is (are) complete */ soa_activate(nh->nh_soa, NULL); } - else if (nh->nh_soa == NULL && !(cr->cr_offer_sent && !cr->cr_answer_recv)) { + else if (nh->nh_soa == NULL + /* NUA does not necessarily know dirty details */ + /* && !(cr->cr_offer_sent && !cr->cr_answer_recv) */) { ; } else { @@ -2202,11 +2204,11 @@ } else if (sr->sr_offer_recv && !sr->sr_answer_sent && early_answer) { /* Generate answer */ - if (soa_generate_answer(nh->nh_soa, NULL) >= 0) { - answer = 1; - soa_activate(nh->nh_soa, NULL); - /* signal that O/A answer sent (answer to invite) */ + if (soa_generate_answer(nh->nh_soa, NULL) >= 0 && + soa_activate(nh->nh_soa, NULL) >= 0) { + answer = 1; /* signal that O/A answer sent (answer to invite) */ } + /* We have an error! */ else if (sr->sr_status >= 200) { sip_warning_t *warning = NULL; int wcode; @@ -3135,17 +3137,15 @@ (sr->sr_offer_recv && !sr->sr_answer_sent)) break; - if (sr || - (cri && cri->cr_offer_sent && !cri->cr_answer_recv) || - (cri && cri->cr_offer_recv && !cri->cr_answer_sent)) { - if (nh->nh_soa == NULL) { - if (session_get_description(sip, NULL, NULL)) - return nua_client_return(cr, 500, "Overlapping Offer/Answer", msg); - } - } - else if (nh->nh_soa == NULL) { + if (nh->nh_soa == NULL) { offer_sent = session_get_description(sip, NULL, NULL); } + else if (sr || + (cri && cri->cr_offer_sent && !cri->cr_answer_recv) || + (cri && cri->cr_offer_recv && !cri->cr_answer_sent)) { + if (session_get_description(sip, NULL, NULL)) + return nua_client_return(cr, 500, "Overlapping Offer/Answer", msg); + } else if (!sip->sip_payload) { soa_init_offer_answer(nh->nh_soa); @@ -3360,7 +3360,7 @@ if ((overlap = sr0->sr_offer_recv && !sr0->sr_answer_sent)) break; - if (overlap) + if (nh->nh_soa && overlap) return nua_server_retry_after(sr, 500, "Overlapping Offer/Answer", 1, 9); if (nh->nh_soa && Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c Tue May 13 23:37:33 2008 @@ -511,12 +511,19 @@ e->e_status = status; e->e_phrase = phrase; - SU_DEBUG_7(("nua(%p): signal %s\n", (void *)nh, - nua_event_name(event) + 4)); - su_msg_deinitializer(sumsg, nua_event_deinit); retval = su_msg_send_to(sumsg, nua->nua_server, nua_stack_signal); + + if (retval == 0){ + SU_DEBUG_7(("nua(%p): %s signal %s\n", (void *)nh, + "sent", nua_event_name(event) + 4)); + } + else { + SU_DEBUG_0(("nua(%p): %s signal %s\n", (void *)nh, + "FAILED TO SEND", nua_event_name(event) + 4)); + + } } ta_end(ta); @@ -552,9 +559,9 @@ char const *name = nua_event_name(e->e_event); if (e->e_status == 0) - SU_DEBUG_5(("nua(%p): signal %s\n", (void *)nh, name + 4)); + SU_DEBUG_5(("nua(%p): %s signal %s\n", (void *)nh, "recv", name + 4)); else - SU_DEBUG_5(("nua(%p): signal %s %u %s\n", + SU_DEBUG_5(("nua(%p): recv signal %s %u %s\n", (void *)nh, name + 4, e->e_status, e->e_phrase ? e->e_phrase : "")); } @@ -651,7 +658,8 @@ } if (error < 0) { - nua_stack_event(nh->nh_nua, nh, NULL, event, NUA_ERROR_AT(__FILE__, __LINE__), NULL); + nua_stack_event(nh->nh_nua, nh, NULL, event, + NUA_ERROR_AT(__FILE__, __LINE__), NULL); } su_msg_destroy(nua->nua_signal); @@ -1115,6 +1123,15 @@ return NULL; } +nua_handle_t *nua_stack_handle_by_call_id(nua_t *nua, const char *call_id) +{ + if (nua) { + nta_leg_t *leg = nta_leg_by_call_id(nua->nua_nta, call_id); + if (leg) + return nta_leg_magic(leg, nua_stack_process_request); + } + return NULL; +} /** @internal Add authorization data */ int nh_authorize(nua_handle_t *nh, tag_type_t tag, tag_value_t value, ...) @@ -2281,6 +2298,12 @@ sip_add_dup(msg, sip, (sip_header_t *)nua->nua_from) < 0) return nua_client_return(cr, NUA_ERROR_AT(__FILE__, __LINE__), msg); + if (sip->sip_to == NULL && cr->cr_method == sip_method_register && + sip_add_dup_as(msg, sip, sip_to_class, + (sip_header_t *)sip->sip_from) < 0) { + return nua_client_return(cr, NUA_ERROR_AT(__FILE__, __LINE__), msg); + } + if (cr->cr_dialog) { ds->ds_leg = nta_leg_tcreate(nua->nua_nta, nua_stack_process_request, nh, Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.h (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.h Tue May 13 23:37:33 2008 @@ -207,7 +207,8 @@ extern char const nua_internal_error[]; #define NUA_INTERNAL_ERROR 900, nua_internal_error -#define NUA_ERROR_AT(file, line) 900, "Internal error at " file ":" #line +#define _NUA_INTERNAL_ERROR_AT(file, line) "Internal error at " file ":" #line +#define NUA_ERROR_AT(file, line) 900, _NUA_INTERNAL_ERROR_AT(file, line) struct nua_s { su_home_t nua_home[1]; @@ -380,6 +381,9 @@ nua_handle_t *nua_stack_handle_by_replaces(nua_t *nua, sip_replaces_t const *r); +nua_handle_t *nua_stack_handle_by_call_id(nua_t *nua, const char *call_id); + + /* ---------------------------------------------------------------------- */ int nua_stack_set_defaults(nua_handle_t *nh, nua_handle_preferences_t *nhp); Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_subnotref.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_subnotref.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/nua_subnotref.c Tue May 13 23:37:33 2008 @@ -248,15 +248,18 @@ nua_dialog_usage_t *du = cr->cr_usage; sip_time_t expires = 0; - if (cr->cr_event != nua_r_subscribe || - (du && du->du_shutdown) || - (sip->sip_expires && sip->sip_expires->ex_delta == 0)) + if (cr->cr_event != nua_r_subscribe || !du || du->du_shutdown) cr->cr_terminating = 1; if (du) { struct event_usage *eu = nua_dialog_usage_private(du); sip_event_t *o = sip->sip_event; + if (eu->eu_notified && + sip->sip_expires && + sip->sip_expires->ex_delta == 0) + cr->cr_terminating = 1; + if (nua_client_bind(cr, du) < 0) return -1; Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/outbound.c Tue May 13 23:37:33 2008 @@ -97,7 +97,7 @@ /** Source of Contact header */ unsigned ob_by_stack:1; /** Self-generated contacts */ - unsigned ob_contacts:1, :0; + unsigned ob_contacts:1; /* The registration state machine. */ /** Initial REGISTER containing ob_rcontact has been sent */ @@ -336,6 +336,14 @@ if (ob) { if (ob->ob_contacts) *return_current_contact = ob->ob_rcontact; + else { + sip_contact_t *contact = *return_current_contact; + if (contact) { + if (ob->ob_rcontact) + msg_header_free_all(ob->ob_home, (msg_header_t*)ob->ob_rcontact); + ob->ob_rcontact = sip_contact_dup(ob->ob_home, contact); + } + } *return_previous_contact = ob->ob_previous; } return 0; Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua.h ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua.h (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua.h Tue May 13 23:37:33 2008 @@ -384,6 +384,7 @@ SOFIAPUBFUN nua_handle_t *nua_handle_by_replaces(nua_t *nua, sip_replaces_t const *rp); +nua_handle_t *nua_handle_by_call_id(nua_t *nua, const char *call_id); SOFIA_END_DECLS Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/test_simple.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/test_simple.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/test_simple.c Tue May 13 23:37:33 2008 @@ -607,6 +607,27 @@ } } +int save_until_responded_and_notified_twice(CONDITION_PARAMS) +{ + save_event_in_list(ctx, event, ep, call); + + if (event == nua_i_notify) { + if (ep->flags.bit0) + ep->flags.bit1 = 1; + ep->flags.bit0 = 1; + } + + if (event == nua_r_subscribe || event == nua_r_unsubscribe) { + if (status >= 300) + return 1; + else if (status >= 200) { + ep->flags.bit2 = 1; + } + } + + return ep->flags.bit0 && ep->flags.bit1 && ep->flags.bit2; +} + int accept_and_notify(CONDITION_PARAMS) { @@ -620,16 +641,21 @@ switch (event) { case nua_i_subscribe: if (status < 200) { + int fetch = sip->sip_expires && sip->sip_expires->ex_delta == 0; + RESPOND(ep, call, nh, SIP_202_ACCEPTED, NUTAG_WITH(with), SIPTAG_EXPIRES_STR("360"), + SIPTAG_EXPIRES(sip->sip_expires), TAG_END()); NOTIFY(ep, call, nh, SIPTAG_EVENT(sip->sip_event), SIPTAG_CONTENT_TYPE_STR("application/pidf+xml"), SIPTAG_PAYLOAD_STR(presence_closed), - NUTAG_SUBSTATE(nua_substate_pending), + NUTAG_SUBSTATE(fetch + ? nua_substate_pending + : nua_substate_terminated), TAG_END()); } @@ -695,7 +721,7 @@ SIPTAG_ACCEPT_STR("application/xpidf, application/pidf+xml"), TAG_END()); - run_ab_until(ctx, -1, save_until_notified_and_responded, + run_ab_until(ctx, -1, save_until_responded_and_notified_twice, -1, accept_and_notify_twice); /* Client events: @@ -727,10 +753,16 @@ TEST_1(e = es); TEST_E(e->data->e_event, nua_r_subscribe); TEST_1(e->data->e_status == 202 || e->data->e_status == 200); TEST_1(tl_find(e->data->e_tags, nutag_substate)); - if (es == a->events->head) - TEST(tl_find(e->data->e_tags, nutag_substate)->t_value, nua_substate_embryonic); - else - TEST(tl_find(e->data->e_tags, nutag_substate)->t_value, nua_substate_pending); + r_tags = tl_find(e->data->e_tags, nutag_substate); + if (es == a->events->head) { + TEST(r_tags->t_value, nua_substate_embryonic); + } + else if (es == a->events->head->next) { + TEST_1(r_tags->t_value == nua_substate_pending); + } + else { + TEST_1(r_tags->t_value == nua_substate_active); + } TEST_1(sip = sip_object(e->data->e_msg)); TEST_1(sip->sip_expires); TEST_1(sip->sip_expires->ex_delta <= 333); @@ -1165,6 +1197,235 @@ } /* ---------------------------------------------------------------------- */ + +/* + * When incoming SUBSCRIBE, send NOTIFY, + * 200 OK SUBSCRIBE when NOTIFY has been responded. + */ +int notify_and_accept(CONDITION_PARAMS) +{ + if (!(check_handle(ep, call, nh, SIP_500_INTERNAL_SERVER_ERROR))) + return 0; + + save_event_in_list(ctx, event, ep, call); + + switch (event) { + case nua_i_subscribe: + if (status < 200) { + NOTIFY(ep, call, nh, + SIPTAG_EVENT(sip->sip_event), + SIPTAG_CONTENT_TYPE_STR("application/pidf+xml"), + SIPTAG_PAYLOAD_STR(presence_closed), + TAG_END()); + } + return 0; + + case nua_r_notify: + if (status >= 200) { + struct event *e; + for (e = ep->events->head; e; e = e->next) { + if (e->data->e_event == nua_i_subscribe) { + RESPOND(ep, call, nh, SIP_200_OK, + NUTAG_WITH(e->data->e_msg), + TAG_END()); + break; + } + } + return 1; + } + + default: + return 0; + } +} + +int test_event_fetch(struct context *ctx) +{ + BEGIN(); + + struct endpoint *a = &ctx->a, *b = &ctx->b; + struct call *a_call = a->call, *b_call = b->call; + struct event *e, *en1, *en2, *es; + sip_t const *sip; + tagi_t const *r_tags; + + if (print_headings) + printf("TEST NUA-11.6.1: event fetch using nua_notify()\n"); + + TEST_1(a_call->nh = nua_handle(a->nua, a_call, SIPTAG_TO(b->to), TAG_END())); + +/* Fetch 1: + + A B + | | + |------SUBSCRIBE----->| + | Expires: 0 | + |<---------202--------| + | | + |<-------NOTIFY-------| + | S-State: terminated | + |-------200 OK------->| + | | +*/ + + SUBSCRIBE(a, a_call, a_call->nh, NUTAG_URL(b->contact->m_url), + SIPTAG_EVENT_STR("presence"), + SIPTAG_EXPIRES_STR("0"), + SIPTAG_ACCEPT_STR("application/xpidf, application/pidf+xml"), + TAG_END()); + + run_ab_until(ctx, -1, save_until_notified_and_responded, + -1, accept_and_notify); + + /* Client events: + nua_subscribe(), nua_i_notify/nua_r_subscribe/nua_i_notify + */ + for (en1 = en2 = es = NULL, e = a->events->head; e; e = e->next) { + if (en1 == NULL && e->data->e_event == nua_i_notify) + en1 = e; + else if (en2 == NULL && e->data->e_event == nua_i_notify) + en2 = e; + else if (e->data->e_event == nua_r_subscribe) + es = e; + else + TEST_1(!e); + } + + TEST_1(e = en1); + TEST_E(e->data->e_event, nua_i_notify); + TEST_1(tl_find(e->data->e_tags, nutag_substate)); + TEST(tl_find(e->data->e_tags, nutag_substate)->t_value, nua_substate_terminated); + TEST_1(sip = sip_object(e->data->e_msg)); + TEST_1(sip->sip_event); TEST_S(sip->sip_event->o_type, "presence"); + TEST_1(sip->sip_content_type); + TEST_S(sip->sip_content_type->c_type, "application/pidf+xml"); + TEST_1(sip->sip_subscription_state); + TEST_S(sip->sip_subscription_state->ss_substate, "terminated"); + + TEST_1(e = es); TEST_E(e->data->e_event, nua_r_subscribe); + TEST_1(e->data->e_status == 202 || e->data->e_status == 200); + TEST_1(tl_find(e->data->e_tags, nutag_substate)); + + if (es == a->events->head) + TEST(tl_find(e->data->e_tags, nutag_substate)->t_value, nua_substate_embryonic); + else + TEST(tl_find(e->data->e_tags, nutag_substate)->t_value, nua_substate_terminated); + TEST_1(sip = sip_object(e->data->e_msg)); + TEST_1(sip->sip_expires); + TEST_1(sip->sip_expires->ex_delta == 0); + + free_events_in_list(ctx, a->events); + + /* Server events: nua_i_subscribe, nua_r_notify */ + TEST_1(e = b->events->head); + TEST_E(e->data->e_event, nua_i_subscribe); + TEST_E(e->data->e_status, 100); + TEST_1(sip = sip_object(e->data->e_msg)); + + TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_notify); + r_tags = e->data->e_tags; + TEST_1(tl_find(r_tags, nutag_substate)); + TEST(tl_find(r_tags, nutag_substate)->t_value, nua_substate_terminated); + + free_events_in_list(ctx, b->events); + + if (print_headings) + printf("TEST NUA-11.6.1: PASSED\n"); + + nua_handle_destroy(a_call->nh), a_call->nh = NULL; + nua_handle_destroy(b_call->nh), b_call->nh = NULL; + + + if (print_headings) + printf("TEST NUA-11.6.2: event fetch, NOTIFY comes before 202\n"); + + TEST_1(a_call->nh = nua_handle(a->nua, a_call, SIPTAG_TO(b->to), TAG_END())); + +/* Fetch 2: + + A B + | | + |------SUBSCRIBE----->| + | Expires: 0 | + |<-------NOTIFY-------| + | S-State: terminated | + |-------200 OK------->| + | | + |<---------202--------| + | | +*/ + + SUBSCRIBE(a, a_call, a_call->nh, NUTAG_URL(b->contact->m_url), + SIPTAG_EVENT_STR("presence"), + SIPTAG_EXPIRES_STR("0"), + SIPTAG_ACCEPT_STR("application/xpidf, application/pidf+xml"), + TAG_END()); + + run_ab_until(ctx, -1, save_until_notified_and_responded, + -1, notify_and_accept); + + /* Client events: + nua_subscribe(), nua_i_notify/nua_r_subscribe/nua_i_notify + */ + for (en1 = en2 = es = NULL, e = a->events->head; e; e = e->next) { + if (en1 == NULL && e->data->e_event == nua_i_notify) + en1 = e; + else if (en2 == NULL && e->data->e_event == nua_i_notify) + en2 = e; + else if (e->data->e_event == nua_r_subscribe) + es = e; + else + TEST_1(!e); + } + + TEST_1(e = en1); + TEST_E(e->data->e_event, nua_i_notify); + TEST_1(tl_find(e->data->e_tags, nutag_substate)); + TEST(tl_find(e->data->e_tags, nutag_substate)->t_value, nua_substate_terminated); + TEST_1(sip = sip_object(e->data->e_msg)); + TEST_1(sip->sip_event); TEST_S(sip->sip_event->o_type, "presence"); + TEST_1(sip->sip_content_type); + TEST_S(sip->sip_content_type->c_type, "application/pidf+xml"); + TEST_1(sip->sip_subscription_state); + TEST_S(sip->sip_subscription_state->ss_substate, "terminated"); + + TEST_1(e = es); TEST_E(e->data->e_event, nua_r_subscribe); + TEST_1(e->data->e_status == 202 || e->data->e_status == 200); + TEST_1(tl_find(e->data->e_tags, nutag_substate)); + + if (es == a->events->head) + TEST(tl_find(e->data->e_tags, nutag_substate)->t_value, nua_substate_embryonic); + else + TEST(tl_find(e->data->e_tags, nutag_substate)->t_value, nua_substate_terminated); + TEST_1(sip = sip_object(e->data->e_msg)); + TEST_1(sip->sip_expires); + TEST_1(sip->sip_expires->ex_delta == 0); + + free_events_in_list(ctx, a->events); + + /* Server events: nua_i_subscribe, nua_r_notify */ + TEST_1(e = b->events->head); + TEST_E(e->data->e_event, nua_i_subscribe); + TEST_E(e->data->e_status, 100); + TEST_1(sip = sip_object(e->data->e_msg)); + + TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_notify); + r_tags = e->data->e_tags; + TEST_1(tl_find(r_tags, nutag_substate)); + TEST(tl_find(r_tags, nutag_substate)->t_value, nua_substate_terminated); + + free_events_in_list(ctx, b->events); + + if (print_headings) + printf("TEST NUA-11.6.2: PASSED\n"); + + nua_handle_destroy(a_call->nh), a_call->nh = NULL; + nua_handle_destroy(b_call->nh), b_call->nh = NULL; + + END(); +} + +/* ---------------------------------------------------------------------- */ /* Unsolicited NOTIFY */ int accept_notify(CONDITION_PARAMS); @@ -1830,6 +2091,7 @@ || test_message(ctx) || test_publish(ctx) || test_subscribe_notify(ctx) + || test_event_fetch(ctx) || test_subscribe_notify_graceful(ctx) || test_newsub_notify(ctx) || test_subscription_timeout(ctx) Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/test_sip_events.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/test_sip_events.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/nua/test_sip_events.c Tue May 13 23:37:33 2008 @@ -358,6 +358,73 @@ printf("TEST NUA-12.5: PASSED\n"); /* ---------------------------------------------------------------------- */ +/* Fetch event, SUBSCRIBE with expires: 0 + + A B + | | + |------SUBSCRIBE---->| + |<--------202--------| + |<------NOTIFY-------| + |-------200 OK------>| + | | +*/ + if (print_headings) + printf("TEST NUA-12.5.1: event fetch\n"); + + SUBSCRIBE(a, a_call, a_call->nh, NUTAG_URL(b->contact->m_url), + SIPTAG_EVENT_STR("presence"), + SIPTAG_ACCEPT_STR("application/pidf+xml"), + SIPTAG_EXPIRES_STR("0"), + TAG_END()); + + run_ab_until(ctx, -1, save_until_notified_and_responded, + -1, save_until_subscription); + + /* Client events: + nua_subscribe(), nua_i_notify/nua_r_subscribe + */ + TEST_1(en = event_by_type(a->events->head, nua_i_notify)); + TEST_1(es = event_by_type(a->events->head, nua_r_subscribe)); + + e = es; TEST_E(e->data->e_event, nua_r_subscribe); + TEST_1(t = tl_find(e->data->e_tags, nutag_substate)); + TEST_1(t->t_value == nua_substate_pending || + t->t_value == nua_substate_terminated || + t->t_value == nua_substate_embryonic); + + e = en; TEST_E(e->data->e_event, nua_i_notify); + TEST_1(sip = sip_object(e->data->e_msg)); + n_tags = e->data->e_tags; + + TEST_1(sip->sip_event); TEST_S(sip->sip_event->o_type, "presence"); + TEST_1(sip->sip_content_type); + TEST_S(sip->sip_content_type->c_type, "application/pidf+xml"); + TEST_1(sip->sip_payload && sip->sip_payload->pl_data); + TEST_1(sip->sip_subscription_state); + TEST_S(sip->sip_subscription_state->ss_substate, "terminated"); + TEST_1(tl_find(n_tags, nutag_substate)); + TEST(tl_find(n_tags, nutag_substate)->t_value, + nua_substate_terminated); + TEST_1(!en->next || !es->next); + free_events_in_list(ctx, a->events); + + /* + Server events: + nua_i_subscription + */ + TEST_1(e = b->events->head); + TEST_E(e->data->e_event, nua_i_subscription); + TEST(tl_gets(e->data->e_tags, NEATAG_SUB_REF(sub), TAG_END()), 1); + TEST_1(sub); + TEST_1(!e->next); + + free_events_in_list(ctx, b->events); + + if (print_headings) + printf("TEST NUA-12.4.1: PASSED\n"); + + + /* ---------------------------------------------------------------------- */ /* 2nd SUBSCRIBE with event id A B @@ -370,7 +437,7 @@ */ /* XXX - we should do this before unsubscribing first one */ if (print_headings) - printf("TEST NUA-12.4: establishing 2nd subscription\n"); + printf("TEST NUA-12.4.2: establishing 2nd subscription\n"); NOTIFIER(b, b_call, b_call->nh, SIPTAG_EVENT_STR("presence"), Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/soa/soa_static.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/soa/soa_static.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/soa/soa_static.c Tue May 13 23:37:33 2008 @@ -731,10 +731,11 @@ o_media = su_zalloc(home, (Ns + 1) * (sizeof *o_media)); u_media = su_zalloc(home, (Nu + 1) * (sizeof *u_media)); r_media = su_zalloc(home, (Nr + 1) * (sizeof *r_media)); + if (!s_media || !o_media || !u_media || !r_media) + return -1; um = sdp_media_dup_all(home, user->sdp_media, session); - - if (!s_media || !u_media || !r_media || !um) + if (!um && user->sdp_media) return -1; u2s = su_alloc(home, (Nu + 1) * sizeof(*u2s)); @@ -1021,7 +1022,16 @@ for (j = 0, um = user->sdp_media; j != s2u[i]; um = um->m_next, j++) assert(um); - assert(um); + if (um == NULL) { + if (dryrun) + return 1; + else + retval = 1; + sm->m_rejected = 1; + sm->m_mode = sdp_inactive; + sm->m_port = 0; + continue; + } send_mode = um->m_mode & sdp_sendonly; if (rm) @@ -1049,10 +1059,11 @@ } } - if (sm->m_mode != (unsigned)(recv_mode | send_mode)) - retval = 1; - - if (!dryrun) { + if (sm->m_mode != (unsigned)(recv_mode | send_mode)) { + if (dryrun) + return 1; + else + retval = 1; sm->m_mode = recv_mode | send_mode; } } @@ -1161,7 +1172,8 @@ *local0 = *local, local = local0; SU_DEBUG_7(("soa_static(%p, %s): %s\n", (void *)ss, by, "upgrade with local description")); - soa_sdp_upgrade(ss, tmphome, local, user, NULL, &u2s, &s2u); + if (soa_sdp_upgrade(ss, tmphome, local, user, NULL, &u2s, &s2u) < 0) + goto internal_error; break; case generate_answer: /* Upgrade local SDP based on remote SDP */ @@ -1173,7 +1185,8 @@ *local0 = *local, local = local0; SU_DEBUG_7(("soa_static(%p, %s): %s\n", (void *)ss, by, "upgrade with remote description")); - soa_sdp_upgrade(ss, tmphome, local, user, remote, &u2s, &s2u); + if (soa_sdp_upgrade(ss, tmphome, local, user, remote, &u2s, &s2u) < 0) + goto internal_error; } break; case process_answer: Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/soa/test_soa.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/soa/test_soa.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/soa/test_soa.c Tue May 13 23:37:33 2008 @@ -1311,6 +1311,159 @@ } +int test_media_removal(struct context *ctx) +{ + BEGIN(); + int n; + + soa_session_t *a, *b; + + char const *offer = NONE, *answer = NONE; + isize_t offerlen = (isize_t)-1, answerlen = (isize_t)-1; + + sdp_session_t const *a_sdp, *b_sdp; + sdp_media_t const *m; + + char const a_caps[] = + "v=0\r\n" + "o=left 219498671 2 IN IP4 127.0.0.2\r\n" + "c=IN IP4 127.0.0.2\r\n" + "m=audio 5008 RTP/AVP 0 8\r\n" + ; + + char const b_caps[] = + "v=0\n" + "m=audio 5004 RTP/AVP 0 8\n" + "a=rtpmap:96 G7231/8000\n" + "a=rtpmap:97 G729/8000\n"; + + TEST_1(a = soa_create("static", ctx->root, ctx)); + TEST_1(b = soa_create("static", ctx->root, ctx)); + + TEST(soa_set_user_sdp(a, 0, a_caps, strlen(a_caps)), 1); + TEST(soa_set_user_sdp(b, 0, b_caps, strlen(b_caps)), 1); + + TEST_1(soa_set_params(b, SOATAG_RTP_MISMATCH(0), + SOATAG_ORDERED_USER(1), + TAG_END())); + + n = soa_generate_offer(a, 1, test_completed); TEST(n, 0); + n = soa_get_local_sdp(a, NULL, &offer, &offerlen); TEST(n, 1); + TEST_1(offer != NULL && offer != NONE); + n = soa_set_remote_sdp(b, 0, offer, offerlen); TEST(n, 1); + n = soa_get_local_sdp(b, NULL, &answer, &answerlen); TEST(n, 0); + n = soa_generate_answer(b, test_completed); TEST(n, 0); + n = soa_get_local_sdp(b, &b_sdp, &answer, &answerlen); TEST(n, 1); + TEST_1(answer != NULL && answer != NONE); + n = soa_set_remote_sdp(a, 0, answer, -1); TEST(n, 1); + n = soa_process_answer(a, test_completed); TEST(n, 0); + + TEST_1(soa_is_complete(b)); + TEST(soa_activate(b, NULL), 0); + + TEST_1(soa_is_complete(a)); + TEST(soa_activate(a, NULL), 0); + + TEST(soa_is_audio_active(a), SOA_ACTIVE_SENDRECV); + TEST(soa_is_remote_audio_active(a), SOA_ACTIVE_SENDRECV); + + /* ---------------------------------------------------------------------- */ + /* Re-O/A: remove media stream */ + TEST(soa_set_user_sdp(b, 0, "v=0", -1), 1); + + n = soa_generate_offer(a, 1, test_completed); TEST(n, 0); + n = soa_get_local_sdp(a, &a_sdp, &offer, &offerlen); TEST(n, 1); + TEST_1(offer != NULL && offer != NONE); + n = soa_set_remote_sdp(b, 0, offer, offerlen); TEST(n, 1); + n = soa_generate_answer(b, test_completed); TEST(n, 0); + n = soa_get_local_sdp(b, &b_sdp, &answer, &answerlen); TEST(n, 1); + TEST_1(m = b_sdp->sdp_media); TEST_1(m->m_rejected); + TEST_1(answer != NULL && answer != NONE); + n = soa_set_remote_sdp(a, 0, answer, -1); TEST(n, 1); + n = soa_process_answer(a, test_completed); TEST(n, 0); + n = soa_get_local_sdp(a, &a_sdp, NULL, NULL); TEST(n, 1); + TEST_1(m = a_sdp->sdp_media); TEST_1(m->m_rejected); + + TEST_1(soa_is_complete(b)); + TEST(soa_activate(b, NULL), 0); + + TEST_1(soa_is_complete(a)); + TEST(soa_activate(a, NULL), 0); + + TEST(soa_is_audio_active(a), SOA_ACTIVE_REJECTED); + TEST(soa_is_remote_audio_active(a), SOA_ACTIVE_REJECTED); + + TEST_VOID(soa_terminate(a, NULL)); + TEST_VOID(soa_terminate(b, NULL)); + + TEST_VOID(soa_destroy(a)); + TEST_VOID(soa_destroy(b)); + + /* ---------------------------------------------------------------------- */ + + TEST_1(a = soa_create("static", ctx->root, ctx)); + TEST_1(b = soa_create("static", ctx->root, ctx)); + + TEST(soa_set_user_sdp(a, 0, a_caps, strlen(a_caps)), 1); + TEST(soa_set_user_sdp(b, 0, b_caps, strlen(b_caps)), 1); + + n = soa_generate_offer(a, 1, test_completed); TEST(n, 0); + n = soa_get_local_sdp(a, NULL, &offer, &offerlen); TEST(n, 1); + TEST_1(offer != NULL && offer != NONE); + n = soa_set_remote_sdp(b, 0, offer, offerlen); TEST(n, 1); + n = soa_get_local_sdp(b, NULL, &answer, &answerlen); TEST(n, 0); + n = soa_generate_answer(b, test_completed); TEST(n, 0); + n = soa_get_local_sdp(b, &b_sdp, &answer, &answerlen); TEST(n, 1); + TEST_1(answer != NULL && answer != NONE); + n = soa_set_remote_sdp(a, 0, answer, -1); TEST(n, 1); + n = soa_process_answer(a, test_completed); TEST(n, 0); + + TEST_1(soa_is_complete(b)); + TEST(soa_activate(b, NULL), 0); + + TEST_1(soa_is_complete(a)); + TEST(soa_activate(a, NULL), 0); + + TEST(soa_is_audio_active(a), SOA_ACTIVE_SENDRECV); + TEST(soa_is_remote_audio_active(a), SOA_ACTIVE_SENDRECV); + + /* ---------------------------------------------------------------------- */ + /* Re-O/A: offerer remove media stream from user sdp */ + TEST(soa_set_user_sdp(a, 0, "v=0", -1), 1); + + n = soa_generate_offer(a, 1, test_completed); TEST(n, 0); + n = soa_get_local_sdp(a, &a_sdp, &offer, &offerlen); TEST(n, 1); + TEST_1(m = a_sdp->sdp_media); TEST_1(m->m_rejected); + TEST_1(offer != NULL && offer != NONE); + n = soa_set_remote_sdp(b, 0, offer, offerlen); TEST(n, 1); + n = soa_generate_answer(b, test_completed); TEST(n, 0); + n = soa_get_local_sdp(b, &b_sdp, &answer, &answerlen); TEST(n, 1); + TEST_1(m = b_sdp->sdp_media); TEST_1(m->m_rejected); + TEST_1(answer != NULL && answer != NONE); + n = soa_set_remote_sdp(a, 0, answer, -1); TEST(n, 1); + n = soa_process_answer(a, test_completed); TEST(n, 0); + n = soa_get_local_sdp(a, &a_sdp, NULL, NULL); TEST(n, 1); + TEST_1(m = a_sdp->sdp_media); TEST_1(m->m_rejected); + + TEST_1(soa_is_complete(b)); + TEST(soa_activate(b, NULL), 0); + + TEST_1(soa_is_complete(a)); + TEST(soa_activate(a, NULL), 0); + + TEST(soa_is_audio_active(a), SOA_ACTIVE_REJECTED); + TEST(soa_is_remote_audio_active(a), SOA_ACTIVE_REJECTED); + + TEST_VOID(soa_terminate(a, NULL)); + TEST_VOID(soa_terminate(b, NULL)); + + TEST_VOID(soa_destroy(a)); + TEST_VOID(soa_destroy(b)); + + END(); +} + + int test_media_reject(struct context *ctx) { BEGIN(); @@ -1482,7 +1635,6 @@ n = soa_get_local_sdp(b, &b_sdp, &offer, &offerlen); TEST(n, 1); TEST_1(offer != NULL && offer != NONE); n = soa_set_remote_sdp(a, 0, offer, offerlen); TEST(n, 1); - printf("offer 2:\n%s", offer); TEST_1(soa_set_params(a, SOATAG_RTP_MISMATCH(0), SOATAG_USER_SDP_STR(a_caps2), TAG_END()) > 0); @@ -1490,7 +1642,6 @@ n = soa_generate_answer(a, test_completed); TEST(n, 0); n = soa_get_local_sdp(a, &a_sdp, &answer, &answerlen); TEST(n, 1); TEST_1(answer != NULL && answer != NONE); - printf("answer 2:\n%s", answer); n = soa_set_remote_sdp(b, 0, answer, -1); TEST(n, 1); n = soa_process_answer(b, test_completed); TEST(n, 0); n = soa_get_local_sdp(b, &b_sdp, NULL, NULL); TEST(n, 1); @@ -1730,6 +1881,7 @@ retval |= test_static_offer_answer(ctx); SINGLE_FAILURE_CHECK(); retval |= test_codec_selection(ctx); SINGLE_FAILURE_CHECK(); retval |= test_media_replace(ctx); SINGLE_FAILURE_CHECK(); + retval |= test_media_removal(ctx); SINGLE_FAILURE_CHECK(); retval |= test_media_reject(ctx); SINGLE_FAILURE_CHECK(); retval |= test_asynch_offer_answer(ctx); SINGLE_FAILURE_CHECK(); Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/su/su_log.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/su/su_log.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/su/su_log.c Tue May 13 23:37:33 2008 @@ -240,11 +240,13 @@ { if (log == NULL) log = su_log_default; - if (log->log_init > 1) + if (log->log_init == 1) return; + if (log->log_env && getenv(log->log_env)) { su_log_init(log); - } else { + } + else { log->log_level = level; log->log_init = 2; Modified: freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/sofia-sip/libsofia-sip-ua/tport/tport_tls.c Tue May 13 23:37:33 2008 @@ -299,7 +299,9 @@ BIO_free(tls->bio_con); for (k = 0; k < TLS_MAX_HOSTS; k++) - free(tls->hosts[k]), tls->hosts[k] = NULL; + if (tls->hosts[k]) { + free(tls->hosts[k]), tls->hosts[k] = NULL; + } free(tls); } Modified: freeswitch/branches/lukedashjr/syslibs/libs/voipcodecs/src/Makefile.am ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/voipcodecs/src/Makefile.am (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/voipcodecs/src/Makefile.am Tue May 13 23:37:33 2008 @@ -27,6 +27,7 @@ lib_LTLIBRARIES = libvoipcodecs.la libvoipcodecs_la_SOURCES = bitstream.c \ + bit_operations.c \ g711.c \ g722_encode.c \ g722_decode.c \ Modified: freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-util/libaprutil.2008.vcproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-util/libaprutil.2008.vcproj (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-util/libaprutil.2008.vcproj Tue May 13 23:37:33 2008 @@ -229,6 +229,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -238,6 +239,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -251,6 +253,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -260,6 +263,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -273,6 +277,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -282,6 +287,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -295,6 +301,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -304,6 +311,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -317,6 +325,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -326,6 +335,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -339,6 +349,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -348,6 +359,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -361,6 +373,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -370,6 +383,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -383,6 +397,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -392,6 +407,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -405,6 +421,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -414,6 +431,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -427,6 +445,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -436,6 +455,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -449,6 +469,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -458,6 +479,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -471,6 +493,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -480,6 +503,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -493,6 +517,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -502,6 +527,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -519,6 +545,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -528,6 +555,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -541,6 +569,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -550,6 +579,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -563,6 +593,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -572,6 +603,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -633,6 +665,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -642,6 +675,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -655,6 +689,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -664,6 +699,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -677,6 +713,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -686,6 +723,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -699,6 +737,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -708,6 +747,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -725,6 +765,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -734,6 +775,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -747,6 +789,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -756,6 +799,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -769,6 +813,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -778,6 +823,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -791,6 +837,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -800,6 +847,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -817,6 +865,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -826,6 +875,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -843,6 +893,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -852,6 +903,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -869,6 +921,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -878,6 +931,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -891,6 +945,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -900,6 +955,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -913,6 +969,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -922,6 +979,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -939,6 +997,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -948,6 +1007,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -983,6 +1043,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -992,6 +1053,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1005,6 +1067,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1014,6 +1077,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1031,6 +1095,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1040,6 +1105,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1053,6 +1119,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1062,6 +1129,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1075,6 +1143,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1084,6 +1153,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1097,6 +1167,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1106,6 +1177,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1117,14 +1189,62 @@ <File RelativePath="..\..\apr-util\dbm\sdbm\sdbm_pair.h" > + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> </File> <File RelativePath="..\..\apr-util\dbm\sdbm\sdbm_private.h" > + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> </File> <File RelativePath="..\..\apr-util\dbm\sdbm\sdbm_tune.h" > + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> </File> </Filter> <Filter @@ -1135,6 +1255,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1144,6 +1265,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1161,6 +1283,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1170,6 +1293,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1187,6 +1311,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1196,6 +1321,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" Modified: freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-util/libaprutil.vcproj ============================================================================== --- freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-util/libaprutil.vcproj (original) +++ freeswitch/branches/lukedashjr/syslibs/libs/win32/apr-util/libaprutil.vcproj Tue May 13 23:37:33 2008 @@ -230,6 +230,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -239,6 +240,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -252,6 +254,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -261,6 +264,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -274,6 +278,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -283,6 +288,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -296,6 +302,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -305,6 +312,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -318,6 +326,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -327,6 +336,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -340,6 +350,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -349,6 +360,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -362,6 +374,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -371,6 +384,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -384,6 +398,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -393,6 +408,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -406,6 +422,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -415,6 +432,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -428,6 +446,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -437,6 +456,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -450,6 +470,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -459,6 +480,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -472,6 +494,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -481,6 +504,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -494,6 +518,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -503,6 +528,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -520,6 +546,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -529,6 +556,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -542,6 +570,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -551,6 +580,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -564,6 +594,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -573,6 +604,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -634,6 +666,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -643,6 +676,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -656,6 +690,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -665,6 +700,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -678,6 +714,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -687,6 +724,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -700,6 +738,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -709,6 +748,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -726,6 +766,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -735,6 +776,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -748,6 +790,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -757,6 +800,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -770,6 +814,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -779,6 +824,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -792,6 +838,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -801,6 +848,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -818,6 +866,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -827,6 +876,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -844,6 +894,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -853,6 +904,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -870,6 +922,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -879,6 +932,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -892,6 +946,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -901,6 +956,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -914,6 +970,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -923,6 +980,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -940,6 +998,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -949,6 +1008,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -984,6 +1044,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -993,6 +1054,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1006,6 +1068,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1015,6 +1078,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1032,6 +1096,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1041,6 +1106,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1054,6 +1120,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1063,6 +1130,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1076,6 +1144,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1085,6 +1154,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1098,6 +1168,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1107,6 +1178,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1118,14 +1190,62 @@ <File RelativePath="..\..\apr-util\dbm\sdbm\sdbm_pair.h" > + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> </File> <File RelativePath="..\..\apr-util\dbm\sdbm\sdbm_private.h" > + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> </File> <File RelativePath="..\..\apr-util\dbm\sdbm\sdbm_tune.h" > + <FileConfiguration + Name="Debug|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> + <FileConfiguration + Name="Release|Win32" + ExcludedFromBuild="true" + > + <Tool + Name="VCCustomBuildTool" + /> + </FileConfiguration> </File> </Filter> <Filter @@ -1136,6 +1256,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1145,6 +1266,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1162,6 +1284,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1171,6 +1294,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1188,6 +1312,7 @@ > <FileConfiguration Name="Debug|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool" @@ -1197,6 +1322,7 @@ </FileConfiguration> <FileConfiguration Name="Release|Win32" + ExcludedFromBuild="true" > <Tool Name="VCCLCompilerTool"
participants (1)
-
Freeswitch SVN