< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index Next in Thread >

Re: [reSIProcate] Contact missing in 180 response...


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