[svn-commits] mattf: branch mattf/bug13495 r163164 - /team/mattf/bug13495/channels/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Dec 11 12:47:16 CST 2008


Author: mattf
Date: Thu Dec 11 12:47:16 2008
New Revision: 163164

URL: http://svn.digium.com/view/asterisk?view=rev&rev=163164
Log:
Fixup our slave channel parsing code a bit.  Also make sure we pass the correct sockaddr len to accept

Modified:
    team/mattf/bug13495/channels/chan_dahdi.c

Modified: team/mattf/bug13495/channels/chan_dahdi.c
URL: http://svn.digium.com/view/asterisk/team/mattf/bug13495/channels/chan_dahdi.c?view=diff&rev=163164&r1=163163&r2=163164
==============================================================================
--- team/mattf/bug13495/channels/chan_dahdi.c (original)
+++ team/mattf/bug13495/channels/chan_dahdi.c Thu Dec 11 12:47:16 2008
@@ -1038,6 +1038,7 @@
 
 	while (1) {
 do_accept:
+		len = sizeof(slave_addr);
 		if ((slave_sock = accept(slave_chan_server.fd, (struct sockaddr *) &slave_addr, &len)) == -1) {
 			ast_log(LOG_ERROR, "Error in accept: %s\n", strerror(errno));
 			continue;
@@ -1071,21 +1072,41 @@
 
 static void ss7_add_slave_to_server(const char *addr)
 {
+	int ip1, ip2, ip3, ip4;
+
 	if (slave_chan_server.numslaves >= SS7_MAX_SLAVES) {
 		ast_log(LOG_ERROR, "Max slave channels reached (%d)\n", MAX_SLAVES);
 		return;
 	}
 
-	sscanf(addr, "%s,%d,%d-%d", 
-		slave_chan_server.slave_channel[slave_chan_server.numslaves].addr,
+	if (sscanf(addr, "%d.%d.%d.%d,%d,%d-%d", 
+				&ip1, &ip2, &ip3, &ip4,
 		&slave_chan_server.slave_channel[slave_chan_server.numslaves].opc,
 		&slave_chan_server.slave_channel[slave_chan_server.numslaves].startcic,
-		&slave_chan_server.slave_channel[slave_chan_server.numslaves].endcic);
-
+		&slave_chan_server.slave_channel[slave_chan_server.numslaves].endcic) != 7) {
+
+		ast_log(LOG_ERROR, "Improperly setup slave chanel %s\n", addr);
+		ast_log(LOG_ERROR, "Addr: %s\n", slave_chan_server.slave_channel[slave_chan_server.numslaves].addr);
+		ast_log(LOG_ERROR, "OPC: %d\n", slave_chan_server.slave_channel[slave_chan_server.numslaves].opc);
+		ast_log(LOG_ERROR, "CICs: %d-%d\n", slave_chan_server.slave_channel[slave_chan_server.numslaves].startcic, slave_chan_server.slave_channel[slave_chan_server.numslaves].endcic);
+		memset(&slave_chan_server.slave_channel[slave_chan_server.numslaves], 0, sizeof(struct slave_channel));
+		return;
+	}
+
+
+	snprintf(slave_chan_server.slave_channel[slave_chan_server.numslaves].addr, 
+		sizeof(slave_chan_server.slave_channel[slave_chan_server.numslaves].addr),
+			"%d.%d.%d.%d", ip1, ip2, ip3, ip4);
 
 	slave_chan_server.slave_channel[slave_chan_server.numslaves].linksetnum = cur_linkset;
+
+	ast_verb(3, "Added SS7 slave channel ADDR %s:OPC %d:CICS %d-%d\n", 
+		slave_chan_server.slave_channel[slave_chan_server.numslaves].addr,
+		slave_chan_server.slave_channel[slave_chan_server.numslaves].opc,
+		slave_chan_server.slave_channel[slave_chan_server.numslaves].startcic,
+		slave_chan_server.slave_channel[slave_chan_server.numslaves].endcic);
+
 	slave_chan_server.numslaves++;
-
 	return;
 }
 




More information about the svn-commits mailing list