Hello,
I have similar problems against a server, the application gets unregistered
but it's registered at the server and continues to recieve the calls. I
tried applying your patch but Tortoise SVN says:
The patch seems to be outdated! The file line
else if (responseRefreshPeriod > 0)
and the patch line
url.getIdentity (lineID);
do not match!
Thanks,
Hitesh
----- Original Message -----
From: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, March 07, 2007 12:42 AM
Subject: [sipxtapi-dev] fix: Line Registered event sometimes not received
> This patch fixed problem with Line registered events sometimes not being
> received.
>
> It occured when in SipRefreshMgr::processOKResponse the
> requestRefreshPeriod was missing in the OK reply. In this case event
> wasn't fired.
>
> If during applying patch it says it is malformed, just remove the "@@
> -1024,8 +1034,9 @@" sections that were applied successfuly, as this
> patch had to be manually edited as well.
>
> Jaroslav Libak
>
>
--------------------------------------------------------------------------------
> Index:
> C:/work/sipfoundry/branches/sipxtapi/sipXtackLib/src/net/SipRefreshMgr.cpp
> ===================================================================
> ---
> C:/work/sipfoundry/branches/sipxtapi/sipXtackLib/src/net/SipRefreshMgr.cpp
> (revision 8938)
> +++
> C:/work/sipfoundry/branches/sipxtapi/sipXtackLib/src/net/SipRefreshMgr.cpp
> (working copy)
> @@ -1024,8 +1034,9 @@
> fireSipXLineEvent(url, lineId.data(),
> LINESTATE_UNREGISTERED, LINESTATE_UNREGISTERED_NORMAL);
>
> }
> - else if ( responseRefreshPeriod > 0 )
> + else
> {
> + // copying from response (this is why we set the To Field
> if ( !toTag.isNull() )
> {
> request->setToFieldTag(toTag);
> @@ -1037,24 +1048,27 @@
> url.getIdentity(lineId);
> lineId = "sip:" + lineId;
>
> - // extract the Message body and pass to apps
> - const char *bodyBytes = NULL;
> - int nBodySize = 0;
> - const HttpBody *body = response->getBody();
> - if (body)
> - {
> - body->getBytes( &bodyBytes, &nBodySize );
> - }
> + // extract the Message body and pass to apps
> + const char *bodyBytes = NULL;
> + int nBodySize = 0;
> + const HttpBody *body = response->getBody();
> + if (body)
> + {
> + body->getBytes( &bodyBytes, &nBodySize );
> + }
>
> - fireSipXLineEvent(url, lineId.data(),
> LINESTATE_REGISTERED, LINESTATE_REGISTERED_NORMAL, bodyBytes );
> + fireSipXLineEvent(url, lineId.data(), LINESTATE_REGISTERED,
> LINESTATE_REGISTERED_NORMAL, bodyBytes );
>
> - rescheduleRequest(request, responseRefreshPeriod,
> SIP_REGISTER_METHOD);
> + if (responseRefreshPeriod > 0)
> + {
> + rescheduleRequest(request, responseRefreshPeriod,
> SIP_REGISTER_METHOD);
> + }
> + else
> + {
> + // could not find expires in 200 ok response , reschedule
> after default time
> + rescheduleAfterTime(request);
> + }
> }
> - else // could not find expires in 200 ok response , reschedule
> after default time
> - { // copying from response (this is why we set the To Field
> - request->setToFieldTag(toTag);
> - rescheduleAfterTime(request);
> - }
> } else // subscribe
> {
> // reschedule according to expires value
>
--------------------------------------------------------------------------------
> _______________________________________________
> sipxtapi-dev mailing list
> [email protected]
> List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/
_______________________________________________
sipxtapi-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/