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/