Hi Ming, I dont quite understand what you mean, wouldn't our AudioSession over-write the PJSIP one? Sorry to ask, but can you explain this a little better? What we do in our app is: main { register callback handler for reachbility } callback handler { (release resources if necessary) pjsua_destroy(); if(connectable) { .. obviously all the setup here pjsua_init(); (alloc resources) pjsua_start(); } } The callback handler is called for any network state change (that is wifi->wifi, wifi->3g wifi->no signal (and the same for all 3G states too)). So in this way when pjsua starts up again it is bound to the correctly connected network interface. Unless there is a method of telling pjsua to rebind to the active network interface that I have missed, this is the only way I have found to handle network transitions. Also, as a footnote since we are talking about reachability , there is still a compatibility in os_darwinos.h when including <SystemConfiguration/SystemConfiguration.h> the following diff will fix it Index: pjlib/include/pj/compat/os_darwinos.h =================================================================== --- pjlib/include/pj/compat/os_darwinos.h (revision 3410) +++ pjlib/include/pj/compat/os_darwinos.h (working copy) @@ -95,7 +95,10 @@ /* * Socket related */ -typedef int socklen_t; +#ifndef _SOCKLEN_T +#define _SOCKLEN_T +typedef __darwin_socklen_t socklen_t; +#endif /* Set 1 if native sockaddr_in has sin_len member. * Default: 0 Regards, -- Tony Million Chief Technology Officer - Bababoo Inc Web: http://www.bababoo.com/ Tel: +44 20 7993 9152 Twitter: @bababoo On 4 Feb 2011, at 09:09, Ming wrote: > Hi Tony, > > In the case that you need to restart pjsua, you will need to create > your own interruptionListener handler. You can do this by calling > AudioSessionInitialize() before coreaudio calls this function. > > Regards, > Ming > > On Thu, Feb 3, 2011 at 4:22 PM, Tony Million <tony at bababoo.com> wrote: >> I've investigated more, and found the following: >> When our app detects a change in network (i.e. changing from wifi to 3G or >> wifi->different wifi, or even losing signal entirely) we shutdown pjsip >> using pjsua_destroy() then, if/when a network is available we reinitialize >> pjsua using the same startup code we used in the first instance. >> When restarting pjsua I see the following error: >> 08:13:52.942 sip_endpoint.c Module "mod-invite" registered >> 08:13:52.942 coreaudio_dev. dev_id 0: iPhone IO device (in=1, out=1) >> 8000Hz >> 08:13:52.942 coreaudio_dev. Error: cannot initialize audio session >> services (1768843636) >> 08:13:52.943 coreaudio_dev. core audio initialized >> 08:13:52.943 pjlib select() I/O Queue created (0x9dba14) >> 08:13:52.979 sip_endpoint.c Module "mod-evsub" registered >> >> At this point, when I go to make a cellular call, I'll see the same crash I >> pasted (pasted again for completeness >> 08:14:57.383 coreaudio_dev. Session interrupted! --- Begin Interruption >> --- >> Assertion failed: (mutex), function pj_mutex_lock, file >> ../src/pj/os_core_unix.c, line 1203. >> Program received signal: ?SIGABRT?. >> At >> As far as I know the only way to get pjsua to work correctly with the new >> network interface (be it the 3G WWAN or WIFI Network) is to call >> pjsua_destroy and then start up pjsua again. If this is incorrect I'm happy >> to change my code. If I do not shutdown/restart pjsua eventually I just >> start getting 502 (Timeout) responses from pjsua. >> >> Hope this helps, >> Tony >> On 3 Feb 2011, at 05:06, Ming wrote: >> >> Hi Tony, >> >> Thanks for the report. Is the crash always reproducible (i.e. does it >> happen every time you make a call)? >> Do you set up your own audio session interruptions in your >> application? Is there any log message from PJSIP on audio session >> initialization error (Error: cannot initialize audio session >> services...)? >> >> Regards, >> Ming >> >> On Thu, Feb 3, 2011 at 2:24 AM, Tony Million <tony at bababoo.com> wrote: >> >> Hi, >> >> I've been seeing crashes related to audio session interruptions on the >> >> iphone for a while, and just got one while the app is connected to a >> >> debugger. >> >> I've attached the logs, I had made a call on cellular and just switched back >> >> to the PJSip based app. >> >> I have numerous crash logs showing the same thing but today is the first day >> >> I could catch it in the debugger. Don't know if this helps, I'm running >> >> current trunk. >> >> 18:08:27.718 coreaudio_dev. Session interrupted! --- Begin Interruption >> >> --- >> >> Assertion failed: (mutex), function pj_mutex_lock, file >> >> ../src/pj/os_core_unix.c, line 1203. >> >> Program received signal: ?SIGABRT?. >> >> (gdb) bt >> >> #0 0x33bd52d4 in __kill () >> >> #1 0x33bd52ca in kill () >> >> #2 0x33bd52bc in raise () >> >> #3 0x33be9d78 in abort () >> >> #4 0x33bd7986 in __assert_rtn () >> >> #5 0x00076258 in pj_mutex_lock () >> >> #6 0x000aa114 in interruptionListener () >> >> #7 0x31730772 in SSServer_AudioSessionDeferredListenerMessage () >> >> #8 0x316ddf2e in _XAudioSessionDeferredListenerMessage () >> >> #9 0x31677bea in mshMIGPerform () >> >> #10 0x33a556fe in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ >> >> () >> >> #11 0x33a556c2 in __CFRunLoopDoSource1 () >> >> #12 0x33a47f7c in __CFRunLoopRun () >> >> #13 0x33a47c86 in CFRunLoopRunSpecific () >> >> #14 0x33a47b8e in CFRunLoopRunInMode () >> >> #15 0x33b0e4aa in GSEventRunModal () >> >> #16 0x33b0e556 in GSEventRun () >> >> #17 0x32099328 in -[UIApplication _run] () >> >> #18 0x32096e92 in UIApplicationMain () >> >> #19 0x00002cbc in main (argc=1, argv=0x2fdff67c) at >> >> /Users/tony/Projects/IOS/main.m:14 >> >> >> Regards, >> >> -- >> >> Tony Million >> >> _______________________________________________ >> >> Visit our blog: http://blog.pjsip.org >> >> pjsip mailing list >> >> pjsip at lists.pjsip.org >> >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> >> _______________________________________________ >> Visit our blog: http://blog.pjsip.org >> >> pjsip mailing list >> pjsip at lists.pjsip.org >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> >> _______________________________________________ >> Visit our blog: http://blog.pjsip.org >> >> pjsip mailing list >> pjsip at lists.pjsip.org >> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org >> >> > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip at lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org