Can you send me the log files?
-Kathy
On Wed, 2008-05-14 at 14:13 -0400, Arjun Nair wrote:
> Hello,
>
> I am using the sipXcallLibs and sipXtacklibs in sipXecs (through
> sipXtapi) to implement a basic user agent. Everything is working fine
> (making calls, receiving calls, register etc.), except, there seems to
> be an issue with retransmissions of "ACK"s for duplicate "200 OK"
> responses to an "INVITE", i.e.
>
> INVITE
> sipxUA ----------------------> UA2
> 200 OK
> sipxUA <---------------------- UA2
> ACK
> sipxUA ----------------------> UA2
> 200 OK
> sipxUA <---------------------- UA2
> 200 OK
> sipxUA <---------------------- UA2
> 200 OK
> sipxUA <---------------------- UA2
>
>
> Has anyone else come across this? Is this a known issue?
>
> Looking through the code:
>
> On receiving a duplicate "200 OK", SipTransaction::handleChildIncoming
> is called with the messageRelationship - MESSAGE_DUPLICATE, and the
> response code is parsed correctly as a 200 OK. At this point, the method
> checks the "mpAck" attribute of this SipTransaction object, to resend
> the ACK. However, it is found to be NULL and I get this error/warning in
> the logs - "SipTransaction::handleChildIncoming duplicate 2xx response
> received on UAC for INVITE with no ACK". I can printf and see that the
> other attributes - mpRequest, mpLastProvisionalResponse,
> mpLastFinalResponse, are set up correctly.
>
> Going back and looking at where the original ACK was send from, I can
> see that the SipTransactionList::findTransactionFor matches the outgoing
> ACK message as "MESSAGE_2XX_ACK_PROXY". Manually, forcing this match to
> "MESSAGE_2XX_ACK" sets up the "mpAck" correctly, hence solving the
> retransmission issues.
>
> ** sipXtackLib/src/net/SipTransactionList.cpp **
>
> 5135 if (mIsServerTransaction)
> 5136 {
> 5137 SET_RELATIONSHIP(MESSAGE_2XX_ACK);
> 5138 }
> 5139 else
> 5140 {
> 5141 #ifdef TEST_PRINT
> 5142 OsSysLog::add(FAC_SIP, PRI_DEBUG,
> "SipTransaction::whatRelation ACK PROXY is
> REQUEST");
> 5143 #endif
> 5144 SET_RELATIONSHIP(MESSAGE_2XX_ACK_PROXY);
> 5145 }
>
> So, as far as I can tell, the "mIsServerTransaction" is being setup
> incorrectly for some reason. What is the purpose of
> "mIsServerTransaction"? When acting as a basic user agent setting up a
> call, is it correct for the "mIsServerTransaction" to be false?
>
>
> Or, maybe I am missing something fundamental here?
>
>
> Thanks,
>
> Arjun.
>
> _______________________________________________
> sipx-dev mailing list
> [email protected]
> List Archive: http://list.sipfoundry.org/archive/sipx-dev
> Unsubscribe: http://list.sipfoundry.org/mailman/listinfo/sipx-dev
_______________________________________________
sipx-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev
Unsubscribe: http://list.sipfoundry.org/mailman/listinfo/sipx-dev