Re: [reSIProcate-users] Bug of the v1.7
Interesting. You are now the second person to see this. Looks like two separate transactions are going out with the same transaction id. It seems to me that something must have changed in the random number seeding logic between the two releases.
To see what I mean, search for the TID string z9hG4bK-d8754z-e714ef3fe714ef3f-1---d8754z- in your logs. You will see that the INVITE to hold 105, and the INVITE to pull 106 off hold are using the same TID. The log then shows this error that explains why the 2nd message didn't make it onto the wire:
WARNING | 20110704-122148.870 | Test Phone | RESIP:TRANSACTION | 5624 | transactionstate.cxx:993 | TU sent us a duplicate INVITE: fix this!
Now - just need to figure out why.
Scott
On Mon, Jul 4, 2011 at 12:32 AM, Karlsson
<boost.regex@xxxxxxxxx> wrote:
Now I attached the wireshark trace file and resiprocate log in email.
My test case is:
1: Run my App(built base on resip 1.7) on PC a, and register to server as 101.
2: Make call to 106 and the call is established.
3. Hold the 106 from 101.
4: Make call to 105 and the call is established.
5: Click a button of my App, in this button event, I do: hold 105 and un-hold the 106.
After these steps, the 106 still in hold state - I'm expect the 106 will be un-hold, in the wireshark trace, we can't found the INVITE message of un-hold 106, seems it does not sent out by resip.
Same code same test case, the 1.6 resip works fine.
I have attached the logs in email, please help.
Thanks
I'm sure I found a bug with the v1.7,
I'm implemented the hold and unhold feature with resip as below code:
void UserAgent::hold(long callID, const SdpContents & sdpContent)
{
try
{
ServerInviteSessionMap::iterator iter = mServerInviteSessionMap.find(callID);
if (iter != mServerInviteSessionMap.end())
{
iter->second->provideOffer(sdpContent);
return;
}
ClientInviteSessionMap::iterator iter2 = mClientInviteSessionMap.find(callID);
if (iter2 != mClientInviteSessionMap.end())
{
iter2->second->provideOffer(sdpContent);
}
}
catch (...)
{
}
}
void UserAgent::unHold(long callID, const resip::SdpContents & sdpContent)
{
try
{
ServerInviteSessionMap::iterator iter = mServerInviteSessionMap.find(callID);
if (iter != mServerInviteSessionMap.end())
{
iter->second->provideOffer(sdpContent);
return;
}
ClientInviteSessionMap::iterator iter2 = mClientInviteSessionMap.find(callID);
if (iter2 != mClientInviteSessionMap.end())
{
iter2->second->provideOffer(sdpContent);
}
}
catch (...)
{
}
}
in my APP it has a button to switch two sessions:
CPhoneAppDlg::OnButton1()
{
hold(line1);
unhold(line2);
}
These code are works fine with the resip 1.6 and early versions, but with the 1.7, in the wireshark, I can't found the INVITE message of the "unhold(line2);", seems the resip does not sent out INVITE message of "unhold(line2);
All other codes are same, just if use the DLL and header files with 1.6 then all are works if use the 1.7 then got this bug, please check.
Thanks
--
_______________________________________________
resiprocate-users mailing list
resiprocate-users@xxxxxxxxxxxxxxx
List Archive: http://list.resiprocate.org/archive/resiprocate-users/