summaryrefslogtreecommitdiffstats
path: root/usr.sbin/i4b
diff options
context:
space:
mode:
authorhm <hm@FreeBSD.org>2001-07-21 16:31:39 +0000
committerhm <hm@FreeBSD.org>2001-07-21 16:31:39 +0000
commitd672ec4d3ee7737976711b66fa04fe9a8c7b2295 (patch)
treeebbc23eeda7c0b02fb69a9607dac6893787912b5 /usr.sbin/i4b
parent0bab8d6b8c1c49a48f8b90962045cd1109f0a120 (diff)
downloadFreeBSD-src-d672ec4d3ee7737976711b66fa04fe9a8c7b2295.zip
FreeBSD-src-d672ec4d3ee7737976711b66fa04fe9a8c7b2295.tar.gz
Another hangup bugfix from Juha:
Problem 1 is that the config entry hangup flag is zeroed only at CONNECT_ACTIVE_IND in msghdl.c. If any (other) call is disconnected after EV_MDO and before CONNECT_ACTIVE_IND, the cleanup routine will disconnect the in-progress dialout as well, if its hangup flag is nonzero (which it is likely to be) after the previous incarnation of the cfg entry. Patch-1 fixes this by clearing the hangup flag as soon as a cfg entry is reserved for the call. Submitted by: Juha-Matti Liukkonen <jml@cubical.fi>
Diffstat (limited to 'usr.sbin/i4b')
-rw-r--r--usr.sbin/i4b/isdnd/msghdl.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/usr.sbin/i4b/isdnd/msghdl.c b/usr.sbin/i4b/isdnd/msghdl.c
index a671954..fa2354a 100644
--- a/usr.sbin/i4b/isdnd/msghdl.c
+++ b/usr.sbin/i4b/isdnd/msghdl.c
@@ -143,6 +143,7 @@ msg_connect_ind(msg_connect_ind_t *mp)
log(LL_CHD, "%05d %s ignoring: incoming call from %s to %s",
mp->header.cdid, cep->name, SRC, DST);
sendm_connect_resp(NULL, mp->header.cdid, SETUP_RESP_DNTCRE, 0);
+ cep->cdid = CDID_UNUSED;
break;
case REACT_ANSWER:
@@ -764,6 +765,7 @@ msg_disconnect_ind(msg_disconnect_ind_t *mp)
incr_free_channels(cep->isdncontrollerused);
cep->connect_time = 0;
+ cep->cdid = CDID_UNUSED;
next_state(cep, EV_MDI);
}
@@ -816,6 +818,7 @@ msg_dialout(msg_dialout_ind_t *mp)
cep->charge = 0;
cep->last_charge = 0;
+ cep->hangup = 0;
next_state(cep, EV_MDO);
}
@@ -868,6 +871,7 @@ msg_dialoutnumber(msg_dialoutnumber_ind_t *mp)
cep->charge = 0;
cep->last_charge = 0;
+ cep->hangup = 0;
next_state(cep, EV_MDO);
}
OpenPOWER on IntegriCloud