aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_misdn.c
diff options
context:
space:
mode:
authorcrichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-12 11:23:57 +0000
committercrichter <crichter@f38db490-d61c-443f-a65b-d21fe96a405b>2007-11-12 11:23:57 +0000
commit964f76279afcf1e0404e5bd195d7e11c64c9d3ee (patch)
tree1cd3381c991db83f439515f63b25fe310f4597cd /channels/chan_misdn.c
parent2ccbe44a6988a0d282ab5ee3e7522550a1b886e3 (diff)
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.
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@89172 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_misdn.c')
-rw-r--r--channels/chan_misdn.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c
index 1eaa30d5f..de97eb012 100644
--- a/channels/chan_misdn.c
+++ b/channels/chan_misdn.c
@@ -797,7 +797,6 @@ static int misdn_set_crypt_debug(int fd, int argc, char *argv[])
return 0;
}
-
static int misdn_port_block(int fd, int argc, char *argv[])
{
int port;
@@ -872,7 +871,7 @@ static int misdn_port_up (int fd, int argc, char *argv[])
static int misdn_port_down (int fd, int argc, char *argv[])
{
int port;
-
+
if (argc != 4)
return RESULT_SHOWUSAGE;
@@ -2422,7 +2421,7 @@ static int misdn_hangup(struct ast_channel *ast)
{
struct chan_list *p;
struct misdn_bchannel *bc=NULL;
-
+
ast_log(LOG_DEBUG, "misdn_hangup(%s)\n", ast->name);
if (!ast || ! (p=MISDN_ASTERISK_TECH_PVT(ast) ) ) return -1;
@@ -2510,7 +2509,8 @@ static int misdn_hangup(struct ast_channel *ast)
release_chan(bc);
p->state=MISDN_CLEANING;
- misdn_lib_send_event( bc, EVENT_RELEASE_COMPLETE);
+ if (bc->need_release_complete)
+ misdn_lib_send_event( bc, EVENT_RELEASE_COMPLETE);
break;
case MISDN_HOLDED:
case MISDN_DIALING:
@@ -2553,7 +2553,8 @@ static int misdn_hangup(struct ast_channel *ast)
/*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;
@@ -2571,13 +2572,15 @@ static int misdn_hangup(struct ast_channel *ast)
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)