diff --git a/apps/app_dial.c b/apps/app_dial.c index 8fd479f229..c7928116a2 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1789,7 +1789,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags ast_set2_flag(peer, autoloopflag, AST_FLAG_IN_AUTOLOOP); /* set it back the way it was */ } if (res != AST_PBX_NO_HANGUP_PEER) { - if (!chan->_softhangup) + if (!ast_check_hangup(chan)) chan->hangupcause = peer->hangupcause; ast_hangup(peer); } @@ -1808,7 +1808,7 @@ out: senddialendevent(chan, pa.status); ast_debug(1, "Exiting with DIALSTATUS=%s.\n", pa.status); - if ((ast_test_flag64(peerflags, OPT_GO_ON)) && (!chan->_softhangup) && (res != AST_PBX_KEEPALIVE)) { + if ((ast_test_flag64(peerflags, OPT_GO_ON)) && !ast_check_hangup(chan) && (res != AST_PBX_KEEPALIVE)) { if (calldurationlimit) chan->whentohangup = 0; res = 0; diff --git a/apps/app_macro.c b/apps/app_macro.c index 9949f43c39..32e9d2d219 100644 --- a/apps/app_macro.c +++ b/apps/app_macro.c @@ -385,7 +385,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) } /* don't stop executing extensions when we're in "h" */ - if (chan->_softhangup && !inhangup) { + if (ast_check_hangup(chan) && !inhangup) { ast_debug(1, "Extension %s, macroexten %s, priority %d returned normally even though call was hung up\n", chan->exten, chan->macroexten, chan->priority); goto out; } @@ -434,7 +434,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive) /* If we're leaving the macro normally, restore original information */ chan->priority = oldpriority; ast_copy_string(chan->context, oldcontext, sizeof(chan->context)); - if (!(chan->_softhangup & AST_SOFTHANGUP_ASYNCGOTO)) { + if (!(ast_check_hangup(chan) & AST_SOFTHANGUP_ASYNCGOTO)) { /* Copy the extension, so long as we're not in softhangup, where we could be given an asyncgoto */ const char *offsets; ast_copy_string(chan->exten, oldexten, sizeof(chan->exten)); diff --git a/apps/app_meetme.c b/apps/app_meetme.c index e033044725..fcf45e82ba 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -718,7 +718,7 @@ static void conf_play(struct ast_channel *chan, struct ast_conference *conf, enu int len; int res = -1; - if (!chan->_softhangup) + if (!ast_check_hangup(chan)) res = ast_autoservice_start(chan); AST_LIST_LOCK(&confs); diff --git a/apps/app_osplookup.c b/apps/app_osplookup.c index dd75b57fdc..3e7f9b2b35 100644 --- a/apps/app_osplookup.c +++ b/apps/app_osplookup.c @@ -1734,7 +1734,7 @@ static int ospfinished_exec( ast_debug(1, "OSPFinish: connect '%ld'\n", connect); ast_debug(1, "OSPFinish: end '%ld'\n", end); - release = chan->_softhangup ? 0 : 1; + release = ast_check_hangup(chan) ? 0 : 1; if (osp_finish(outhandle, recorded, cause, start, connect, end, release) <= 0) { ast_debug(1, "OSPFinish: Unable to report usage for outbound call\n"); diff --git a/apps/app_queue.c b/apps/app_queue.c index 166237f91d..291c883bd2 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -2651,7 +2651,7 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce } } res2 |= ast_autoservice_stop(qe->chan); - if (peer->_softhangup) { + if (ast_check_hangup(peer)) { /* Agent must have hung up */ ast_log(LOG_WARNING, "Agent on %s hungup on the customer.\n", peer->name); ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "AGENTDUMP", "%s", ""); @@ -2943,7 +2943,7 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce qe->chan->exten, qe->chan->context, (long) (callstart - qe->start), (long) (time(NULL) - callstart)); send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), TRANSFER); - } else if (qe->chan->_softhangup) { + } else if (ast_check_hangup(qe->chan)) { ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "COMPLETECALLER", "%ld|%ld|%d", (long) (callstart - qe->start), (long) (time(NULL) - callstart), qe->opos); send_agent_complete(qe, queuename, peer, member, callstart, vars, sizeof(vars), CALLER); diff --git a/apps/app_zapras.c b/apps/app_zapras.c index 448c45b7bb..3433ba0f13 100644 --- a/apps/app_zapras.c +++ b/apps/app_zapras.c @@ -161,7 +161,7 @@ static void run_ras(struct ast_channel *chan, char *args) res = wait4(pid, &status, WNOHANG, NULL); if (!res) { /* Check for hangup */ - if (chan->_softhangup && !signalled) { + if (ast_check_hangup(chan) && !signalled) { ast_debug(1, "Channel '%s' hungup. Signalling RAS at %d to die...\n", chan->name, pid); kill(pid, SIGTERM); signalled=1; diff --git a/channels/chan_local.c b/channels/chan_local.c index 3d814d177f..30ad2203be 100644 --- a/channels/chan_local.c +++ b/channels/chan_local.c @@ -246,9 +246,9 @@ static void check_bridge(struct local_pvt *p, int isoutbound) we can't get everything. Remember, we'll get another chance in just a little bit */ if (!ast_mutex_trylock(&(p->chan->_bridge)->lock)) { - if (!p->chan->_bridge->_softhangup) { + if (!ast_check_hangup(p->chan->_bridge)) { if (!ast_mutex_trylock(&p->owner->lock)) { - if (!p->owner->_softhangup) { + if (!ast_check_hangup(p->owner)) { ast_channel_masquerade(p->owner, p->chan->_bridge); ast_set_flag(p, LOCAL_ALREADY_MASQED); } @@ -265,9 +265,9 @@ static void check_bridge(struct local_pvt *p, int isoutbound) } else if (!isoutbound && p->owner && p->owner->_bridge && p->chan && AST_LIST_EMPTY(&p->chan->readq)) { /* Masquerade bridged channel into chan */ if (!ast_mutex_trylock(&(p->owner->_bridge)->lock)) { - if (!p->owner->_bridge->_softhangup) { + if (!ast_check_hangup(p->owner->_bridge)) { if (!ast_mutex_trylock(&p->chan->lock)) { - if (!p->chan->_softhangup) { + if (!ast_check_hangup(p->chan)) { ast_channel_masquerade(p->chan, p->owner->_bridge); ast_set_flag(p, LOCAL_ALREADY_MASQED); } diff --git a/channels/chan_vpb.cc b/channels/chan_vpb.cc index 02c3faf480..bcc3f6834c 100644 --- a/channels/chan_vpb.cc +++ b/channels/chan_vpb.cc @@ -546,11 +546,11 @@ static enum ast_bridge_result ast_vpb_bridge(struct ast_channel *c0, struct ast_ *rc = who; ast_debug(1, "%s: vpb_bridge: Got a [%s]\n",p0->dev, f ? "digit" : "hangup"); /* - if ((c0->tech_pvt == pvt0) && (!c0->_softhangup)) { + if ((c0->tech_pvt == pvt0) && (!ast_check_hangup(c0))) { if (pr0->set_rtp_peer(c0, NULL, NULL, 0)) ast_log(LOG_WARNING, "Channel '%s' failed to revert\n", c0->name); } - if ((c1->tech_pvt == pvt1) && (!c1->_softhangup)) { + if ((c1->tech_pvt == pvt1) && (!ast_check_hangup(c1))) { if (pr1->set_rtp_peer(c1, NULL, NULL, 0)) ast_log(LOG_WARNING, "Channel '%s' failed to revert back\n", c1->name); } diff --git a/main/autoservice.c b/main/autoservice.c index 029555abda..9f175bc792 100644 --- a/main/autoservice.c +++ b/main/autoservice.c @@ -71,7 +71,7 @@ static void *autoservice_run(void *ign) AST_RWLIST_RDLOCK(&aslist); AST_RWLIST_TRAVERSE(&aslist, as, list) { - if (!as->chan->_softhangup) { + if (!ast_check_hangup(as->chan)) { if (x < MAX_AUTOMONS) mons[x++] = as->chan; else @@ -137,7 +137,7 @@ int ast_autoservice_stop(struct ast_channel *chan) if (as->chan == chan) { AST_RWLIST_REMOVE_CURRENT(&aslist, list); ast_free(as); - if (!chan->_softhangup) + if (!ast_check_hangup(chan)) res = 0; break; } diff --git a/main/pbx.c b/main/pbx.c index 34b3eeeb94..419523db9f 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -2418,7 +2418,7 @@ static int __ast_pbx_run(struct ast_channel *c) /* If the AbsoluteTimeout is not reset to 0, we'll get an infinite loop */ c->whentohangup = 0; c->_softhangup &= ~AST_SOFTHANGUP_TIMEOUT; - } else if (c->_softhangup) { + } else if (ast_check_hangup(c)) { ast_debug(1, "Extension %s, priority %d returned normally even though call was hung up\n", c->exten, c->priority); error = 1; diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c index b37c4ed290..41866f0c95 100644 --- a/pbx/pbx_dundi.c +++ b/pbx/pbx_dundi.c @@ -3484,7 +3484,7 @@ static int dundi_lookup_internal(struct dundi_result *result, int maxret, struct struct timeval start; /* Don't do anthing for a hungup channel */ - if (chan && chan->_softhangup) + if (chan && ast_check_hangup(chan)) return 0; ttlms = DUNDI_FLUFF_TIME + ttl * DUNDI_TTL_TIME; @@ -3525,7 +3525,7 @@ static int dundi_lookup_internal(struct dundi_result *result, int maxret, struct ast_log(LOG_DEBUG, "Waiting for similar request for '%s@%s' for '%s'\n", dr.number,dr.dcontext,dundi_eid_to_str(eid_str, sizeof(eid_str), &pending->root_eid)); start = ast_tvnow(); - while(check_request(pending) && (ast_tvdiff_ms(ast_tvnow(), start) < ttlms) && (!chan || !chan->_softhangup)) { + while(check_request(pending) && (ast_tvdiff_ms(ast_tvnow(), start) < ttlms) && (!chan || !ast_check_hangup(chan))) { /* XXX Would be nice to have a way to poll/select here XXX */ /* XXX this is a busy wait loop!!! */ usleep(1); @@ -3558,11 +3558,11 @@ static int dundi_lookup_internal(struct dundi_result *result, int maxret, struct discover_transactions(&dr); /* Wait for transaction to come back */ start = ast_tvnow(); - while (!AST_LIST_EMPTY(&dr.trans) && (ast_tvdiff_ms(ast_tvnow(), start) < ttlms) && (!chan || !chan->_softhangup)) { + while (!AST_LIST_EMPTY(&dr.trans) && (ast_tvdiff_ms(ast_tvnow(), start) < ttlms) && (!chan || !ast_check_hangup(chan))) { ms = 100; ast_waitfor_n_fd(dr.pfds, 1, &ms, NULL); } - if (chan && chan->_softhangup && option_debug) + if (chan && ast_check_hangup(chan) && option_debug) ast_log(LOG_DEBUG, "Hrm, '%s' hungup before their query for %s@%s finished\n", chan->name, dr.number, dr.dcontext); cancel_request(&dr); unregister_request(&dr); diff --git a/res/res_features.c b/res/res_features.c index 610fffa99c..c90a5c5232 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -854,7 +854,7 @@ static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, st ast_set_flag(&(bconfig.features_caller), AST_FEATURE_DISCONNECT); ast_set_flag(&(bconfig.features_callee), AST_FEATURE_DISCONNECT); res = ast_bridge_call(transferer, newchan, &bconfig); - if (newchan->_softhangup || !transferer->_softhangup) { + if (ast_check_hangup(newchan) || !ast_check_hangup(transferer)) { ast_hangup(newchan); if (ast_stream_and_wait(transferer, xfersound, "")) ast_log(LOG_WARNING, "Failed to play transfer sound!\n"); @@ -1450,7 +1450,7 @@ static struct ast_channel *ast_feature_request_and_dial(struct ast_channel *call x = 0; started = ast_tvnow(); to = timeout; - while (!((transferee && transferee->_softhangup) && (!igncallerstate && ast_check_hangup(caller))) && timeout && (chan->_state != AST_STATE_UP)) { + while (!((transferee && ast_check_hangup(transferee)) && (!igncallerstate && ast_check_hangup(caller))) && timeout && (chan->_state != AST_STATE_UP)) { struct ast_frame *f = NULL; monitor_chans[0] = caller; @@ -1504,7 +1504,7 @@ static struct ast_channel *ast_feature_request_and_dial(struct ast_channel *call f = ast_read(caller); if (f == NULL) { /*doh! where'd he go?*/ if (!igncallerstate) { - if (caller->_softhangup && !chan->_softhangup) { + if (ast_check_hangup(caller) && !ast_check_hangup(chan)) { /* make this a blind transfer */ ready = 1; break;