about summary refs log tree commit diff
path: root/sunrpc/svc_udp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sunrpc/svc_udp.c')
-rw-r--r--sunrpc/svc_udp.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sunrpc/svc_udp.c b/sunrpc/svc_udp.c
index 8ae18a9147..39ecbb0b50 100644
--- a/sunrpc/svc_udp.c
+++ b/sunrpc/svc_udp.c
@@ -108,7 +108,7 @@ svcudp_bufcreate (sock, sendsz, recvsz)
   SVCXPRT *xprt;
   struct svcudp_data *su;
   struct sockaddr_in addr;
-  int len = sizeof (struct sockaddr_in);
+  size_t len = sizeof (struct sockaddr_in);
 
   if (sock == RPC_ANYSOCK)
     {
@@ -188,11 +188,14 @@ svcudp_recv (xprt, msg)
   int rlen;
   char *reply;
   u_long replylen;
+  size_t len;
 
 again:
-  xprt->xp_addrlen = sizeof (struct sockaddr_in);
+  /* FIXME -- should xp_addrlen be a size_t?  */
+  len = sizeof(struct sockaddr_in);
   rlen = recvfrom (xprt->xp_sock, rpc_buffer (xprt), (int) su->su_iosz, 0,
-		   (struct sockaddr *) &(xprt->xp_raddr), &(xprt->xp_addrlen));
+		   (struct sockaddr *) &(xprt->xp_raddr), &len);
+  xprt->xp_addrlen = len;
   if (rlen == -1 && errno == EINTR)
     goto again;
   if (rlen < 16)		/* < 4 32-bit ints? */
@@ -207,7 +210,7 @@ again:
       if (cache_get (xprt, msg, &reply, &replylen))
 	{
 	  (void) sendto (xprt->xp_sock, reply, (int) replylen, 0,
-		     (struct sockaddr *) &xprt->xp_raddr, xprt->xp_addrlen);
+		         (struct sockaddr *) &xprt->xp_raddr, len);
 	  return TRUE;
 	}
     }