[Asterisk-code-review] res rtp asterisk: Avoid close the rtp/rtcp fd twice. (asterisk[master])

Aaron An asteriskteam at digium.com
Mon Dec 18 06:14:16 CST 2017


Aaron An has uploaded this change for review. ( https://gerrit.asterisk.org/7618


Change subject: res_rtp_asterisk:  Avoid close the rtp/rtcp fd twice.
......................................................................

res_rtp_asterisk:  Avoid close the rtp/rtcp fd twice.

When RTCP-MUX enabled. rtp->s is the same as rtcp->s, check this before
close the file descriptor. Close the FD twice will hangs the asterisk
under heavy load.

ASTERISK-27299 #close
Reported-by: Aaron An
Tested-by: AaronAn

Change-Id: I870a072d73fd207463ac116ef97100addbc0820a
---
M res/res_rtp_asterisk.c
1 file changed, 2 insertions(+), 1 deletion(-)



  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/18/7618/1

diff --git a/res/res_rtp_asterisk.c b/res/res_rtp_asterisk.c
index 51e509c..755ece8 100644
--- a/res/res_rtp_asterisk.c
+++ b/res/res_rtp_asterisk.c
@@ -3481,6 +3481,7 @@
 
 static void rtp_deallocate_transport(struct ast_rtp_instance *instance, struct ast_rtp *rtp)
 {
+	int saved_rtp_s = rtp->s;
 #ifdef HAVE_PJPROJECT
 	struct timeval wait = ast_tvadd(ast_tvnow(), ast_samp2tv(TURN_STATE_WAIT_TIME, 1000));
 	struct timespec ts = { .tv_sec = wait.tv_sec, .tv_nsec = wait.tv_usec * 1000, };
@@ -3497,7 +3498,7 @@
 	}
 
 	/* Destroy RTCP if it was being used */
-	if (rtp->rtcp && rtp->rtcp->s > -1) {
+	if (rtp->rtcp && rtp->rtcp->s > -1 && rtp->rtcp->s != saved_rtp_s) {
 		close(rtp->rtcp->s);
 		rtp->rtcp->s = -1;
 	}

-- 
To view, visit https://gerrit.asterisk.org/7618
To unsubscribe, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I870a072d73fd207463ac116ef97100addbc0820a
Gerrit-Change-Number: 7618
Gerrit-PatchSet: 1
Gerrit-Owner: Aaron An <anjb at ti-net.com.cn>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20171218/242e0171/attachment.html>


More information about the asterisk-code-review mailing list