
| Key: |
XCL-98
|
| Type: |
Bug
|
| Status: |
Open
|
| Priority: |
Minor
|
| Assignee: |
Unassigned
|
| Reporter: |
Andy Jorde
|
| Votes: |
0
|
| Watchers: |
0
|
|
If you were logged in you would be able to see more operations.
|
|
|
|
|
| Component/s: |
sipXcallLib
|
| Affects Version/s: |
None
|
| Fix Version/s: |
None
|
|
|
Original Estimate:
|
Unknown
|
Remaining Estimate:
|
Unknown
|
Time Spent:
|
Unknown
|
|
Environment:
|
Branch ha_replication (3.0.30)
|
|
|
This condition showed up in the following scenario:
1. Call gets parked
2. Caller loses connection (pull network cable)
3. Executor tries to retrieve call
The DialogEventPublisher sees the disconnect of the executor and tries to remove the dialog from its map, but when calling CallManager::getSipDialog the function does not fail and returns an 'empty' dialog object, i.e. callId and requestUri fields are empty.
The fact that this happens on a failed transfer seems to indicate that dialog data is not set up or copied into the right place under this circumstance.
|
|
Description
|
This condition showed up in the following scenario:
1. Call gets parked
2. Caller loses connection (pull network cable)
3. Executor tries to retrieve call
The DialogEventPublisher sees the disconnect of the executor and tries to remove the dialog from its map, but when calling CallManager::getSipDialog the function does not fail and returns an 'empty' dialog object, i.e. callId and requestUri fields are empty.
The fact that this happens on a failed transfer seems to indicate that dialog data is not set up or copied into the right place under this circumstance. |
Show » |
|
In SipConnection::processReferResponse we set the connection state depending on the response code and then send a CP_TRANSFER_CONNECTION message which eventually ends up in CpPeerCall::handleTransferConnectionStatus. That function then calls
connection->transferControllerStatus(connectionState, cause);
which in turn ends up in SipConnection again:
UtlBoolean SipConnection::transferControllerStatus(int connectionState, int response)
{
// It should never get here
unimplemented("SipConnection::transferControllerStatus");
return(FALSE);
}