summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Kozlov <xeb@mail.ru>2010-12-24 22:51:34 +0300
committerDmitry Kozlov <xeb@mail.ru>2010-12-24 22:51:34 +0300
commit00b656fa15b7ff7ee0537dc92851d1185e5f5622 (patch)
treefd10c8d67fa27214f83631003d75254feb5c52ed
parent88db624127e11d4a1d1000a5ebcfb6757a05f3a4 (diff)
downloadaccel-ppp-00b656fa15b7ff7ee0537dc92851d1185e5f5622.tar.gz
accel-ppp-00b656fa15b7ff7ee0537dc92851d1185e5f5622.zip
ppp: fix session hangup
-rw-r--r--accel-pptpd/ppp/ppp_ccp.c2
-rw-r--r--accel-pptpd/ppp/ppp_ipcp.c2
-rw-r--r--accel-pptpd/ppp/ppp_lcp.c2
3 files changed, 3 insertions, 3 deletions
diff --git a/accel-pptpd/ppp/ppp_ccp.c b/accel-pptpd/ppp/ppp_ccp.c
index 7a3012d5..e5b183dc 100644
--- a/accel-pptpd/ppp/ppp_ccp.c
+++ b/accel-pptpd/ppp/ppp_ccp.c
@@ -610,7 +610,7 @@ static void ccp_recv(struct ppp_handler_t*h)
struct ppp_ccp_t *ccp = container_of(h, typeof(*ccp), hnd);
int r;
- if (ccp->fsm.fsm_state == FSM_Initial || ccp->fsm.fsm_state == FSM_Closed) {
+ if (ccp->fsm.fsm_state == FSM_Initial || ccp->fsm.fsm_state == FSM_Closed || ccp->ppp->terminating) {
if (conf_ppp_verbose)
log_ppp_warn("CCP: discarding packet\n");
if (ccp->fsm.fsm_state == FSM_Closed || !conf_ccp)
diff --git a/accel-pptpd/ppp/ppp_ipcp.c b/accel-pptpd/ppp/ppp_ipcp.c
index 88ac575f..7cdcdbc1 100644
--- a/accel-pptpd/ppp/ppp_ipcp.c
+++ b/accel-pptpd/ppp/ppp_ipcp.c
@@ -558,7 +558,7 @@ static void ipcp_recv(struct ppp_handler_t*h)
struct ppp_ipcp_t *ipcp = container_of(h, typeof(*ipcp), hnd);
int r;
- if (ipcp->fsm.fsm_state == FSM_Initial || ipcp->fsm.fsm_state == FSM_Closed) {
+ if (ipcp->fsm.fsm_state == FSM_Initial || ipcp->fsm.fsm_state == FSM_Closed || ipcp->ppp->terminating) {
if (conf_ppp_verbose)
log_ppp_warn("IPCP: discarding packet\n");
return;
diff --git a/accel-pptpd/ppp/ppp_lcp.c b/accel-pptpd/ppp/ppp_lcp.c
index f433ab8a..0b5a5175 100644
--- a/accel-pptpd/ppp/ppp_lcp.c
+++ b/accel-pptpd/ppp/ppp_lcp.c
@@ -698,7 +698,7 @@ static void lcp_recv(struct ppp_handler_t*h)
int r;
char *term_msg;
- if (lcp->fsm.fsm_state == FSM_Initial || lcp->fsm.fsm_state == FSM_Closed) {
+ if (lcp->fsm.fsm_state == FSM_Initial || lcp->fsm.fsm_state == FSM_Closed || lcp->ppp->terminating) {
/*if (conf_ppp_verbose)
log_ppp_warn("LCP: discaring packet\n");
lcp_send_proto_rej(ccp->ppp, htons(PPP_CCP));*/