[reSIProcate] Contact missing in 180 response...

John Draper lists at webcrunchers.com
Mon Dec 26 15:36:11 CST 2005


Alexander Altshuler wrote:

>Hi 
>
>Contact header is not always mandatory in 180 responses.
>But if response create dialog( has To tag ) Contact header is mandatory -
>discussed case.
>  
>
I have since done further experimenting on another "Asterisk" server, 
and I get
past that problem.  Our SIP server was indeed failing to build the 
"Contact" header
in it's response, and I have thus told our server group about the 
problem, and they
fixed it on their end.

Now,  I'm ALMOST done...   YAY!!!  I now have this one more problem....  
below
is a stack crawl,  should anyone on the list have the time to help me out.

#0  0x00023144 in resip::SipMessage::cleanUp() (this=0x0) at 
resiprocate/SipMessage.cxx:141
#1  0x00022920 in resip::SipMessage::operator=(resip::SipMessage const&) 
(this=0x0, rhs=@0x7881e00) at resiprocate/SipMessage.cxx:72
#2  0x0000c0b4 in 
InviteClient::onNewSession(resip::Handle<resip::ClientInviteSession>, 
resip::InviteSession::OfferAnswerType, resip::SipMessage const&) 
(this=0x6579bb0, oat=None, msg=@0x7881e00) at SIPPhone/Siphandlers.cpp:243
#3  0x001304a4 in 
resip::ClientInviteSession::dispatchStart(resip::SipMessage const&) 
(this=0x7887600, msg=@0x7881e00) at 
resiprocate/dum/ClientInviteSession.cxx:567
#4  0x0012e7a0 in resip::ClientInviteSession::dispatch(resip::SipMessage 
const&) (this=0x7887600, msg=@0x7881e00) at 
resiprocate/dum/ClientInviteSession.cxx:324
#5  0x000ff1f0 in resip::Dialog::dispatch(resip::SipMessage const&) 
(this=0x7884000, msg=@0x7881e00) at resiprocate/dum/Dialog.cxx:529
#6  0x000c6780 in resip::DialogSet::dispatch(resip::SipMessage const&) 
(this=0x659be30, msg=@0x7881e00) at resiprocate/dum/DialogSet.cxx:639
#7  0x0008473c in 
resip::DialogUsageManager::processResponse(resip::SipMessage const&) 
(this=0x6545c60, response=@0x7881e00) at 
resiprocate/dum/DialogUsageManager.cxx:1396
#8  0x0007d6c8 in 
resip::DialogUsageManager::internalProcess(std::auto_ptr<resip::Message>) 
(this=0x6545c60, msg=<incomplete type>) at 
resiprocate/dum/DialogUsageManager.cxx:904
#9  0x0008df20 in resip::DumThread::thread() (this=0x65773c0) at 
resiprocate/dum/DumThread.cxx:24
#10 0x000a3ed0 in threadWrapper (threadParm=0x65773c0) at 
resiprocate/os/ThreadIf.cxx:34
#11 0x90024910 in _pthread_body ()

Note:   Siphandlers.cpp:243 is here:

void
InviteClient::onNewSession(ClientInviteSessionHandle, 
InviteSession::OfferAnswerType oat, const SipMessage& msg)
{
    cout << ": ClientInviteSession-onNewSession - " << msg.brief() << endl;
   
    // save the data coming in.
    // registerHandle = h;
    reqresponse = msg;           <----- Line 243 is here.... 

    // gets the status line of this message,  should be 200 OK.
    // but this is how you get it if you need it.
    int code = msg.header(h_StatusLine).statusCode();   
   
    [mBridge status:@"Inv: Attempting to connect"];
}

According to the stack trace,  I get to the line indicated above.  I 
don't believe
anything in this method is causing the crash,  I think that's in the 
DumThread
where the crash is actually taking place.  This particular thread (main one)
may have just stopped here....

Above code is in thread 3 (dumThread).

Thread 2 (SipThread) stopped here:

#0    0x9000b42c in select
#1    0x002b8ae0 in resip::FdSet::select(timeval&) at Socket.hxx:98
#2    0x002b8a00 in resip::FdSet::selectMilliSeconds(unsigned long) at 
Socket.hxx:106
#3    0x00042314 in resip::StackThread::thread() at StackThread.cxx:29
#4    0x000a3ed0 in threadWrapper at ThreadIf.cxx:34
#5    0x90024910 in _pthread_body

Main thread...   (all Mac stuff)

#0    0x90007878 in mach_msg_trap
#1    0x900073f8 in mach_msg
#2    0x901c16e0 in __CFRunLoopRun
#3    0x901c5e6c in CFRunLoopRunSpecific
#4    0x92885f60 in GetWindowList
#5    0x9288c6c8 in GetMainEventQueue

Anyway - if anyone sees anything in this stack crawl from either of these
threads, please let me know.

John





More information about the resiprocate-devel mailing list