[asterisk-commits] crichter: trunk r89178 - in /trunk: ./ channels/ channels/misdn/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Nov 12 07:33:13 CST 2007
Author: crichter
Date: Mon Nov 12 07:33:13 2007
New Revision: 89178
URL: http://svn.digium.com/view/asterisk?view=rev&rev=89178
Log:
Merged revisions 89172 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r89172 | crichter | 2007-11-12 12:23:57 +0100 (Mo, 12 Nov 2007) | 1 line
added restart all interfaces Restart_Indicator, to automatically send a RESTART after the L2 of a PTP Port comes up. Also fixed some places where we have send a RELEASE without need for it.
........
Modified:
trunk/ (props changed)
trunk/channels/chan_misdn.c
trunk/channels/misdn/isdn_lib.c
trunk/channels/misdn/isdn_lib_intern.h
trunk/channels/misdn/isdn_msg_parser.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_misdn.c?view=diff&rev=89178&r1=89177&r2=89178
==============================================================================
--- trunk/channels/chan_misdn.c (original)
+++ trunk/channels/chan_misdn.c Mon Nov 12 07:33:13 2007
@@ -2655,6 +2655,7 @@
start_bc_tones(p);
hanguptone_indicate(p);
+ p->state=MISDN_CLEANING;
if (bc->need_disconnect)
misdn_lib_send_event( bc, EVENT_DISCONNECT);
break;
@@ -2690,7 +2691,8 @@
/*p->state=MISDN_CLEANING;*/
break;
case MISDN_DISCONNECTED:
- misdn_lib_send_event( bc, EVENT_RELEASE);
+ if (bc->need_release)
+ misdn_lib_send_event( bc, EVENT_RELEASE);
p->state = MISDN_CLEANING; /* MISDN_HUNGUP_FROM_AST; */
break;
@@ -2708,13 +2710,15 @@
chan_misdn_log(1, bc->port, " --> out_cause %d\n", bc->out_cause);
bc->out_cause = -1;
- misdn_lib_send_event(bc, EVENT_RELEASE);
+ if (bc->need_release)
+ misdn_lib_send_event(bc, EVENT_RELEASE);
p->state = MISDN_CLEANING;
break;
default:
if (bc->nt) {
bc->out_cause = -1;
- misdn_lib_send_event(bc, EVENT_RELEASE);
+ if (bc->need_release)
+ misdn_lib_send_event(bc, EVENT_RELEASE);
p->state = MISDN_CLEANING;
} else {
if (bc->need_disconnect)
Modified: trunk/channels/misdn/isdn_lib.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/misdn/isdn_lib.c?view=diff&rev=89178&r1=89177&r2=89178
==============================================================================
--- trunk/channels/misdn/isdn_lib.c (original)
+++ trunk/channels/misdn/isdn_lib.c Mon Nov 12 07:33:13 2007
@@ -779,15 +779,12 @@
/* Pull Up L1 */
iframe_t act;
act.prim = PH_DEACTIVATE | REQUEST;
- act.addr = (stack->upper_id | FLG_MSG_DOWN) ;
-
-
+ act.addr = stack->lower_id|FLG_MSG_DOWN;
act.dinfo = 0;
act.len = 0;
+ cb_log(1, stack->port, "SENDING PH_DEACTIVATE | REQ\n");
return mISDN_write(stack->midev, &act, mISDN_HEADER_LEN+act.len, TIMEOUT_1SEC);
-
-
}
@@ -2003,7 +2000,16 @@
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);
}
-
+
+ if (stack->ptp && !stack->restart_sent) {
+ /* make sure we restart the interface of the
+ * other side */
+ stack->restart_sent=1;
+ misdn_lib_send_restart(stack->port, -1);
+
+ }
+
+ /* when we get the L2 UP, the L1 is UP definitely too*/
stack->l2link = 1;
stack->l2upcnt=0;
@@ -3699,30 +3705,29 @@
struct misdn_stack *stack=find_stack_by_port(port);
struct misdn_bchannel dummybc;
/*default is all channels*/
- int max = stack->pri ? 30 : 2;
- int i = 1;
-
cb_log(0, port, "Sending Restarts on this port.\n");
misdn_make_dummy(&dummybc, stack->port, MISDN_ID_GLOBAL, stack->nt, 0);
+ /*default is all channels*/
+ if (channel <0) {
+ dummybc.channel=-1;
+ cb_log(0, port, "Restarting and all Interfaces\n");
+ misdn_lib_send_event(&dummybc, EVENT_RESTART);
+
+ return 0;
+ }
+
/*if a channel is specified we restart only this one*/
- if (channel > 0) {
- i=channel;
- max=channel;
- }
-
- for (;i<=max;i++) {
+ if (channel >0) {
int cnt;
- dummybc.channel=i;
- cb_log(0, port, "Restarting and cleaning channel %d\n",i);
+ dummybc.channel=channel;
+ cb_log(0, port, "Restarting and cleaning channel %d\n",channel);
misdn_lib_send_event(&dummybc, EVENT_RESTART);
- /*do we need to wait before we get an EVENT_RESTART_ACK ?*/
-
/* clean up chan in stack, to be sure we don't think it's
* in use anymore */
for (cnt=0; cnt<=stack->b_num; cnt++) {
- if (stack->bc[cnt].channel == i) {
+ if (stack->bc[cnt].channel == channel) {
empty_bc(&stack->bc[cnt]);
clean_up_bc(&stack->bc[cnt]);
stack->bc[cnt].in_use=0;
Modified: trunk/channels/misdn/isdn_lib_intern.h
URL: http://svn.digium.com/view/asterisk/trunk/channels/misdn/isdn_lib_intern.h?view=diff&rev=89178&r1=89177&r2=89178
==============================================================================
--- trunk/channels/misdn/isdn_lib_intern.h (original)
+++ trunk/channels/misdn/isdn_lib_intern.h Mon Nov 12 07:33:13 2007
@@ -80,6 +80,9 @@
time_t l2establish;
int l1link;
+
+ int restart_sent;
+
int midev;
int nt;
Modified: trunk/channels/misdn/isdn_msg_parser.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/misdn/isdn_msg_parser.c?view=diff&rev=89178&r1=89177&r2=89178
==============================================================================
--- trunk/channels/misdn/isdn_msg_parser.c (original)
+++ trunk/channels/misdn/isdn_msg_parser.c Mon Nov 12 07:33:13 2007
@@ -840,8 +840,13 @@
#ifdef DEBUG
printf("Building RESTART Msg\n");
#endif
- enc_ie_channel_id(&restart->CHANNEL_ID, msg, 1,bc->channel, nt,bc);
- enc_ie_restart_ind(&restart->RESTART_IND, msg, 0x80, nt, bc);
+
+ if (bc->channel > 0) {
+ enc_ie_channel_id(&restart->CHANNEL_ID, msg, 1,bc->channel, nt,bc);
+ enc_ie_restart_ind(&restart->RESTART_IND, msg, 0x80, nt, bc);
+ } else {
+ enc_ie_restart_ind(&restart->RESTART_IND, msg, 0x87, nt, bc);
+ }
cb_log(0,bc->port, "Restarting channel %d\n", bc->channel);
return msg;
More information about the asterisk-commits
mailing list