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