|
@@ -1706,7 +1706,7 @@ rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip)
|
|
method = get_cseq(msg)->method_id;
|
|
method = get_cseq(msg)->method_id;
|
|
|
|
|
|
if(!(method==METHOD_INVITE || method==METHOD_ACK || method==METHOD_CANCEL
|
|
if(!(method==METHOD_INVITE || method==METHOD_ACK || method==METHOD_CANCEL
|
|
- || method==METHOD_BYE))
|
|
|
|
|
|
+ || method==METHOD_BYE || method==METHOD_UPDATE))
|
|
return -1;
|
|
return -1;
|
|
|
|
|
|
if(method==METHOD_CANCEL || method==METHOD_BYE)
|
|
if(method==METHOD_CANCEL || method==METHOD_BYE)
|
|
@@ -1727,6 +1727,9 @@ rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip)
|
|
if(method==METHOD_ACK && nosdp==0)
|
|
if(method==METHOD_ACK && nosdp==0)
|
|
return force_rtp_proxy(msg, flags, (cp!=NULL)?newip:ip, 0,
|
|
return force_rtp_proxy(msg, flags, (cp!=NULL)?newip:ip, 0,
|
|
(ip!=NULL)?1:0);
|
|
(ip!=NULL)?1:0);
|
|
|
|
+ if(method==METHOD_UPDATE && nosdp==0)
|
|
|
|
+ return force_rtp_proxy(msg, flags, (cp!=NULL)?newip:ip, 1,
|
|
|
|
+ (ip!=NULL)?1:0);
|
|
if(method==METHOD_INVITE && nosdp==0) {
|
|
if(method==METHOD_INVITE && nosdp==0) {
|
|
msg->msg_flags |= FL_SDP_BODY;
|
|
msg->msg_flags |= FL_SDP_BODY;
|
|
if(tmb.t_gett!=NULL && tmb.t_gett()!=NULL
|
|
if(tmb.t_gett!=NULL && tmb.t_gett()!=NULL
|
|
@@ -1741,6 +1744,9 @@ rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip)
|
|
if(msg->first_line.u.reply.statuscode>=300)
|
|
if(msg->first_line.u.reply.statuscode>=300)
|
|
return unforce_rtp_proxy_f(msg, 0, 0);
|
|
return unforce_rtp_proxy_f(msg, 0, 0);
|
|
if(nosdp==0) {
|
|
if(nosdp==0) {
|
|
|
|
+ if(method==METHOD_UPDATE)
|
|
|
|
+ return force_rtp_proxy(msg, flags, (cp!=NULL)?newip:ip, 0,
|
|
|
|
+ (ip!=NULL)?1:0);
|
|
if(tmb.t_gett==NULL || tmb.t_gett()==NULL
|
|
if(tmb.t_gett==NULL || tmb.t_gett()==NULL
|
|
|| tmb.t_gett()==T_UNDEFINED)
|
|
|| tmb.t_gett()==T_UNDEFINED)
|
|
return force_rtp_proxy(msg, flags, (cp!=NULL)?newip:ip, 0,
|
|
return force_rtp_proxy(msg, flags, (cp!=NULL)?newip:ip, 0,
|