[前][次][番号順一覧][スレッド一覧]

ruby-changes:10655

From: akr <ko1@a...>
Date: Tue, 10 Feb 2009 23:47:09 +0900 (JST)
Subject: [ruby-changes:10655] Ruby:r22214 (trunk): * ext/socket/init.c (struct recvfrom_arg): use struct

akr	2009-02-10 23:46:51 +0900 (Tue, 10 Feb 2009)

  New Revision: 22214

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22214

  Log:
    * ext/socket/init.c (struct recvfrom_arg): use struct
      sockaddr_storage.
      (recvfrom_blocking): follow struct recvfrom_arg change.
      (s_recvfrom): ditto.
      (s_recvfrom_nonblock): use struct sockaddr_storage.
    * ext/socket/socket.c (sock_accept): use struct sockaddr_storage.
      (sock_accept_nonblock): ditto.
      (sock_sysaccept): ditto.
    
    * ext/socket/ancdata.c (bsock_recvmsg_internal): use struct
      sockaddr_storage.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/ancdata.c
    trunk/ext/socket/init.c
    trunk/ext/socket/socket.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22213)
+++ ChangeLog	(revision 22214)
@@ -1,3 +1,18 @@
+Tue Feb 10 23:44:53 2009  Tanaka Akira  <akr@f...>
+
+	* ext/socket/init.c (struct recvfrom_arg): use struct
+	  sockaddr_storage.
+	  (recvfrom_blocking): follow struct recvfrom_arg change.
+	  (s_recvfrom): ditto.
+	  (s_recvfrom_nonblock): use struct sockaddr_storage.
+
+	* ext/socket/socket.c (sock_accept): use struct sockaddr_storage.
+	  (sock_accept_nonblock): ditto.
+	  (sock_sysaccept): ditto.
+
+	* ext/socket/ancdata.c (bsock_recvmsg_internal): use struct
+	  sockaddr_storage.
+
 Tue Feb 10 23:30:32 2009  Tanaka Akira  <akr@f...>
 
 	* ext/socket/basicsocket.c (bsock_getpeername): use struct
Index: ext/socket/init.c
===================================================================
--- ext/socket/init.c	(revision 22213)
+++ ext/socket/init.c	(revision 22214)
@@ -78,7 +78,7 @@
     int fd, flags;
     VALUE str;
     socklen_t alen;
-    char buf[1024];
+    struct sockaddr_storage buf;
 };
 
 static VALUE
@@ -86,7 +86,7 @@
 {
     struct recvfrom_arg *arg = data;
     return (VALUE)recvfrom(arg->fd, RSTRING_PTR(arg->str), RSTRING_LEN(arg->str),
-			   arg->flags, (struct sockaddr*)arg->buf, &arg->alen);
+			   arg->flags, (struct sockaddr*)&arg->buf, &arg->alen);
 }
 
 VALUE
@@ -139,16 +139,16 @@
 	}
 #endif
 	if (arg.alen && arg.alen != sizeof(arg.buf)) /* OSX doesn't return a from result for connection-oriented sockets */
-	    return rb_assoc_new(str, ipaddr((struct sockaddr*)arg.buf, fptr->mode & FMODE_NOREVLOOKUP));
+	    return rb_assoc_new(str, ipaddr((struct sockaddr*)&arg.buf, fptr->mode & FMODE_NOREVLOOKUP));
 	else
 	    return rb_assoc_new(str, Qnil);
 
 #ifdef HAVE_SYS_UN_H
       case RECV_UNIX:
-        return rb_assoc_new(str, unixaddr((struct sockaddr_un*)arg.buf, arg.alen));
+        return rb_assoc_new(str, unixaddr((struct sockaddr_un*)&arg.buf, arg.alen));
 #endif
       case RECV_SOCKET:
-	return rb_assoc_new(str, io_socket_addrinfo(sock, (struct sockaddr*)arg.buf, arg.alen));
+	return rb_assoc_new(str, io_socket_addrinfo(sock, (struct sockaddr*)&arg.buf, arg.alen));
       default:
 	rb_bug("s_recvfrom called with bad value");
     }
