aboutsummaryrefslogtreecommitdiff
path: root/net/asterisk12/files/patch-rtp.c
blob: 36c4bea2f7eabbd5e91cd16b315a63bde21f35b8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
--- rtp.c.orig	Tue Apr 26 10:00:28 2005
+++ rtp.c	Tue Apr 26 10:06:35 2005
@@ -127,7 +127,7 @@
 {
 	switch(buf & TYPE_MASK) {
 	case TYPE_DONTSEND:
-		return 0;
+		return 2;
 		break;
 	case TYPE_SILENCE:
 		return 4;
@@ -351,9 +351,7 @@
 					0, (struct sockaddr *)&sin, &len);
 	
 	if (res < 0) {
-		if (errno == EAGAIN)
-			ast_log(LOG_NOTICE, "RTP: Received packet with bad UDP checksum\n");
-		else
+		if (errno != EAGAIN)
 			ast_log(LOG_WARNING, "RTP Read error: %s\n", strerror(errno));
 		if (errno == EBADF)
 			CRASH;
@@ -431,9 +429,7 @@
 
 	rtpheader = (unsigned int *)(rtp->rawdata + AST_FRIENDLY_OFFSET);
 	if (res < 0) {
-		if (errno == EAGAIN)
-			ast_log(LOG_NOTICE, "RTP: Received packet with bad UDP checksum\n");
-		else
+		if (errno != EAGAIN)
 			ast_log(LOG_WARNING, "RTP Read error: %s\n", strerror(errno));
 		if (errno == EBADF)
 			CRASH;
@@ -862,8 +858,10 @@
 		/* Must be an even port number by RTP spec */
 		rtp->us.sin_port = htons(x);
 		rtp->us.sin_addr = addr;
-		if (rtp->rtcp)
+		if (rtp->rtcp) {
 			rtp->rtcp->us.sin_port = htons(x + 1);
+			rtp->rtcp->us.sin_addr = addr;
+		}
 		if (!(first = bind(rtp->s, (struct sockaddr *)&rtp->us, sizeof(rtp->us))) &&
 			(!rtp->rtcp || !bind(rtp->rtcp->s, (struct sockaddr *)&rtp->rtcp->us, sizeof(rtp->rtcp->us))))
 			break;