< Previous by Date | Date Index | Next by Date > |
< Previous in Thread | Thread Index | Next in Thread > |
… From: Aron Rosenberg
[mailto:arosenberg@xxxxxxxxxxxxxx] I get an empty To/From since the
presence server (OpenSER) puts only the ip:port or domain name as the
Contact header in the dialog. Contact:
<sip:sip.sightspeed.com> or <sip:123.123.123.123:5060> If the dialog/transaction then
times-out (408) the onRequestRetry callback is called. Our code returns 0
(please retry transaction). In this case the mRemoteTarget contained the
original contact header (just domain name or ip:port) and this value is then
used as the new “To” header when the ClientSubscription.cxx code calls
makeSubscription for us. We then have a To/From header which is missing the
“user” field of the original request. [Scott] – OK that makes sense –
the whole To/From header is not empty – just the username portion. BTW: What
message are you getting with the Contact header in it, if you are receiving a
408? Can you attach the pcap trace and relevant portions only (ie. Last few
messages processed before the crash) of the resip logs? As for the “end”. We call end
off the subscription handle at some point in the future (i.e. when the user is
logging out) [Scott] – OK – so in step 1 you
actually successfully subscribing, then time passes, and the user “logs out”
then we move to step 2 from below? -Aron From: Scott Godin
[mailto:slgodin@xxxxxxxxxxxx] The NULL mAppDialogSet pointer
issues aside – I’m a little confused how you are getting the empty From/To
header. From the code it seems that if mRemoteTarget is set (ie. Host is
non-empty) then it will use that, otherwise it will use
mLastRequest->header(h_To). How does it end up being empty? Also – from your step 2 below,
you say: Ø
Client ends the
subscription by invoking end() on the handle What handle are you referring
to? I don’t think you should even have a client subscription handle until
the first notify arrives and you get your first callback
(onNewSubscription). Scott From:
resiprocate-devel-bounces@xxxxxxxxxxxxxxx
[mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxx] On Behalf Of Aron
Rosenberg Here is a simple patch which I
believe addresses part of the issue we are seeing. Index: resip/dum/ClientSubscription.cxx =================================================================== ---
resip/dum/ClientSubscription.cxx (revision 8133) +++
resip/dum/ClientSubscription.cxx (working copy) @@ -78,10 +78,7 @@
if (!mOnNewSubscriptionCalled && !getAppDialogSet()->isReUsed())
{
InfoLog (<< "[ClientSubscription] " <<
mLastRequest->header(h_To)); -
if (msg.exists(h_Contacts)) -
{ -
mDialog.mRemoteTarget = msg.header(h_Contacts).front(); -
} +
mDialog.mRemoteTarget = msg.header(h_To);
handler->onNewSubscription(getHandle(), msg);
mOnNewSubscriptionCalled = true; -- The original symptom of an empty
From/To header was caused by the mRemoteTarget being set with the contact
address which is almost always (IP:Port) or just (DNS name:port). The
mRemoteTarget was then used to build the resubscribe if you requested it which
resulted in the empty to/from username. I believe that all the if…else
cases which tested mRemoteTarget for Uri / Host values aren’t needed if the
above is fixed properly. There is still the issue that
the getAppDialogSet() crashes since the pointer is NULL -Aron From:
resiprocate-devel-bounces@xxxxxxxxxxxxxxx [mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxx]
On Behalf Of Aron Rosenberg I was finally able to get
a working pcap, resip log and debug crash at the same time. Here is what is
going on 1.
Client makes
subscription 2.
Client ends the
subscription by invoking end() on the handle 3.
This end results in
a local 408 error, which calls onRequestRetry 4.
Our code returns 0
to onRequestRetry(ClientSubscriptionHandle) to retry the request since we want
the server to know we ended the sub 5.
"Application requested immediate retry on Retry-After" is printed to log 6.
Crash happens in the
else statement in ClientSubscription.cxx:198 when trying to call getAppDialogSet()->reuse(). I have a full log (over 100MB of
resip data which I can send to a developer who wants to look at it along with
the matching pcap error file -Aron From:
resiprocate-devel-bounces@xxxxxxxxxxxxxxx
[mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxx] On Behalf Of Aron
Rosenberg Here is a little bit more
information gleaned from a pcap trace. The stack seems to be crashing
when dealing with a 400 error where the “From:” header looks like this “From:
<sip:>;tag=5b461e50” I was able to find the outbound
SUBSCRIBE request and it also has an empty From address so something strange is
going on in the stack. Still working on getting the resip logs. -Aron From:
resiprocate-devel-bounces@xxxxxxxxxxxxxxx
[mailto:resiprocate-devel-bounces@xxxxxxxxxxxxxxx] On Behalf Of Aron
Rosenberg Resip ver: SVN rev 8128 on 1.3 branch Call Stack: resip::AppDialogSet::getHandle() Line 22 + 0x3 bytes C++ The crash is because the appDialogSet returned in
DialogUsage::getAppDialogSet() is NULL. It came from our production client and is reasonable
repeatable, so I am working on getting the resip logs that would go with it. -Aron --------------------------------------------- Aron Rosenberg Founder and CTO SightSpeed - http://www.sightspeed.com/ 918 Parker St, Suite A14 Berkeley, CA 94710 Email: arosenberg@xxxxxxxxxxxxxx Phone: 510-665-2920 Cell: 510-847-7389 Fax: 510-649-9569 SightSpeed Video Link: http://aron.sightspeed.com |