@@ -159,7 +159,7 @@
 {
     rb_io_t *fptr;
     VALUE str;
-    char buf[1024];
+    struct sockaddr_storage buf;
     socklen_t alen = sizeof buf;
     VALUE len, flg;
     long buflen;
@@ -189,7 +189,7 @@
 
     rb_io_check_closed(fptr);
     rb_io_set_nonblock(fptr);
-    slen = recvfrom(fd, RSTRING_PTR(str), buflen, flags, (struct sockaddr*)buf, &alen);
+    slen = recvfrom(fd, RSTRING_PTR(str), buflen, flags, (struct sockaddr*)&buf, &alen);
 
     if (slen < 0) {
 	rb_sys_fail("recvfrom(2)");
@@ -204,11 +204,11 @@
 
       case RECV_IP:
         if (alen && alen != sizeof(buf)) /* connection-oriented socket may not return a from result */
-            addr = ipaddr((struct sockaddr*)buf, fptr->mode & FMODE_NOREVLOOKUP);
+            addr = ipaddr((struct sockaddr*)&buf, fptr->mode & FMODE_NOREVLOOKUP);
         break;
 
       case RECV_SOCKET:
-        addr = io_socket_addrinfo(sock, (struct sockaddr*)buf, alen);
+        addr = io_socket_addrinfo(sock, (struct sockaddr*)&buf, alen);
         break;
 
       default:
Index: ext/socket/socket.c
===================================================================
--- ext/socket/socket.c	(revision 22213)
+++ ext/socket/socket.c	(revision 22214)
@@ -688,13 +688,13 @@
 {
     rb_io_t *fptr;
     VALUE sock2;
-    char buf[1024];
+    struct sockaddr_storage buf;
     socklen_t len = sizeof buf;
 
     GetOpenFile(sock, fptr);
-    sock2 = s_accept(rb_cSocket,fptr->fd,(struct sockaddr*)buf,&len);
+    sock2 = s_accept(rb_cSocket,fptr->fd,(struct sockaddr*)&buf,&len);
 
-    return rb_assoc_new(sock2, io_socket_addrinfo(sock2, (struct sockaddr*)buf, len));
+    return rb_assoc_new(sock2, io_socket_addrinfo(sock2, (struct sockaddr*)&buf, len));
 }
 
 /*
@@ -750,12 +750,12 @@
 {
     rb_io_t *fptr;
     VALUE sock2;
-    char buf[1024];
+    struct sockaddr_storage buf;
     socklen_t len = sizeof buf;
 
     GetOpenFile(sock, fptr);
-    sock2 = s_accept_nonblock(rb_cSocket, fptr, (struct sockaddr *)buf, &len);
-    return rb_assoc_new(sock2, io_socket_addrinfo(sock2, (struct sockaddr*)buf, len));
+    sock2 = s_accept_nonblock(rb_cSocket, fptr, (struct sockaddr *)&buf, &len);
+    return rb_assoc_new(sock2, io_socket_addrinfo(sock2, (struct sockaddr*)&buf, len));
 }
 
 /*
@@ -802,13 +802,13 @@
 {
     rb_io_t *fptr;
     VALUE sock2;
-    char buf[1024];
+    struct sockaddr_storage buf;
     socklen_t len = sizeof buf;
 
     GetOpenFile(sock, fptr);
-    sock2 = s_accept(0,fptr->fd,(struct sockaddr*)buf,&len);
+    sock2 = s_accept(0,fptr->fd,(struct sockaddr*)&buf,&len);
 
-    return rb_assoc_new(sock2, io_socket_addrinfo(sock2, (struct sockaddr*)buf, len));
+    return rb_assoc_new(sock2, io_socket_addrinfo(sock2, (struct sockaddr*)&buf, len));
 }
 
 #ifdef HAVE_GETHOSTNAME
Index: ext/socket/ancdata.c
===================================================================
--- ext/socket/ancdata.c	(revision 22213)
+++ ext/socket/ancdata.c	(revision 22214)
@@ -952,7 +952,7 @@
 #if defined(HAVE_ST_MSG_CONTROL)
     struct cmsghdr *cmh;
 #endif
-    char namebuf[1024];
+    struct sockaddr_storage namebuf;
     char datbuf0[4096], *datbuf;
     char ctlbuf0[4096], *ctlbuf;
     VALUE dat_str = Qnil;
@@ -1014,8 +1014,8 @@
 
     memset(&mh, 0, sizeof(mh));
 
-    memset(namebuf, 0, sizeof(namebuf));
-    mh.msg_name = namebuf;
+    memset(&namebuf, 0, sizeof(namebuf));
+    mh.msg_name = (struct sockaddr *)&namebuf;
     mh.msg_namelen = sizeof(namebuf);
 
     mh.msg_iov = &iov;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]