diff options
author | Dan Williams <dcbw@redhat.com> | 2005-06-16 03:30:42 +0000 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2005-06-16 03:30:42 +0000 |
commit | 28730cb2a7b05ecef0c1fee559d0fc88246726b5 (patch) | |
tree | 95f8095bb65ee0e3ce79c03938dd44b2cc27d55d | |
parent | 6035df394afa15ad7d9577749263f3e89a327f16 (diff) | |
download | NetworkManager-28730cb2a7b05ecef0c1fee559d0fc88246726b5.tar.gz |
2005-05-16 Dan Williams <dcbw@redhat.com>
* dhcpcd/client.c
- (dhcp_handle_transaction): Fix condition that may have resulted
in incorrect return of RET_DHCP_SUCCESS when we really timed out.
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/branches/FC4_BRANCH@679 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | dhcpcd/client.c | 16 |
2 files changed, 14 insertions, 8 deletions
@@ -1,3 +1,9 @@ +2005-05-16 Dan Williams <dcbw@redhat.com> + + * dhcpcd/client.c + - (dhcp_handle_transaction): Fix condition that may have resulted + in incorrect return of RET_DHCP_SUCCESS when we really timed out. + 2005-05-15 Dan Williams <dcbw@redhat.com> * dispatcher-daemon/NetworkManagerDispatcher.c diff --git a/dhcpcd/client.c b/dhcpcd/client.c index 2c55b3a980..dbf796b630 100644 --- a/dhcpcd/client.c +++ b/dhcpcd/client.c @@ -492,8 +492,8 @@ int dhcp_handle_transaction (dhcp_interface *iface, unsigned int expected_reply_ char foobuf[512]; struct sockaddr_ll server_hw_addr; int data_good = 0; - int min_data_len = (sizeof (struct iphdr) + sizeof (struct udphdr)); - + int min_data_len = (sizeof (struct iphdr) + sizeof (struct udphdr)); + int int_err = RET_DHCP_TIMEOUT; if (iface->cease) goto out; @@ -513,11 +513,11 @@ int dhcp_handle_transaction (dhcp_interface *iface, unsigned int expected_reply_ memset (&addr, 0, sizeof (struct sockaddr)); memcpy (addr.sa_data, iface->iface, strlen (iface->iface)); - err = sendto (iface->sk, udp_send, udp_send_len, MSG_DONTWAIT, (struct sockaddr *)&addr, sizeof (struct sockaddr)); - if (iface->cease || ((err == -1) && (errno != EAGAIN))) + int_err = sendto (iface->sk, udp_send, udp_send_len, MSG_DONTWAIT, (struct sockaddr *)&addr, sizeof (struct sockaddr)); + if (iface->cease || ((int_err == -1) && (errno != EAGAIN))) { #ifdef DEBUG - syslog (LOG_INFO, "DHCP: error sending, cease = %d, err = %d, errno = %d", iface->cease, err, errno); + syslog (LOG_INFO, "DHCP: error sending, cease = %d, err = %d, errno = %d", iface->cease, int_err, errno); #endif err = iface->cease ? RET_DHCP_CEASED : RET_DHCP_ERROR; goto out; @@ -530,7 +530,7 @@ int dhcp_handle_transaction (dhcp_interface *iface, unsigned int expected_reply_ err = RET_DHCP_TIMEOUT; goto out; } - } while ((err == -1) && (errno == EAGAIN)); + } while ((int_err == -1) && (errno == EAGAIN)); /* Set up the future time at which point to stop waiting for data * on our socket and try the request again. If that future point is @@ -559,9 +559,9 @@ int dhcp_handle_transaction (dhcp_interface *iface, unsigned int expected_reply_ char ethPacket[ETH_FRAME_LEN]; /* Wait for some kind of data to appear on the socket */ - if ((err = peekfd (iface, recv_sk, min_data_len, &recv_end)) != RET_DHCP_SUCCESS) + if ((int_err = peekfd (iface, recv_sk, min_data_len, &recv_end)) != RET_DHCP_SUCCESS) { - if (err == RET_DHCP_TIMEOUT) + if (int_err == RET_DHCP_TIMEOUT) break; goto out; } |