Cleanup some flags on DAHDI PRI channel hangup.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 30 Oct 2009 23:26:41 +0000 (23:26 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 30 Oct 2009 23:26:41 +0000 (23:26 +0000)
*  Cleanup some flags on DAHDI PRI channel hangup. (sig_pri split)
*  Make sure the outgoing flag is cleared if a new channel fails to get
created for outgoing calls.
*  Remove some unused flags since sig_pri was split.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@226648 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_dahdi.c
channels/sig_pri.c

index 40b2600..583408e 100644 (file)
@@ -981,27 +981,12 @@ struct dahdi_pvt {
        /*! \brief TRUE if the call has already gone/hungup */
        unsigned int alreadyhungup:1;
        /*!
-        * \brief TRUE if this is an idle call
-        * \note Applies to PRI channels.
-        */
-       unsigned int isidlecall:1;
-       /*!
         * \brief TRUE if call is in a proceeding state.
         * The call has started working its way through the network.
         */
        unsigned int proceeding:1;
        /*! \brief TRUE if the call has seen progress through the network. */
        unsigned int progress:1;
-       /*!
-        * \brief TRUE if this channel is being reset/restarted
-        * \note Applies to PRI channels.
-        */
-       unsigned int resetting:1;
-       /*!
-        * \brief TRUE if this channel has received a SETUP_ACKNOWLEDGE
-        * \note Applies to PRI channels.
-        */
-       unsigned int setup_ack:1;
 #endif
        /*!
         * \brief TRUE if SMDI (Simplified Message Desk Interface) is enabled
@@ -5473,6 +5458,16 @@ static int dahdi_hangup(struct ast_channel *ast)
                sig_pri_hangup(p->sig_pvt, ast);
                p->subs[SUB_REAL].owner = NULL;
                p->owner = NULL;
+               p->ringt = 0;/* Probably not used in this mode.  Reset anyway. */
+               p->distinctivering = 0;/* Probably not used in this mode. Reset anyway. */
+               p->confirmanswer = 0;/* Probably not used in this mode. Reset anyway. */
+               p->outgoing = 0;
+               p->digital = 0;
+               p->faxhandled = 0;
+               p->pulsedial = 0;/* Probably not used in this mode. Reset anyway. */
+               //p->proceeding = 0;
+               //p->progress = 0;
+               //p->alerting = 0;
                goto hangup_out;
        }
 #endif
@@ -5617,7 +5612,6 @@ static int dahdi_hangup(struct ast_channel *ast)
                p->dialing = 0;
                p->progress = 0;
                p->alerting = 0;
-               p->setup_ack = 0;
                p->rlt = 0;
 #endif
                if (p->dsp) {
@@ -8682,8 +8676,6 @@ static struct ast_channel *dahdi_new(struct dahdi_pvt *i, int state, int startpb
        pbx_builtin_setvar_helper(tmp, "TRANSFERCAPABILITY", ast_transfercapability2str(transfercapability));
        if (transfercapability & AST_TRANS_CAP_DIGITAL)
                i->digital = 1;
-       /* Assume calls are not idle calls unless we're told differently */
-       i->isidlecall = 0;
        i->alreadyhungup = 0;
 #endif
        /* clear the fake event in case we posted one before we had ast_channel */
@@ -12111,6 +12103,9 @@ static struct ast_channel *dahdi_request(const char *type, int format, const str
                        } else {
                                tmp = dahdi_new(p, AST_STATE_RESERVED, 0, p->owner ? SUB_CALLWAIT : SUB_REAL, 0, 0, requestor ? requestor->linkedid : "");
                        }
+                       if (!tmp) {
+                               p->outgoing = 0;
+                       }
 
                        /* Make special notes */
                        if (res > 1) {
index 5db73c2..f369fa3 100644 (file)
@@ -725,9 +725,16 @@ static struct ast_channel *sig_pri_new_ast_channel(struct sig_pri_chan *p, int s
 
 struct ast_channel *sig_pri_request(struct sig_pri_chan *p, enum sig_pri_law law, const struct ast_channel *requestor)
 {
+       struct ast_channel *ast;
+
        ast_log(LOG_DEBUG, "%s %d\n", __FUNCTION__, p->channel);
 
-       return sig_pri_new_ast_channel(p, AST_STATE_RESERVED, 0, law, 0, p->exten, requestor);
+       p->outgoing = 1;
+       ast = sig_pri_new_ast_channel(p, AST_STATE_RESERVED, 0, law, 0, p->exten, requestor);
+       if (!ast) {
+               p->outgoing = 0;
+       }
+       return ast;
 }
 
 int pri_is_up(struct sig_pri_pri *pri)