diff options
| author | Roy Marples <roy@marples.name> | 2008-11-27 09:46:28 +0000 |
|---|---|---|
| committer | Roy Marples <roy@marples.name> | 2008-11-27 09:46:28 +0000 |
| commit | e61481a0165952aa68c7dc09af3f739da2e6acfa (patch) | |
| tree | ec8a45680e8054b0f988d1486f89c0281a388407 | |
| parent | cb9618ed639da252921e82f543b8ca3d38744679 (diff) | |
| download | dhcpcd-e61481a0165952aa68c7dc09af3f739da2e6acfa.tar.xz | |
If an interface link fd flaps, don't indiscriminately reset the timeout timer. Thanks to Jean Wolter for tracking it down.
| -rw-r--r-- | client.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -1736,7 +1736,6 @@ handle_link(struct if_state *state) if (retval == 0) return 0; - timerclear(&state->timeout); switch (carrier_status(state->interface->name)) { case -1: logger(LOG_ERR, "carrier_status: %s", strerror(errno)); @@ -1746,6 +1745,7 @@ handle_link(struct if_state *state) logger(LOG_INFO, "carrier lost"); state->carrier = LINK_DOWN; do_socket(state, SOCKET_CLOSED); + timerclear(&state->timeout); if (state->state != STATE_BOUND) timerclear(&state->stop); } @@ -1755,6 +1755,7 @@ handle_link(struct if_state *state) logger(LOG_INFO, "carrier acquired"); state->state = STATE_RENEW_REQUESTED; state->carrier = LINK_UP; + timerclear(&state->timeout); timerclear(&state->stop); return 1; } |
