summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2005-06-16 03:30:42 +0000
committerDan Williams <dcbw@redhat.com>2005-06-16 03:30:42 +0000
commit28730cb2a7b05ecef0c1fee559d0fc88246726b5 (patch)
tree95f8095bb65ee0e3ce79c03938dd44b2cc27d55d
parent6035df394afa15ad7d9577749263f3e89a327f16 (diff)
downloadNetworkManager-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--ChangeLog6
-rw-r--r--dhcpcd/client.c16
2 files changed, 14 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index ca00902a24..2a0e3e9a0d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}