From 1b37baf6568e37d52601231c45e6394a3d0ff55b Mon Sep 17 00:00:00 2001
From: Yang Tse <yangsita@gmail.com>
Date: Mon, 21 Jul 2008 03:06:07 +0000
Subject: Use the sreadfrom() wrapper to replace recvfrom() in our code.

---
 lib/setup_once.h |  7 +++++++
 lib/tftp.c       | 14 +++++++-------
 2 files changed, 14 insertions(+), 7 deletions(-)

(limited to 'lib')

diff --git a/lib/setup_once.h b/lib/setup_once.h
index 0e2d8bc12..e96f6984a 100644
--- a/lib/setup_once.h
+++ b/lib/setup_once.h
@@ -229,6 +229,13 @@ struct timeval {
 #endif /* HAVE_RECVFROM */
 
 
+#ifdef RECVFROM_TYPE_ARG6_IS_VOID
+#  define RECVFROM_ARG6_T unsigned int
+#else
+#  define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6
+#endif
+
+
 /*
  * Uppercase macro versions of ANSI/ISO is*() functions/macros which
  * avoid negative number inputs with argument byte codes > 127.
diff --git a/lib/tftp.c b/lib/tftp.c
index ffd668c19..8ee947dfd 100644
--- a/lib/tftp.c
+++ b/lib/tftp.c
@@ -141,7 +141,7 @@ typedef struct tftp_state_data {
   struct Curl_sockaddr_storage   local_addr;
   struct Curl_sockaddr_storage   remote_addr;
   socklen_t       remote_addrlen;
-  int             rbytes;
+  ssize_t         rbytes;
   int             sbytes;
   tftp_packet_t   rpacket;
   tftp_packet_t   spacket;
@@ -420,7 +420,7 @@ static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event)
     }
 
     /* Check if completed (That is, a less than full packet is received) */
-    if(state->rbytes < (int)sizeof(state->spacket)){
+    if(state->rbytes < sizeof(state->spacket)){
       state->state = TFTP_STATE_FIN;
     }
     else {
@@ -717,7 +717,7 @@ static CURLcode tftp_do(struct connectdata *conn, bool *done)
   CURLcode              code;
   int                   rc;
   struct Curl_sockaddr_storage fromaddr;
-  socklen_t             fromlen;
+  RECVFROM_ARG6_T       fromlen;
   int                   check_time = 0;
   struct SingleRequest *k = &data->req;
 
@@ -764,10 +764,10 @@ static CURLcode tftp_do(struct connectdata *conn, bool *done)
     else {
 
       /* Receive the packet */
-      fromlen=sizeof(fromaddr);
-      state->rbytes = recvfrom(state->sockfd,
-                               (void *)&state->rpacket, sizeof(state->rpacket),
-                               0, (struct sockaddr *)&fromaddr, &fromlen);
+      fromlen = (RECVFROM_ARG6_T)sizeof(fromaddr);
+      state->rbytes = sreadfrom(state->sockfd,
+                                &state->rpacket, sizeof(state->rpacket),
+                                &fromaddr, &fromlen);
       if(state->remote_addrlen==0) {
         memcpy(&state->remote_addr, &fromaddr, fromlen);
         state->remote_addrlen = fromlen;
-- 
cgit v1.2.3