diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2019-05-13 11:51:17 +0300 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2019-05-13 11:51:17 +0300 |
commit | 85ace14ed9976e98081068fe2e797fcf09e08148 (patch) | |
tree | 7daecd3615d17ce70c5d6c492b950d4c360c6d83 /accel-pppd/ctrl/ipoe/ipoe.c | |
parent | 6f433706a152ea987899fd830ff399e257b0f2a6 (diff) | |
parent | e909de9c6afd0581c8847b3676b200f4c0b7237b (diff) | |
download | accel-ppp-85ace14ed9976e98081068fe2e797fcf09e08148.tar.gz accel-ppp-85ace14ed9976e98081068fe2e797fcf09e08148.zip |
Merge branch 'master' of github.com:xebd/accel-ppp
Diffstat (limited to 'accel-pppd/ctrl/ipoe/ipoe.c')
-rw-r--r-- | accel-pppd/ctrl/ipoe/ipoe.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/accel-pppd/ctrl/ipoe/ipoe.c b/accel-pppd/ctrl/ipoe/ipoe.c index 5b44622d..556bad72 100644 --- a/accel-pppd/ctrl/ipoe/ipoe.c +++ b/accel-pppd/ctrl/ipoe/ipoe.c @@ -1646,7 +1646,7 @@ static int ipoe_serv_request_check(struct ipoe_serv *serv, uint32_t xid) list_del(&r->entry); mempool_free(r); } else if (r->xid == xid) { - if (++r->cnt == conf_max_request) { + if (++r->cnt >= conf_max_request) { list_del(&r->entry); mempool_free(r); return 1; @@ -1660,7 +1660,7 @@ static int ipoe_serv_request_check(struct ipoe_serv *serv, uint32_t xid) r = mempool_alloc(req_item_pool); r->xid = xid; r->expire = ts.tv_sec + 30; - r->cnt = 0; + r->cnt = 1; list_add_tail(&r->entry, &serv->req_list); return 0; @@ -1825,7 +1825,12 @@ static void __ipoe_recv_dhcpv4(struct dhcpv4_serv *dhcpv4, struct dhcpv4_packet else if (opt82_ses) { dhcpv4_packet_ref(pack); triton_context_call(&opt82_ses->ctx, (triton_event_func)mac_change_detected, pack); - } else if (ipoe_serv_request_check(serv, pack->hdr->xid)) + } + + if (ap_shutdown) + goto out; + + if (ipoe_serv_request_check(serv, pack->hdr->xid)) dhcpv4_send_nak(dhcpv4, pack); } else { if (ses->terminate) { |