[Asterisk-cvs] asterisk/channels chan_sip.c,1.666,1.667

markster at lists.digium.com markster at lists.digium.com
Fri Feb 25 19:18:06 CST 2005


Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv28751/channels

Modified Files:
	chan_sip.c 
Log Message:
Release RTP ports early (bug #3655)


Index: chan_sip.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v
retrieving revision 1.666
retrieving revision 1.667
diff -u -d -r1.666 -r1.667
--- chan_sip.c	25 Feb 2005 16:37:34 -0000	1.666
+++ chan_sip.c	26 Feb 2005 01:16:12 -0000	1.667
@@ -8379,6 +8379,15 @@
 				if (p->expiry>max_expiry)
 					p->expiry = max_expiry;
 		    }
+			/* Go ahead and free RTP port */
+			if (p->rtp) {
+				ast_rtp_destroy(p->rtp);
+				p->rtp = NULL;
+			}
+			if (p->vrtp) {
+				ast_rtp_destroy(p->rtp);
+				p->vrtp = NULL;
+			}
 		    transmit_response(p, "200 OK", req);
 		    sip_scheddestroy(p, (p->expiry+10)*1000);
 		    transmit_state_notify(p, ast_extension_state(NULL, p->context, p->exten),1);
@@ -8406,6 +8415,15 @@
 		if ((res = register_verify(p, sin, req, e, ignore)) < 0) 
 			ast_log(LOG_NOTICE, "Registration from '%s' failed for '%s'\n", get_header(req, "To"), ast_inet_ntoa(iabuf, sizeof(iabuf), sin->sin_addr));
 		if (res < 1) {
+			/* Go ahead and free RTP port */
+			if (p->rtp) {
+				ast_rtp_destroy(p->rtp);
+				p->rtp = NULL;
+			}
+			if (p->vrtp) {
+				ast_rtp_destroy(p->rtp);
+				p->vrtp = NULL;
+			}
 			/* Destroy the session, but keep us around for just a bit in case they don't
 			   get our 200 OK */
 		    sip_scheddestroy(p, 15*1000);




More information about the svn-commits mailing list