[asterisk-commits] russell: branch russell/iax2_osp r61693 - /team/russell/iax2_osp/channels/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Fri Apr 20 12:50:49 MST 2007


Author: russell
Date: Fri Apr 20 14:50:48 2007
New Revision: 61693

URL: http://svn.digium.com/view/asterisk?view=rev&rev=61693
Log:
Don't reserve a bunch of space in the iax2_pvt struct unless the osptoken is
acutally present.  Use a string field instead of a fixed buffer.

Modified:
    team/russell/iax2_osp/channels/chan_iax2.c

Modified: team/russell/iax2_osp/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/russell/iax2_osp/channels/chan_iax2.c?view=diff&rev=61693&r1=61692&r2=61693
==============================================================================
--- team/russell/iax2_osp/channels/chan_iax2.c (original)
+++ team/russell/iax2_osp/channels/chan_iax2.c Fri Apr 20 14:50:48 2007
@@ -577,6 +577,8 @@
 		AST_STRING_FIELD(accountcode);
 		AST_STRING_FIELD(mohinterpret);
 		AST_STRING_FIELD(mohsuggest);
+		/*! received OSP token */
+		AST_STRING_FIELD(osptoken);
 	);
 	
 	/*! permitted authentication methods */
@@ -634,9 +636,6 @@
 	int frames_dropped;
 	/*! received frame count: (just for stats) */
 	int frames_received;
-
-	/*! received OSP token */
-	char osptoken[IAX_MAX_OSPBUFF_SIZE];
 };
 
 static AST_LIST_HEAD_STATIC(queue, iax_frame);
@@ -6350,7 +6349,7 @@
 {
 	int i;
 	unsigned int length, offset = 0;
-	char* start = iaxs[fr->callno]->osptoken;
+	char full_osptoken[IAX_MAX_OSPBUFF_SIZE];
 
 	for (i = 0; i < IAX_MAX_OSPBLOCK_NUM; i++) {
 		length = ies->ospblocklength[i];
@@ -6360,18 +6359,20 @@
 				offset = 0;
 				break;
 			} else {
-				memcpy(start + offset, ies->osptokenblock[i], length);
+				memcpy(full_osptoken + offset, ies->osptokenblock[i], length);
 				offset += length;
 			}
 		} else {
 			break;
 		}
 	}
-	*(start + offset) = '\0';
-	if (strlen(start) != offset) {
+	*(full_osptoken + offset) = '\0';
+	if (strlen(full_osptoken) != offset) {
 		/* OSP token length wrong, clear buffer */
-		*start = '\0';
-	}
+		*full_osptoken = '\0';
+	}
+
+	ast_string_field_set(iaxs[fr->callno], osptoken, full_osptoken);
 }
 
 static int socket_read(int *id, int fd, short events, void *cbdata)



More information about the asterisk-commits mailing list