[asterisk-commits] mattf: branch mattf/bug13495 r163164 - /team/mattf/bug13495/channels/
SVN commits to the Asterisk project
asterisk-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 asterisk-commits
mailing list