Explorar o código

rtpproxy: handle UPDATE in rtpproxy_manage()

- UPDATE can carry SDB body
- reported by Spencer Thomason
(cherry picked from commit 24ff0d9aa060d183fbe40b1fcb5910d60940585b)
Daniel-Constantin Mierla %!s(int64=13) %!d(string=hai) anos
pai
achega
850afebb30
Modificáronse 1 ficheiros con 7 adicións e 1 borrados
  1. 7 1
      modules/rtpproxy/rtpproxy.c

+ 7 - 1
modules/rtpproxy/rtpproxy.c

@@ -1706,7 +1706,7 @@ rtpproxy_manage(struct sip_msg *msg, char *flags, char *ip)
 	method = get_cseq(msg)->method_id;
 
 	if(!(method==METHOD_INVITE || method==METHOD_ACK || method==METHOD_CANCEL
-				|| method==METHOD_BYE))
+				|| method==METHOD_BYE || method==METHOD_UPDATE))
 		return -1;
 
 	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)
 			return force_rtp_proxy(msg, flags, (cp!=NULL)?newip:ip, 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) {
 			msg->msg_flags |= FL_SDP_BODY;
 			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)
 			return unforce_rtp_proxy_f(msg, 0, 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
 					|| tmb.t_gett()==T_UNDEFINED)
 				return force_rtp_proxy(msg, flags, (cp!=NULL)?newip:ip, 0,