]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
Fix rebinding.
authorRoy Marples <roy@marples.name>
Thu, 21 Feb 2008 20:50:01 +0000 (20:50 +0000)
committerRoy Marples <roy@marples.name>
Thu, 21 Feb 2008 20:50:01 +0000 (20:50 +0000)
client.c
dhcp.c

index 2876f49115c266a2225d24fd9dabad9866f403d8..8ce27211b099e42596b48545e30a8ef32c8dcb7c 100644 (file)
--- a/client.c
+++ b/client.c
@@ -758,6 +758,7 @@ static int handle_timeout (state_t *state, const options_t *options)
                        do_socket (state, SOCKET_OPEN);
                        if (state->xid == 0)
                                state->xid = (uint32_t) random ();
+                       dhcp->serveraddress.s_addr = 0;
                        _send_message (state, DHCP_REQUEST, options);
                        state->timeout = dhcp->leasetime - dhcp->rebindtime;
                        state->state = STATE_REQUESTING;
diff --git a/dhcp.c b/dhcp.c
index 9cb174bccc2ab833d07aa6c8fa1f231e89609177..f7826dcb97d4d1f334543fb3ba1622c2bccd464e 100644 (file)
--- a/dhcp.c
+++ b/dhcp.c
@@ -220,8 +220,9 @@ ssize_t send_message (const interface_t *iface, const dhcp_t *dhcp,
                            iface->previous_address.s_addr)
                        {
                                PUTADDR (DHCP_ADDRESS, dhcp->address);
-                               PUTADDR (DHCP_SERVERIDENTIFIER,
-                                        dhcp->serveraddress);
+                               if (dhcp->serveraddress.s_addr)
+                                       PUTADDR (DHCP_SERVERIDENTIFIER,
+                                                       dhcp->serveraddress);
                        }
                }
 #undef PUTADDR