diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2010-12-10 20:21:10 +0300 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2010-12-10 20:21:10 +0300 |
commit | 382aa50a3e9c844bf73f2a4c9a6c83a68db1ca3b (patch) | |
tree | caca567a5111776d8fcee45bfdff7dfd47b4972b | |
parent | c79c64f4f945e15a290e4c7c9ed4a8516926d43b (diff) | |
parent | 71803e7eda63162a99f2d2e8a1eeeadc89c9b4e7 (diff) | |
download | accel-ppp-382aa50a3e9c844bf73f2a4c9a6c83a68db1ca3b.tar.gz accel-ppp-382aa50a3e9c844bf73f2a4c9a6c83a68db1ca3b.zip |
Merge branch 'master' of ssh://accel-pptp.git.sourceforge.net/gitroot/accel-pptp/accel-pptp
-rw-r--r-- | accel-pptpd/ppp/ppp_lcp.c | 13 | ||||
-rw-r--r-- | accel-pptpd/triton/triton.c | 1 |
2 files changed, 11 insertions, 3 deletions
diff --git a/accel-pptpd/ppp/ppp_lcp.c b/accel-pptpd/ppp/ppp_lcp.c index e8eba29e..334f6c88 100644 --- a/accel-pptpd/ppp/ppp_lcp.c +++ b/accel-pptpd/ppp/ppp_lcp.c @@ -120,15 +120,22 @@ int lcp_layer_start(struct ppp_layer_data_t *ld) return 0; } +static void _lcp_layer_finished(struct ppp_lcp_t *lcp) +{ + ppp_layer_finished(lcp->ppp, &lcp->ld); +} + void lcp_layer_finish(struct ppp_layer_data_t *ld) { struct ppp_lcp_t *lcp = container_of(ld,typeof(*lcp),ld); log_ppp_debug("lcp_layer_finish\n"); - stop_echo(lcp); - - ppp_fsm_close(&lcp->fsm); + if (lcp->started) { + stop_echo(lcp); + ppp_fsm_close(&lcp->fsm); + } else + triton_context_call(lcp->ppp->ctrl->ctx, (triton_event_func)_lcp_layer_finished, lcp); } void lcp_layer_free(struct ppp_layer_data_t *ld) diff --git a/accel-pptpd/triton/triton.c b/accel-pptpd/triton/triton.c index 426eefe5..26c257c7 100644 --- a/accel-pptpd/triton/triton.c +++ b/accel-pptpd/triton/triton.c @@ -169,6 +169,7 @@ static void ctx_thread(struct _triton_context_t *ctx) spin_unlock(&ctx->lock); call->func(call->arg); mempool_free(call); + continue; } ctx->pending = 0; spin_unlock(&ctx->lock); |