]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge Script <automerge@asterisk.org>
Thu, 11 Jan 2007 14:00:15 +0000 (14:00 +0000)
committerAutomerge Script <automerge@asterisk.org>
Thu, 11 Jan 2007 14:00:15 +0000 (14:00 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@50505 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_misdn.c
channels/misdn/isdn_lib.c
channels/misdn/isdn_msg_parser.c

index 49531126ad7493a1e341a1892b606c06728d72b0..f5499fd9d5fdd13db684bd8bffc79f2082c16ddf 100644 (file)
@@ -1623,23 +1623,21 @@ static int misdn_call(struct ast_channel *ast, char *dest, int timeout)
        int r;
        struct chan_list *ch=MISDN_ASTERISK_TECH_PVT(ast);
        struct misdn_bchannel *newbc;
-       char *opts=NULL, *ext,*tokb;
+       char *opts=NULL, *ext;
        char dest_cp[256];
        
        {
                strncpy(dest_cp,dest,sizeof(dest_cp)-1);
                dest_cp[sizeof(dest_cp)]=0;
-               
-               ext=strtok_r(dest_cp,"/",&tokb);
-               
+
+               ext=dest_cp;
+               strsep(&ext,"/");
                if (ext) {
-                       ext=strtok_r(NULL,"/",&tokb);
-                       if (ext) {
-                               opts=strtok_r(NULL,"/",&tokb);
-                       } else {
-                               chan_misdn_log(0,0,"misdn_call: No Extension given!\n");
-                               return -1;
-                       }
+                       opts=ext;
+                       strsep(&opts,"/");
+               }  else {
+                       ast_log(LOG_WARNING, "Malformed dialstring\n");
+                       return -1;
                }
        }
 
index 33a0f8dbfa64dc280ea491c9aba529ad3c84ef04..4888cada2e812638e29f58b099e8173fa9147432 100644 (file)
@@ -3587,12 +3587,12 @@ int misdn_lib_send_restart(int port)
        struct misdn_bchannel dummybc;
        memset (&dummybc,0,sizeof(dummybc));
        dummybc.port=stack->port;
-       dummybc.l3_id=MISDN_ID_DUMMY;
+       dummybc.l3_id=MISDN_ID_GLOBAL;
        dummybc.nt=stack->nt;
 
        int max=stack->pri?30:2;
        int i;
-       for (i=1;i<max;i++) {
+       for (i=1;i<=max;i++) {
                dummybc.channel=i;
                cb_log(0, port, "Restarting channel %d\n",i);
                misdn_lib_send_event(&dummybc, EVENT_RESTART);
@@ -3722,6 +3722,16 @@ void manager_event_handler(void *arg)
                                        iframe_t *frm = (iframe_t *)msg->data;
                                        struct misdn_bchannel *bc = find_bc_by_l3id(stack, frm->dinfo);
                                        if (bc) send_msg(glob_mgr->midev, bc, msg);
+                                       else  {
+                                               if (frm->dinfo == MISDN_ID_GLOBAL) {
+                                                       struct misdn_bchannel dummybc;
+                                                       memset (&dummybc,0,sizeof(dummybc));
+                                                       dummybc.port=stack->port;
+                                                       dummybc.l3_id=MISDN_ID_GLOBAL;
+                                                       dummybc.nt=stack->nt;
+                                                       send_msg(glob_mgr->midev, &dummybc, msg);
+                                               }
+                                       }
                                }
                        }
                }
index dec05f21475d353e1d88efe02633b136efcf1d84..da73cb42ff7e8736eecd8d40044fdb341cb66a8c 100644 (file)
@@ -794,10 +794,14 @@ msg_t *build_restart (struct isdn_msg msgs[], struct misdn_bchannel *bc, int nt)
        msg_t *msg =(msg_t*)create_l3msg(CC_RESTART | REQUEST, MT_RESTART,  bc?bc->l3_id:-1, sizeof(RESTART_t) ,nt); 
  
        restart=(RESTART_t*)((msg->data+HEADER_LEN)); 
-
+       
 #if DEBUG 
        printf("Building RESTART Msg\n"); 
 #endif
+       enc_ie_channel_id(&restart->CHANNEL_ID, msg, 1,bc->channel, nt,bc);
+
+       cb_log(0,bc->port, "Restarting channel %d\n", bc->channel);
+       
        return msg; 
 }