Hello,
Some responses to INVITE message (among them 478, which is sent by
some clients remote party rejects the call and 488 which is sent by
operators when remote party is not registered) are never delivered to
SipConnection::processInviteResponseFailed(). It seems that code which
prevents these events from reaching destination is SipTransaction.cpp
line 1941 (SipTransaction::handleChildIncoming()):
shouldDispatch = FALSE;
If I add a special case here:
if (SIP_REQUEST_TERMINATED_CODE != responseCode &&
SIP_REQUEST_NOT_ACCEPTABLE_HERE_CODE != responseCode)
shouldDispatch = FALSE;
then responses are correctly handled by SipConnection. Otherwise the client
is never notified that the invitation failed, and more important the
internal call state is not changed, resulting in sipxUninitialize
endlessly waiting for the call to terminate. Also, client will never
get CALLSTATE_DESTROYED notification in response to sipxCallDestroy().
I suspect that adding a special case in
SipTransaction::handleChildIncoming() is not the best solution
possible, but in the limited scope I was able to test, it works. If
anybody knows better workaround, please let me know.
Best Regards,
Andrzej Ciarkowski
_______________________________________________
sipxtapi-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/