Fix issue 83

This commit is contained in:
bossiel 2011-11-23 18:06:06 +00:00
parent 9f3460aab5
commit 2fa21d2280
3 changed files with 14 additions and 5 deletions

View File

@ -544,7 +544,7 @@ int x0000_Connected_2_Connected_X_iINVITEorUPDATE(va_list *app)
tsk_bool_t bodiless_invite;
tmedia_type_t old_media_type = self->msession_mgr ? self->msession_mgr->type : tmedia_none;
tmedia_type_t new_media_type;
static tsk_bool_t force_sdp = tsk_true; // This is a hack: many client fail to handle 200 Ok without sdp after reINVITE (e.g. hold/resume)
static tsk_bool_t force_sdp = tsk_true; // This is a hack: many clients fail to handle 200 Ok without sdp after reINVITE (e.g. hold/resume)
/* process remote offer */
if((ret = tsip_dialog_invite_process_ro(self, rINVITEorUPDATE))){

View File

@ -239,7 +239,7 @@ int c0000_Outgoing_2_Outgoing_X_iINVITEorUPDATE(va_list *app)
{
tsip_dialog_invite_t *self = va_arg(*app, tsip_dialog_invite_t *);
const tsip_request_t *rINVITEorUPDATE = va_arg(*app, const tsip_request_t *);
tsk_bool_t force_sdp;
int ret = 0;
/* process remote offer */
@ -249,8 +249,10 @@ int c0000_Outgoing_2_Outgoing_X_iINVITEorUPDATE(va_list *app)
}
/* Send 200 OK */
// force SDP in 200 OK even if the request has the same SDP version
force_sdp = TSIP_MESSAGE_HAS_CONTENT(rINVITEorUPDATE);
ret = send_RESPONSE(self, rINVITEorUPDATE, 200, "OK",
(self->msession_mgr && (self->msession_mgr->ro_changed || self->msession_mgr->state_changed)));
(self->msession_mgr && (force_sdp || self->msession_mgr->ro_changed || self->msession_mgr->state_changed)));
/* alert the user */
TSIP_DIALOG_INVITE_SIGNAL(self, tsip_i_request,

View File

@ -459,7 +459,10 @@ int s0000_InProgress_2_InProgress_X_iUPDATE(va_list *app)
return -4;
}
else{
ret = send_RESPONSE(self, request, 200, "OK", tsk_false);
// force SDP in 200 OK even if the request has the same SDP version
tsk_bool_t force_sdp = TSIP_MESSAGE_HAS_CONTENT(request);
ret = send_RESPONSE(self, request, 200, "OK",
(self->msession_mgr && (force_sdp || self->msession_mgr->ro_changed || self->msession_mgr->state_changed)));
}
return ret;
@ -472,6 +475,7 @@ int s0000_InProgress_2_Ringing_X_iUPDATE(va_list *app)
tsip_dialog_invite_t *self = va_arg(*app, tsip_dialog_invite_t *);
tsip_request_t *request = va_arg(*app, tsip_request_t *);
tsk_bool_t force_sdp;
if((ret = tsip_dialog_invite_process_ro(self, request))){
/* Send Error and break the FSM */
@ -480,7 +484,10 @@ int s0000_InProgress_2_Ringing_X_iUPDATE(va_list *app)
}
/* Send 200 UPDATE */
ret = send_RESPONSE(self, request, 200, "OK", tsk_false);
// force SDP in 200 OK even if the request has the same SDP version
force_sdp = TSIP_MESSAGE_HAS_CONTENT(request);
ret = send_RESPONSE(self, request, 200, "OK",
(self->msession_mgr && (force_sdp || self->msession_mgr->ro_changed || self->msession_mgr->state_changed)));
/* Send Ringing */
ret = send_RESPONSE(self, self->last_iInvite, 180, "Ringing", tsk_false);