[Freeswitch-svn] [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/contrib/trixter freeswitch/scripts/contrib/verifier/EventSocket/trunk/EventWatcher freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/ChannelEvents freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/Commands freeswitch/scripts/contrib/verifier/EventSocket/trunk/FreeSwitchEventSocket/SipEvents freeswitch/scripts/lua freeswitch/scripts/perl freeswitch/src freeswitch/src/include freeswitch/src/include/private freeswitch/src/mod/applications/mod_conference freeswitch/src/mod/applications/mod_dptools freeswitch/src/mod/applications/mod_esf freeswitch/src/mod/applications/mod_fifo freeswitch/src/mod/applications/mod_fsv freeswitch/src/mod/applications/mod_limit freeswitch/src/mod/applications/mod_rss freeswitch/src/mod/applications/mod_voicemail freeswitch/src/mod/endpoints/mod_alsa freeswitch/src/mod/endpoints/mod_dingaling freeswitch/src/mod/endpoints/mod_iax freeswitch/src/mod/endpoints/mod_portaudio freeswitch/src/mod/endpoints/mod_reference freeswitch/src/mod/endpoints/mod_sofia freeswitch/src/mod/endpoints/mod_wanpipe freeswitch/src/mod/endpoints/mod_wanpipe/libsangoma freeswitch/src/mod/endpoints/mod_woomera freeswitch/src/mod/event_handlers/mod_cdr_csv freeswitch/src/mod/event_handlers/mod_radius_cdr freeswitch/src/mod/formats/mod_local_stream freeswitch/src/mod/formats/mod_shout freeswitch/src/mod/languages/mod_java freeswitch/src/mod/languages/mod_java/src/org/freeswitch/swig freeswitch/src/mod/languages/mod_lua freeswitch/src/mod/languages/mod_perl freeswitch/src/mod/languages/mod_python freeswitch/src/mod/languages/mod_spidermonkey freeswitch/src/mod/languages/mod_spidermonkey_teletone freeswitch/src/mod/xml_int/mod_xml_cdr freeswitch/src/mod/xml_int/mod_xml_ldap freeswitch/w32/Setup libs/apr-iconv-1.1.1 libs/apr-util libs/apr-util/crypto libs/iax libs/sofia-sip libs/sofia-sip/libsofia-sip-ua/nta libs/sofia-sip/libsofia-sip-ua/nta/sofia-sip libs/sofia-sip/libsofia-sip-ua/nua libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip libs/sofia-sip/libsofia-sip-ua/soa libs/sofia-sip/libsofia-sip-ua/su libs/sofia-sip/libsofia-sip-ua/tport libs/voipcodecs/src libs/win32/apr-iconv libs/win32/apr-util
Freeswitch SVN
lukedashjr at freeswitch.org
Tue May 13 23:37:38 EDT 2008
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 at 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 at 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 at 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 at 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 at 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 at 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 at 10.0.1.100');
+$event->addHeader("MWI-Messages-Waiting", "yes");
+$event->addHeader("MWI-Message-Account", 'sip:1002 at 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"
More information about the Freeswitch-svn
mailing list