Merged revisions 50495,50506 via svnmerge from

https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r50495 | crichter | 2007-01-11 14:27:52 +0100 (Do, 11 Jan 2007) | 6 lines

* more additions to make the RESTART message work
* added fix for misdn_call to allow SETUPs with empty 
  extensions, replaced the strtok_r functions with strsep for that 
  (inspired by Sandro Cappellazzo, thanks)


........
r50506 | crichter | 2007-01-11 15:45:38 +0100 (Do, 11 Jan 2007) | 1 line

when we get L2 UP, the L1 is UP definitely too, so we set the L1 state up as well.
........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@51649 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.4
Christian Richter 19 years ago
parent 19fdc9b14e
commit e65aeb27b5

@ -1879,23 +1879,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;
}
}

@ -1970,7 +1970,9 @@ handle_event_nt(void *dat, void *arg)
cb_log(0, stack->port, "%% GOT L2 Activate Info. but we're activated already.. this l2 is faulty, blocking port\n");
cb_event(EVENT_PORT_ALARM, &stack->bc[0], glob_mgr->user_data);
}
/* when we get the L2 UP, the L1 is UP definitely too*/
stack->l1link = 1;
stack->l2link = 1;
stack->l2upcnt=0;
@ -2821,6 +2823,9 @@ static int handle_mgmt(msg_t *msg)
case SSTATUS_L2_ESTABLISHED:
cb_log(3, stack->port, "MGMT: SSTATUS: L2_ESTABLISH \n");
/*when the L2 goes UP, L1 needs to be UP too*/
stack->l1link=1;
stack->l2link=1;
break;
@ -3612,12 +3617,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);
@ -3747,6 +3752,16 @@ static 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);
}
}
}
}
}

@ -816,10 +816,14 @@ static msg_t *build_restart (struct isdn_msg msgs[], struct misdn_bchannel *bc,
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;
}

Loading…
Cancel
Save