[svn-commits] dvossel: branch 1.4 r194685 - /branches/1.4/channels/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri May 15 10:40:47 CDT 2009


Author: dvossel
Date: Fri May 15 10:40:37 2009
New Revision: 194685

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=194685
Log:
Update to previous IAX2 "Ghost" Channels patch.

Fixed some comments made on reviewboard for the previous patch.

(issue #14207)

Modified:
    branches/1.4/channels/chan_iax2.c
    branches/1.4/channels/iax2-parser.c

Modified: branches/1.4/channels/chan_iax2.c
URL: http://svn.asterisk.org/svn-view/asterisk/branches/1.4/channels/chan_iax2.c?view=diff&rev=194685&r1=194684&r2=194685
==============================================================================
--- branches/1.4/channels/chan_iax2.c (original)
+++ branches/1.4/channels/chan_iax2.c Fri May 15 10:40:37 2009
@@ -444,6 +444,9 @@
 
 /* If consecutive voice frame timestamps jump by more than this many milliseconds, then jitter buffer will resync */
 #define TS_GAP_FOR_JB_RESYNC	5000
+
+/* used for first_iax_message and last_iax_message.  If this bit is set it was TX, else RX */
+#define MARK_IAX_SUBCLASS_TX	0x8000
 
 static int iaxthreadcount = DEFAULT_THREAD_COUNT;
 static int iaxmaxthreadcount = DEFAULT_MAX_THREAD_COUNT;
@@ -4572,7 +4575,7 @@
 	}
 	if (f->frametype == AST_FRAME_IAX) {
 		/* 0x8000 marks this message as TX:, this bit will be stripped later */
-		pvt->last_iax_message = f->subclass | 0x8000;
+		pvt->last_iax_message = f->subclass | MARK_IAX_SUBCLASS_TX;
 		if (!pvt->first_iax_message) {
 			pvt->first_iax_message = pvt->last_iax_message;
 		}
@@ -5069,8 +5072,8 @@
 				localdelay = 0;
 			}
 
-			iax_frame_subclass2str(iaxs[x]->first_iax_message & ~0x8000, first_message, sizeof(first_message));
-			iax_frame_subclass2str(iaxs[x]->last_iax_message & ~0x8000, last_message, sizeof(last_message));
+			iax_frame_subclass2str(iaxs[x]->first_iax_message & ~MARK_IAX_SUBCLASS_TX, first_message, sizeof(first_message));
+			iax_frame_subclass2str(iaxs[x]->last_iax_message & ~MARK_IAX_SUBCLASS_TX, last_message, sizeof(last_message));
 			lag = iaxs[x]->remote_rr.delay;
 			ast_cli(fd, FORMAT,
 				iaxs[x]->owner ? iaxs[x]->owner->name : "(None)",
@@ -5082,9 +5085,9 @@
 				jitter,
 				localdelay,
 				ast_getformatname(iaxs[x]->voiceformat),
-				(iaxs[x]->first_iax_message & 0x8000) ? "Tx:" : "Rx:",
+				(iaxs[x]->first_iax_message & MARK_IAX_SUBCLASS_TX) ? "Tx:" : "Rx:",
 				first_message,
-				(iaxs[x]->last_iax_message & 0x8000) ? "Tx:" : "Rx:",
+				(iaxs[x]->last_iax_message & MARK_IAX_SUBCLASS_TX) ? "Tx:" : "Rx:",
 				last_message);
 			numchans++;
 		}
@@ -5126,8 +5129,8 @@
 				localdropped = 0;
 				localooo = -1;
 			}
-			iax_frame_subclass2str(iaxs[x]->first_iax_message & ~0x8000, first_message, sizeof(first_message));
-			iax_frame_subclass2str(iaxs[x]->last_iax_message & ~0x8000, last_message, sizeof(last_message));
+			iax_frame_subclass2str(iaxs[x]->first_iax_message & ~MARK_IAX_SUBCLASS_TX, first_message, sizeof(first_message));
+			iax_frame_subclass2str(iaxs[x]->last_iax_message & ~MARK_IAX_SUBCLASS_TX, last_message, sizeof(last_message));
 			if (limit_fmt)
 				fmt = "%-20.25s %4d %4d %4d %5d %3d %5d %4d %6d %4d %4d %5d %3d %5d %4d %6d %s%s %4s%s\n";
 			else
@@ -5151,9 +5154,9 @@
 					      iaxs[x]->remote_rr.dropped,
 					      iaxs[x]->remote_rr.ooo,
 					      iaxs[x]->remote_rr.packets/1000,
-                          (iaxs[x]->first_iax_message & 0x8000) ? "Tx:" : "Rx:",
+                          (iaxs[x]->first_iax_message & MARK_IAX_SUBCLASS_TX) ? "Tx:" : "Rx:",
 						  first_message,
-						  (iaxs[x]->last_iax_message & 0x8000) ? "Tx:" : "Rx:",
+						  (iaxs[x]->last_iax_message & MARK_IAX_SUBCLASS_TX) ? "Tx:" : "Rx:",
 						  last_message);
 			else
 				ast_cli(fd, fmt,
@@ -5173,9 +5176,9 @@
 					iaxs[x]->remote_rr.dropped,
 					iaxs[x]->remote_rr.ooo,
 					iaxs[x]->remote_rr.packets/1000,
-					(iaxs[x]->first_iax_message & 0x8000) ? "Tx:" : "Rx:",
+					(iaxs[x]->first_iax_message & MARK_IAX_SUBCLASS_TX) ? "Tx:" : "Rx:",
 					first_message,
-					(iaxs[x]->last_iax_message & 0x8000) ? "Tx:" : "Rx:",
+					(iaxs[x]->last_iax_message & MARK_IAX_SUBCLASS_TX) ? "Tx:" : "Rx:",
 					last_message);
 			numchans++;
 		}

Modified: branches/1.4/channels/iax2-parser.c
URL: http://svn.asterisk.org/svn-view/asterisk/branches/1.4/channels/iax2-parser.c?view=diff&rev=194685&r1=194684&r2=194685
==============================================================================
--- branches/1.4/channels/iax2-parser.c (original)
+++ branches/1.4/channels/iax2-parser.c Fri May 15 10:40:37 2009
@@ -402,7 +402,7 @@
 
 void iax_frame_subclass2str(int subclass, char *str, size_t len)
 {
-	int copylen = 8;
+	static const size_t copylen = 8;
 	const char *iaxs[] = {
 		"(0?)   ",
 		"NEW    ",
@@ -444,12 +444,12 @@
 		"FWDATA ",
 		"TXMEDIA"
 	};
-	if ((copylen > len) || !subclass) {
+	if ((copylen > len) || !subclass || (subclass < 0)) {
 		str[0] = '\0';
 	} else if (subclass < ARRAY_LEN(iaxs)) {
-		memcpy(str, iaxs[subclass], len);
+		ast_copy_string(str, iaxs[subclass], len);
 	} else {
-		memcpy(str, "Unknown", len);
+		ast_copy_string(str, "Unknown", len);
 	}
 }
 




More information about the svn-commits mailing list