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

ruby-changes:10654

From: akr <ko1@a...>
Date: Tue, 10 Feb 2009 23:31:32 +0900 (JST)
Subject: [ruby-changes:10654] Ruby:r22213 (trunk): * ext/socket/basicsocket.c (bsock_getpeername): use struct

akr	2009-02-10 23:31:21 +0900 (Tue, 10 Feb 2009)

  New Revision: 22213

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

  Log:
    * ext/socket/basicsocket.c (bsock_getpeername): use struct
      sockaddr_storage.
      (bsock_local_address): ditto.
      (bsock_remote_address): ditto.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/basicsocket.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22212)
+++ ChangeLog	(revision 22213)
@@ -1,3 +1,10 @@
+Tue Feb 10 23:30:32 2009  Tanaka Akira  <akr@f...>
+
+	* ext/socket/basicsocket.c (bsock_getpeername): use struct
+	  sockaddr_storage.
+	  (bsock_local_address): ditto.
+	  (bsock_remote_address): ditto.
+
 Tue Feb 10 21:26:33 2009  Tanaka Akira  <akr@f...>
 
 	* ext/socket/lib/socket.rb (Socket.udp_server_sockets): new method.
Index: ext/socket/basicsocket.c
===================================================================
--- ext/socket/basicsocket.c	(revision 22212)
+++ ext/socket/basicsocket.c	(revision 22213)
@@ -351,14 +351,14 @@
 static VALUE
 bsock_getpeername(VALUE sock)
 {
-    char buf[1024];
+    struct sockaddr_storage buf;
     socklen_t len = sizeof buf;
     rb_io_t *fptr;
 
     GetOpenFile(sock, fptr);
-    if (getpeername(fptr->fd, (struct sockaddr*)buf, &len) < 0)
+    if (getpeername(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
 	rb_sys_fail("getpeername(2)");
-    return rb_str_new(buf, len);
+    return rb_str_new((char*)&buf, len);
 }
 
 /*
@@ -377,14 +377,14 @@
 static VALUE
 bsock_local_address(VALUE sock)
 {
-    char buf[1024];
+    struct sockaddr_storage buf;
     socklen_t len = sizeof buf;
     rb_io_t *fptr;
 
     GetOpenFile(sock, fptr);
-    if (getsockname(fptr->fd, (struct sockaddr*)buf, &len) < 0)
+    if (getsockname(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
 	rb_sys_fail("getsockname(2)");
-    return fd_socket_addrinfo(fptr->fd, (struct sockaddr *)buf, len);
+    return fd_socket_addrinfo(fptr->fd, (struct sockaddr *)&buf, len);
 }
 
 /*
@@ -405,14 +405,14 @@
 static VALUE
 bsock_remote_address(VALUE sock)
 {
-    char buf[1024];
+    struct sockaddr_storage buf;
     socklen_t len = sizeof buf;
     rb_io_t *fptr;
 
     GetOpenFile(sock, fptr);
-    if (getpeername(fptr->fd, (struct sockaddr*)buf, &len) < 0)
+    if (getpeername(fptr->fd, (struct sockaddr*)&buf, &len) < 0)
 	rb_sys_fail("getpeername(2)");
-    return fd_socket_addrinfo(fptr->fd, (struct sockaddr *)buf, len);
+    return fd_socket_addrinfo(fptr->fd, (struct sockaddr *)&buf, len);
 }
 
 /*

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

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