[reSIProcate] Sip Responses being buffered. How do i get at them when they arrive?

Robert Wyrobek robert at mxtelecom.com
Wed Aug 16 04:50:10 CDT 2006


Hey guys,

Firstly, thank you very much for your responses. I've just checked 
ethereal traces of some INVITE/OK pairs, and the callID, branch, and tag 
all match up correctly.

 > One thing worth nothing; you are not calling select on that fdset
 > after you build it.
Whoops, i just oversimplified my loop to avoid complicating the 
question. The select happens at a different point.

I'm now investigating other possibilities, putting breakpoints in 
various places, and trying to figure out what's happening.

Any further comments would be greatly appreciated.

Best Regards,

Rob

> 
>> Hi guys,
>>
>> I've been using resiprocate for very basic purposes. I've been trying to
>> avoid using any of the higher level functionality, and simply have an
>> event loop which basically does this:
>>
>> while (true) {
>>
>>     sipStack->buildFdSet(fdset);
>>
>>     sipStack->process(fdset);
>>     if ((SipMessage * msg=sipStack->receive())) {
>>         messageProcessor->onSipMessage(msg);
>>     }
>>     processOutgoingMessages(); // this simply reads off a list of        
>>                    // SipMessage*s and sipStack(send)s        
>>                    // each one of them.
>> }
>>
>> This was all working fine when i was only answering sip requests, ie
>> sending back responses to INVITEs using, for example,
>> Helper::makeResponse(*origMsg,200,myAddress). The responses were being
>> sent back as soon as I called sipStack->send(). Similarly, the INVITE
>> was being passed to my messageProcessor->onSipMessage(msg) as soon as it
>> arrived on the wire.
>>
>> However, now I've been trying to send out INVITE requests. I'm sending
>> out offerless invites created using
>> Helper::makeInvite(targetAddress,myAddress), and then sent using
>> sipStack->send(). The INVITE appears on the wire as soon as it is pushed
>> into the sipStack, which is all great.
>>
>> The problem is, that when the 200-OK comes back from the other end, it
>> seems to be getting stuck in a fifo *somewhere*. I cannot for the life
>> of me figure out where this is! The INVITE i've pushed into the stack
>> gets resent 5 or 6 times, before the Timer B which is set to 32 seconds
>> (again, i don't know where from) times out, and only then does the
>> SipMessage get received by the sipStack->receive(msg) method.
>>
>> I'm aware that SipStack::receive() is actually deprecated, but I've only
>> been using that because I was copying the simple examples in
>> resiprocate/resip/stack/test/*. I can see that this is something to do
>> with a TransactionUser registering itself with the sipstack and
>> associating itself with that INVITE request. But I don't know where this
>> transaction user is being created, or how to get at its incoming queue...
>>
>> Ideally, i'd like to (presumably) create my own subclass of
>> TransactionUser which registers itself with the SipStack for ALL
>> incoming requests AND responses, and just deal with all of the state of
>> the dialogs myself. But for now I could just do with being told when a
>> message arrives on the wire! There seems to be pretty much no
>> documentation that I can find which tells me how I might do this, so any
>> pointers would be very helpful.
>>
>> I've been trying to figure this one out for almost a day now, and I
>> figured it's about time to ask around. Can anyone help me out?
>>
>> Thanks in advance, and sorry for the length of the email!
>>
>> Rob
>>
>> --Robert Wyrobek <robert at mxtelecom.com>
>> Software Developer
>> Tel: +44 (0) 845 666 7778
>> Fax: +44 (0) 870 163 4694
>> http://www.mxtelecom.com
>> _______________________________________________
>> resiprocate-devel mailing list
>> resiprocate-devel at list.sipfoundry.org
>> https://list.sipfoundry.org/mailman/listinfo/resiprocate-devel
> 

-- 
Robert Wyrobek <robert at mxtelecom.com>
Software Developer
Tel: +44 (0) 845 666 7778
Fax: +44 (0) 870 163 4694
http://www.mxtelecom.com



More information about the resiprocate-devel mailing list