[reSIProcate] Sip Responses being buffered. How do i get at them when they arrive?
Robert Wyrobek
robert at mxtelecom.com
Wed Aug 16 07:09:24 CDT 2006
Right,
After much faffing, gdb-ing, strace-ing, running down blind alleys, I
finally noticed that I had my resip logging set to debug, as opposed to
stack. So... It turns out the OK is being silently (well, at stack level
anyway) dropped due to being malformed. Now that I can see that
happening, I can at least step through the parser and figure out what's
making it barf.
Cheers for the input.
Rob
Robert Wyrobek wrote:
> 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