Kathy, I have mailed you the logs directly. The dev list seems to have an upper limit on the message size.
Arjun. -----Original Message----- From: keccles [mailto:[EMAIL PROTECTED] Sent: Wednesday, May 14, 2008 2:26 PM To: Nair, Arjun (CAR:9D30) Cc: sipx-dev Subject: Re: [sipX-dev] SipUserAgent ACK retransmission 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
