mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* ext/socket: fixed types.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									790d6071c6
								
							
						
					
					
						commit
						4822d20cc5
					
				
					 11 changed files with 86 additions and 84 deletions
				
			
		|  | @ -606,7 +606,7 @@ ancillary_ipv6_pktinfo(VALUE self) | |||
|     VALUE v_addr; | ||||
| 
 | ||||
|     extract_ipv6_pktinfo(self, &pktinfo, &sa); | ||||
|     v_addr = rsock_addrinfo_new((struct sockaddr *)&sa, sizeof(sa), PF_INET6, 0, 0, Qnil, Qnil); | ||||
|     v_addr = rsock_addrinfo_new((struct sockaddr *)&sa, (socklen_t)sizeof(sa), PF_INET6, 0, 0, Qnil, Qnil); | ||||
|     return rb_ary_new3(2, v_addr, UINT2NUM(pktinfo.ipi6_ifindex)); | ||||
| } | ||||
| #else | ||||
|  | @ -634,7 +634,7 @@ ancillary_ipv6_pktinfo_addr(VALUE self) | |||
|     struct in6_pktinfo pktinfo; | ||||
|     struct sockaddr_in6 sa; | ||||
|     extract_ipv6_pktinfo(self, &pktinfo, &sa); | ||||
|     return rsock_addrinfo_new((struct sockaddr *)&sa, sizeof(sa), PF_INET6, 0, 0, Qnil, Qnil); | ||||
|     return rsock_addrinfo_new((struct sockaddr *)&sa, (socklen_t)sizeof(sa), PF_INET6, 0, 0, Qnil, Qnil); | ||||
| } | ||||
| #else | ||||
| #define ancillary_ipv6_pktinfo_addr rb_f_notimplement | ||||
|  | @ -781,7 +781,7 @@ anc_inspect_ip_recvdstaddr(int level, int type, VALUE data, VALUE ret) | |||
|         struct in_addr addr; | ||||
|         char addrbuf[INET_ADDRSTRLEN]; | ||||
|         memcpy(&addr, RSTRING_PTR(data), sizeof(addr)); | ||||
|         if (inet_ntop(AF_INET, &addr, addrbuf, sizeof(addrbuf)) == NULL) | ||||
|         if (inet_ntop(AF_INET, &addr, addrbuf, (socklen_t)sizeof(addrbuf)) == NULL) | ||||
|             rb_str_cat2(ret, " invalid-address"); | ||||
|         else | ||||
|             rb_str_catf(ret, " %s", addrbuf); | ||||
|  | @ -834,7 +834,7 @@ anc_inspect_ipv6_pktinfo(int level, int type, VALUE data, VALUE ret) | |||
|         char addrbuf[INET6_ADDRSTRLEN], ifbuf[IFNAMSIZ]; | ||||
|         memcpy(&addr, &pktinfo->ipi6_addr, sizeof(addr)); | ||||
|         memcpy(&ifindex, &pktinfo->ipi6_ifindex, sizeof(ifindex)); | ||||
|         if (inet_ntop(AF_INET6, &addr, addrbuf, sizeof(addrbuf)) == NULL) | ||||
|         if (inet_ntop(AF_INET6, &addr, addrbuf, (socklen_t)sizeof(addrbuf)) == NULL) | ||||
|             rb_str_cat2(ret, " invalid-address"); | ||||
|         else | ||||
|             rb_str_catf(ret, " %s", addrbuf); | ||||
|  | @ -1163,7 +1163,7 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) | |||
|     if (controls_num) { | ||||
| #if defined(HAVE_ST_MSG_CONTROL) | ||||
| 	int i; | ||||
| 	int last_pad = 0; | ||||
| 	size_t last_pad = 0; | ||||
|         int last_level = 0; | ||||
|         int last_type = 0; | ||||
|         controls_str = rb_str_tmp_new(0); | ||||
|  | @ -1201,7 +1201,7 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) | |||
|             memset((char *)&cmh, 0, sizeof(cmh)); | ||||
|             cmh.cmsg_level = level; | ||||
|             cmh.cmsg_type = type; | ||||
|             cmh.cmsg_len = CMSG_LEN(RSTRING_LEN(cdata)); | ||||
|             cmh.cmsg_len = (socklen_t)CMSG_LEN(RSTRING_LEN(cdata)); | ||||
|             MEMCPY(cmsg, &cmh, char, sizeof(cmh)); | ||||
|             MEMCPY(cmsg+((char*)CMSG_DATA(&cmh)-(char*)&cmh), RSTRING_PTR(cdata), char, RSTRING_LEN(cdata)); | ||||
|             last_level = cmh.cmsg_level; | ||||
|  | @ -1254,7 +1254,7 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) | |||
|     memset(&mh, 0, sizeof(mh)); | ||||
|     if (!NIL_P(dest_sockaddr)) { | ||||
|         mh.msg_name = RSTRING_PTR(dest_sockaddr); | ||||
|         mh.msg_namelen = RSTRING_LEN(dest_sockaddr); | ||||
|         mh.msg_namelen = RSTRING_LENINT(dest_sockaddr); | ||||
|     } | ||||
|     mh.msg_iovlen = 1; | ||||
|     mh.msg_iov = &iov; | ||||
|  | @ -1263,7 +1263,7 @@ bsock_sendmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) | |||
| #if defined(HAVE_ST_MSG_CONTROL) | ||||
|     if (controls_str) { | ||||
|         mh.msg_control = RSTRING_PTR(controls_str); | ||||
|         mh.msg_controllen = RSTRING_LEN(controls_str); | ||||
|         mh.msg_controllen = RSTRING_LENINT(controls_str); | ||||
|     } | ||||
|     else { | ||||
|         mh.msg_control = NULL; | ||||
|  | @ -1503,7 +1503,8 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) | |||
| 
 | ||||
| #if !defined(HAVE_ST_MSG_CONTROL) | ||||
|     if (grow_buffer) { | ||||
| 	int socktype, optlen = sizeof(socktype); | ||||
| 	int socktype; | ||||
| 	socklen_t optlen = (socklen_t)sizeof(socktype); | ||||
|         if (getsockopt(fptr->fd, SOL_SOCKET, SO_TYPE, (void*)&socktype, &optlen) == -1) { | ||||
| 	    rb_sys_fail("getsockopt(SO_TYPE)"); | ||||
| 	} | ||||
|  | @ -1539,7 +1540,7 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) | |||
| 
 | ||||
|     memset(&namebuf, 0, sizeof(namebuf)); | ||||
|     mh.msg_name = (struct sockaddr *)&namebuf; | ||||
|     mh.msg_namelen = sizeof(namebuf); | ||||
|     mh.msg_namelen = (socklen_t)sizeof(namebuf); | ||||
| 
 | ||||
|     mh.msg_iov = &iov; | ||||
|     mh.msg_iovlen = 1; | ||||
|  | @ -1548,7 +1549,7 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) | |||
| 
 | ||||
| #if defined(HAVE_ST_MSG_CONTROL) | ||||
|     mh.msg_control = ctlbuf; | ||||
|     mh.msg_controllen = maxctllen; | ||||
|     mh.msg_controllen = (socklen_t)maxctllen; | ||||
| #endif | ||||
| 
 | ||||
|     if (grow_buffer) | ||||
|  | @ -1614,7 +1615,7 @@ bsock_recvmsg_internal(int argc, VALUE *argv, VALUE sock, int nonblock) | |||
| #undef BIG_ENOUGH_SPACE | ||||
| 	} | ||||
| #else | ||||
| 	if (NIL_P(vmaxdatlen) && ss != -1 && ss == iov.iov_len) { | ||||
| 	if (NIL_P(vmaxdatlen) && ss != -1 && ss == (ssize_t)iov.iov_len) { | ||||
|             if (SIZE_MAX/2 < maxdatlen) | ||||
|                 rb_raise(rb_eArgError, "max data length too big"); | ||||
| 	    maxdatlen *= 2; | ||||
|  |  | |||
|  | @ -238,12 +238,12 @@ bsock_setsockopt(int argc, VALUE *argv, VALUE sock) | |||
|       case T_TRUE: | ||||
| 	i = 1; | ||||
|       numval: | ||||
| 	v = (char*)&i; vlen = sizeof(i); | ||||
| 	v = (char*)&i; vlen = (int)sizeof(i); | ||||
| 	break; | ||||
|       default: | ||||
| 	StringValue(val); | ||||
| 	v = RSTRING_PTR(val); | ||||
| 	vlen = RSTRING_LEN(val); | ||||
| 	vlen = RSTRING_LENINT(val); | ||||
| 	break; | ||||
|     } | ||||
| 
 | ||||
|  | @ -357,7 +357,7 @@ static VALUE | |||
| bsock_getsockname(VALUE sock) | ||||
| { | ||||
|     struct sockaddr_storage buf; | ||||
|     socklen_t len = sizeof buf; | ||||
|     socklen_t len = (socklen_t)sizeof buf; | ||||
|     rb_io_t *fptr; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|  | @ -386,7 +386,7 @@ static VALUE | |||
| bsock_getpeername(VALUE sock) | ||||
| { | ||||
|     struct sockaddr_storage buf; | ||||
|     socklen_t len = sizeof buf; | ||||
|     socklen_t len = (socklen_t)sizeof buf; | ||||
|     rb_io_t *fptr; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|  | @ -474,7 +474,7 @@ static VALUE | |||
| bsock_local_address(VALUE sock) | ||||
| { | ||||
|     struct sockaddr_storage buf; | ||||
|     socklen_t len = sizeof buf; | ||||
|     socklen_t len = (socklen_t)sizeof buf; | ||||
|     rb_io_t *fptr; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|  | @ -506,7 +506,7 @@ static VALUE | |||
| bsock_remote_address(VALUE sock) | ||||
| { | ||||
|     struct sockaddr_storage buf; | ||||
|     socklen_t len = sizeof buf; | ||||
|     socklen_t len = (socklen_t)sizeof buf; | ||||
|     rb_io_t *fptr; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|  | @ -549,7 +549,7 @@ rsock_bsock_send(int argc, VALUE *argv, VALUE sock) | |||
| 	SockAddrStringValue(to); | ||||
| 	to = rb_str_new4(to); | ||||
| 	arg.to = (struct sockaddr *)RSTRING_PTR(to); | ||||
| 	arg.tolen = RSTRING_LEN(to); | ||||
| 	arg.tolen = (socklen_t)RSTRING_LENINT(to); | ||||
| 	func = rsock_sendto_blocking; | ||||
|     } | ||||
|     else { | ||||
|  |  | |||
|  | @ -15,7 +15,7 @@ static VALUE rb_mSockConst; | |||
| #include "constdefs.c" | ||||
| 
 | ||||
| static int | ||||
| constant_arg(VALUE arg, int (*str_to_int)(const char*, int, int*), const char *errmsg) | ||||
| constant_arg(VALUE arg, int (*str_to_int)(const char*, long, int*), const char *errmsg) | ||||
| { | ||||
|     VALUE tmp; | ||||
|     char *ptr; | ||||
|  |  | |||
|  | @ -121,7 +121,7 @@ rsock_s_recvfrom(VALUE sock, int argc, VALUE *argv, enum sock_recv_type from) | |||
| 	rb_raise(rb_eIOError, "recv for buffered IO"); | ||||
|     } | ||||
|     arg.fd = fptr->fd; | ||||
|     arg.alen = sizeof(arg.buf); | ||||
|     arg.alen = (socklen_t)sizeof(arg.buf); | ||||
| 
 | ||||
|     arg.str = str = rb_tainted_str_new(0, buflen); | ||||
|     klass = RBASIC(str)->klass; | ||||
|  | @ -174,7 +174,7 @@ rsock_s_recvfrom_nonblock(VALUE sock, int argc, VALUE *argv, enum sock_recv_type | |||
|     rb_io_t *fptr; | ||||
|     VALUE str; | ||||
|     struct sockaddr_storage buf; | ||||
|     socklen_t alen = sizeof buf; | ||||
|     socklen_t alen = (socklen_t)sizeof buf; | ||||
|     VALUE len, flg; | ||||
|     long buflen; | ||||
|     long slen; | ||||
|  | @ -272,7 +272,7 @@ wait_connectable0(int fd, rb_fdset_t *fds_w, rb_fdset_t *fds_e) | |||
| 	    return 0; | ||||
| 	} | ||||
| 	else if (rb_fd_isset(fd, fds_e)) { | ||||
| 	    sockerrlen = sizeof(sockerr); | ||||
| 	    sockerrlen = (socklen_t)sizeof(sockerr); | ||||
| 	    if (getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&sockerr, | ||||
| 			   &sockerrlen) == 0) { | ||||
| 		if (sockerr == 0) | ||||
|  | @ -388,7 +388,7 @@ rsock_connect(int fd, const struct sockaddr *sockaddr, int len, int socks) | |||
| 	      case EINPROGRESS: | ||||
| #endif | ||||
| #if WAIT_IN_PROGRESS > 0 | ||||
| 		sockerrlen = sizeof(sockerr); | ||||
| 		sockerrlen = (socklen_t)sizeof(sockerr); | ||||
| 		status = getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&sockerr, &sockerrlen); | ||||
| 		if (status) break; | ||||
| 		if (sockerr) { | ||||
|  | @ -418,7 +418,7 @@ rsock_connect(int fd, const struct sockaddr *sockaddr, int len, int socks) | |||
| 		     * some platforms, need to check true error | ||||
| 		     * status. | ||||
| 		     */ | ||||
| 		    sockerrlen = sizeof(sockerr); | ||||
| 		    sockerrlen = (socklen_t)sizeof(sockerr); | ||||
| 		    status = getsockopt(fd, SOL_SOCKET, SO_ERROR, (void *)&sockerr, &sockerrlen); | ||||
| 		    if (!status && !sockerr) { | ||||
| 			struct timeval tv = {0, 100000}; | ||||
|  | @ -515,7 +515,7 @@ rsock_s_accept(VALUE klass, int fd, struct sockaddr *sockaddr, socklen_t *len) | |||
|     arg.len = len; | ||||
|   retry: | ||||
|     rb_thread_wait_fd(fd); | ||||
|     fd2 = BLOCKING_REGION(accept_blocking, &arg); | ||||
|     fd2 = (int)BLOCKING_REGION(accept_blocking, &arg); | ||||
|     if (fd2 < 0) { | ||||
| 	switch (errno) { | ||||
| 	  case EMFILE: | ||||
|  | @ -539,7 +539,7 @@ int | |||
| rsock_getfamily(int sockfd) | ||||
| { | ||||
|     struct sockaddr_storage ss; | ||||
|     socklen_t sslen = sizeof(ss); | ||||
|     socklen_t sslen = (socklen_t)sizeof(ss); | ||||
| 
 | ||||
|     ss.ss_family = AF_UNSPEC; | ||||
|     if (getsockname(sockfd, (struct sockaddr*)&ss, &sslen) < 0) | ||||
|  |  | |||
|  | @ -73,7 +73,7 @@ init_inetsock_internal(struct inetsock_arg *arg) | |||
| #if !defined(_WIN32) && !defined(__CYGWIN__) | ||||
| 	    status = 1; | ||||
| 	    setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, | ||||
| 		       (char*)&status, sizeof(status)); | ||||
| 		       (char*)&status, (socklen_t)sizeof(status)); | ||||
| #endif | ||||
| 	    status = bind(fd, res->ai_addr, res->ai_addrlen); | ||||
| 	    syscall = "bind(2)"; | ||||
|  | @ -185,7 +185,7 @@ ip_addr(int argc, VALUE *argv, VALUE sock) | |||
| { | ||||
|     rb_io_t *fptr; | ||||
|     struct sockaddr_storage addr; | ||||
|     socklen_t len = sizeof addr; | ||||
|     socklen_t len = (socklen_t)sizeof addr; | ||||
|     int norevlookup; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|  | @ -226,7 +226,7 @@ ip_peeraddr(int argc, VALUE *argv, VALUE sock) | |||
| { | ||||
|     rb_io_t *fptr; | ||||
|     struct sockaddr_storage addr; | ||||
|     socklen_t len = sizeof addr; | ||||
|     socklen_t len = (socklen_t)sizeof addr; | ||||
|     int norevlookup; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|  |  | |||
|  | @ -143,16 +143,16 @@ end | |||
| ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int_decl(funcname, pat, prefix_optional, guard=nil)") | ||||
| %if guard | ||||
| #ifdef <%=guard%> | ||||
| int <%=funcname%>(const char *str, int len, int *valp); | ||||
| int <%=funcname%>(const char *str, long len, int *valp); | ||||
| #endif | ||||
| %else | ||||
| int <%=funcname%>(const char *str, int len, int *valp); | ||||
| int <%=funcname%>(const char *str, long len, int *valp); | ||||
| %end | ||||
| EOS | ||||
| 
 | ||||
| ERB.new(<<'EOS', nil, '%').def_method(Object, "gen_name_to_int_func_in_guard(funcname, pat, prefix_optional, guard=nil)") | ||||
| int | ||||
| <%=funcname%>(const char *str, int len, int *valp) | ||||
| <%=funcname%>(const char *str, long len, int *valp) | ||||
| { | ||||
|     switch (len) { | ||||
| %     each_names_with_len(pat, prefix_optional) {|pairs, len| | ||||
|  |  | |||
|  | @ -129,7 +129,7 @@ rb_getaddrinfo(const char *node, const char *service, | |||
|     arg.service = service; | ||||
|     arg.hints = hints; | ||||
|     arg.res = res; | ||||
|     ret = BLOCKING_REGION(nogvl_getaddrinfo, &arg); | ||||
|     ret = (int)BLOCKING_REGION(nogvl_getaddrinfo, &arg); | ||||
|     return ret; | ||||
| #endif | ||||
| } | ||||
|  | @ -151,8 +151,8 @@ nogvl_getnameinfo(void *arg) | |||
| { | ||||
|     struct getnameinfo_arg *ptr = arg; | ||||
|     return getnameinfo(ptr->sa, ptr->salen, | ||||
|                        ptr->host, ptr->hostlen, | ||||
|                        ptr->serv, ptr->servlen, | ||||
|                        ptr->host, (socklen_t)ptr->hostlen, | ||||
|                        ptr->serv, (socklen_t)ptr->servlen, | ||||
|                        ptr->flags); | ||||
| } | ||||
| #endif | ||||
|  | @ -174,7 +174,7 @@ rb_getnameinfo(const struct sockaddr *sa, socklen_t salen, | |||
|     arg.serv = serv; | ||||
|     arg.servlen = servlen; | ||||
|     arg.flags = flags; | ||||
|     ret = BLOCKING_REGION(nogvl_getnameinfo, &arg); | ||||
|     ret = (int)BLOCKING_REGION(nogvl_getnameinfo, &arg); | ||||
|     return ret; | ||||
| #endif | ||||
| } | ||||
|  | @ -200,7 +200,7 @@ rsock_make_ipaddr(struct sockaddr *addr) | |||
| } | ||||
| 
 | ||||
| static void | ||||
| make_inetaddr(long host, char *buf, size_t len) | ||||
| make_inetaddr(unsigned int host, char *buf, size_t len) | ||||
| { | ||||
|     struct sockaddr_in sin; | ||||
| 
 | ||||
|  | @ -233,7 +233,7 @@ host_str(VALUE host, char *hbuf, size_t len, int *flags_ptr) | |||
|         return NULL; | ||||
|     } | ||||
|     else if (rb_obj_is_kind_of(host, rb_cInteger)) { | ||||
|         unsigned long i = NUM2ULONG(host); | ||||
|         unsigned int i = NUM2UINT(host); | ||||
| 
 | ||||
|         make_inetaddr(htonl(i), hbuf, len); | ||||
|         if (flags_ptr) *flags_ptr |= AI_NUMERICHOST; | ||||
|  | @ -481,7 +481,7 @@ typedef struct { | |||
|     int pfamily; | ||||
|     int socktype; | ||||
|     int protocol; | ||||
|     size_t sockaddr_len; | ||||
|     socklen_t sockaddr_len; | ||||
|     struct sockaddr_storage addr; | ||||
| } rb_addrinfo_t; | ||||
| 
 | ||||
|  | @ -544,7 +544,7 @@ alloc_addrinfo() | |||
| } | ||||
| 
 | ||||
| static void | ||||
| init_addrinfo(rb_addrinfo_t *rai, struct sockaddr *sa, size_t len, | ||||
| init_addrinfo(rb_addrinfo_t *rai, struct sockaddr *sa, socklen_t len, | ||||
|               int pfamily, int socktype, int protocol, | ||||
|               VALUE canonname, VALUE inspectname) | ||||
| { | ||||
|  | @ -744,7 +744,8 @@ init_unix_addrinfo(rb_addrinfo_t *rai, VALUE path, int socktype) | |||
|     un.sun_family = AF_UNIX; | ||||
|     memcpy((void*)&un.sun_path, RSTRING_PTR(path), RSTRING_LEN(path)); | ||||
| 
 | ||||
|     init_addrinfo(rai, (struct sockaddr *)&un, sizeof(un), PF_UNIX, socktype, 0, Qnil, Qnil); | ||||
|     init_addrinfo(rai, (struct sockaddr *)&un, (socklen_t)sizeof(un), | ||||
| 		  PF_UNIX, socktype, 0, Qnil, Qnil); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
|  | @ -801,7 +802,7 @@ addrinfo_initialize(int argc, VALUE *argv, VALUE self) | |||
|     VALUE sockaddr_arg, sockaddr_ary, pfamily, socktype, protocol; | ||||
|     int i_pfamily, i_socktype, i_protocol; | ||||
|     struct sockaddr *sockaddr_ptr; | ||||
|     size_t sockaddr_len; | ||||
|     socklen_t sockaddr_len; | ||||
|     VALUE canonname = Qnil, inspectname = Qnil; | ||||
| 
 | ||||
|     if (check_addrinfo(self)) | ||||
|  | @ -865,7 +866,7 @@ addrinfo_initialize(int argc, VALUE *argv, VALUE self) | |||
|     else { | ||||
|         StringValue(sockaddr_arg); | ||||
|         sockaddr_ptr = (struct sockaddr *)RSTRING_PTR(sockaddr_arg); | ||||
|         sockaddr_len = RSTRING_LEN(sockaddr_arg); | ||||
|         sockaddr_len = RSTRING_LENINT(sockaddr_arg); | ||||
|         init_addrinfo(rai, sockaddr_ptr, sockaddr_len, | ||||
|                       i_pfamily, i_socktype, i_protocol, | ||||
|                       canonname, inspectname); | ||||
|  | @ -941,7 +942,7 @@ inspect_sockaddr(VALUE addrinfo, VALUE ret) | |||
|                  * draft-ietf-ipv6-scope-api-00.txt: Scoped Address Extensions to the IPv6 Basic Socket API | ||||
|                  */ | ||||
|                 error = getnameinfo((struct sockaddr *)&rai->addr, rai->sockaddr_len, | ||||
|                                     hbuf, sizeof(hbuf), NULL, 0, | ||||
|                                     hbuf, (socklen_t)sizeof(hbuf), NULL, 0, | ||||
|                                     NI_NUMERICHOST|NI_NUMERICSERV); | ||||
|                 if (error) { | ||||
|                     rsock_raise_socket_error("getnameinfo", error); | ||||
|  | @ -1182,7 +1183,7 @@ addrinfo_mdump(VALUE self) | |||
|         char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV]; | ||||
|         int error; | ||||
|         error = getnameinfo((struct sockaddr *)&rai->addr, rai->sockaddr_len, | ||||
|                             hbuf, sizeof(hbuf), pbuf, sizeof(pbuf), | ||||
|                             hbuf, (socklen_t)sizeof(hbuf), pbuf, (socklen_t)sizeof(pbuf), | ||||
|                             NI_NUMERICHOST|NI_NUMERICSERV); | ||||
|         if (error) { | ||||
|             rsock_raise_socket_error("getnameinfo", error); | ||||
|  | @ -1203,7 +1204,7 @@ addrinfo_mload(VALUE self, VALUE ary) | |||
|     VALUE canonname, inspectname; | ||||
|     int afamily, pfamily, socktype, protocol; | ||||
|     struct sockaddr_storage ss; | ||||
|     size_t len; | ||||
|     socklen_t len; | ||||
|     rb_addrinfo_t *rai; | ||||
| 
 | ||||
|     if (check_addrinfo(self)) | ||||
|  | @ -1273,7 +1274,7 @@ addrinfo_mload(VALUE self, VALUE ary) | |||
|         if (sizeof(uaddr.sun_path) <= (size_t)RSTRING_LEN(v)) | ||||
|             rb_raise(rb_eSocket, "too long AF_UNIX path"); | ||||
|         memcpy(uaddr.sun_path, RSTRING_PTR(v), RSTRING_LEN(v)); | ||||
|         len = sizeof(uaddr); | ||||
|         len = (socklen_t)sizeof(uaddr); | ||||
|         memcpy(&ss, &uaddr, len); | ||||
|         break; | ||||
|       } | ||||
|  | @ -1526,7 +1527,7 @@ addrinfo_getnameinfo(int argc, VALUE *argv, VALUE self) | |||
|         flags |= NI_DGRAM; | ||||
| 
 | ||||
|     error = getnameinfo((struct sockaddr *)&rai->addr, rai->sockaddr_len, | ||||
|                         hbuf, sizeof(hbuf), pbuf, sizeof(pbuf), | ||||
|                         hbuf, (socklen_t)sizeof(hbuf), pbuf, (socklen_t)sizeof(pbuf), | ||||
|                         flags); | ||||
|     if (error) { | ||||
|         rsock_raise_socket_error("getnameinfo", error); | ||||
|  | @ -1867,7 +1868,7 @@ addrinfo_ipv6_to_ipv4(VALUE self) | |||
|         sin4.sin_family = AF_INET; | ||||
|         SET_SIN_LEN(&sin4, sizeof(sin4)); | ||||
|         memcpy(&sin4.sin_addr, (char*)addr + sizeof(*addr) - sizeof(sin4.sin_addr), sizeof(sin4.sin_addr)); | ||||
|         return rsock_addrinfo_new((struct sockaddr *)&sin4, sizeof(sin4), | ||||
|         return rsock_addrinfo_new((struct sockaddr *)&sin4, (socklen_t)sizeof(sin4), | ||||
|                                   PF_INET, rai->socktype, rai->protocol, | ||||
|                                   rai->canonname, rai->inspectname); | ||||
|     } | ||||
|  | @ -2078,7 +2079,7 @@ rsock_fd_socket_addrinfo(int fd, struct sockaddr *addr, socklen_t len) | |||
|     int family; | ||||
|     int socktype; | ||||
|     int ret; | ||||
|     socklen_t optlen = sizeof(socktype); | ||||
|     socklen_t optlen = (socklen_t)sizeof(socktype); | ||||
| 
 | ||||
|     /* assumes protocol family and address family are identical */ | ||||
|     family = get_afamily(addr, len); | ||||
|  |  | |||
|  | @ -253,7 +253,7 @@ sock_connect(VALUE sock, VALUE addr) | |||
|     addr = rb_str_new4(addr); | ||||
|     GetOpenFile(sock, fptr); | ||||
|     fd = fptr->fd; | ||||
|     n = rsock_connect(fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LEN(addr), 0); | ||||
|     n = rsock_connect(fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LENINT(addr), 0); | ||||
|     if (n < 0) { | ||||
| 	rb_sys_fail("connect(2)"); | ||||
|     } | ||||
|  | @ -313,7 +313,7 @@ sock_connect_nonblock(VALUE sock, VALUE addr) | |||
|     addr = rb_str_new4(addr); | ||||
|     GetOpenFile(sock, fptr); | ||||
|     rb_io_set_nonblock(fptr); | ||||
|     n = connect(fptr->fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LEN(addr)); | ||||
|     n = connect(fptr->fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LENINT(addr)); | ||||
|     if (n < 0) { | ||||
|         if (errno == EINPROGRESS) | ||||
|             rb_mod_sys_fail(rb_mWaitWritable, "connect(2) would block"); | ||||
|  | @ -416,7 +416,7 @@ sock_bind(VALUE sock, VALUE addr) | |||
| 
 | ||||
|     SockAddrStringValue(addr); | ||||
|     GetOpenFile(sock, fptr); | ||||
|     if (bind(fptr->fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LEN(addr)) < 0) | ||||
|     if (bind(fptr->fd, (struct sockaddr*)RSTRING_PTR(addr), RSTRING_LENINT(addr)) < 0) | ||||
| 	rb_sys_fail("bind(2)"); | ||||
| 
 | ||||
|     return INT2FIX(0); | ||||
|  | @ -706,7 +706,7 @@ sock_accept(VALUE sock) | |||
|     rb_io_t *fptr; | ||||
|     VALUE sock2; | ||||
|     struct sockaddr_storage buf; | ||||
|     socklen_t len = sizeof buf; | ||||
|     socklen_t len = (socklen_t)sizeof buf; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     sock2 = rsock_s_accept(rb_cSocket,fptr->fd,(struct sockaddr*)&buf,&len); | ||||
|  | @ -771,7 +771,7 @@ sock_accept_nonblock(VALUE sock) | |||
|     rb_io_t *fptr; | ||||
|     VALUE sock2; | ||||
|     struct sockaddr_storage buf; | ||||
|     socklen_t len = sizeof buf; | ||||
|     socklen_t len = (socklen_t)sizeof buf; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     sock2 = rsock_s_accept_nonblock(rb_cSocket, fptr, (struct sockaddr *)&buf, &len); | ||||
|  | @ -822,7 +822,7 @@ sock_sysaccept(VALUE sock) | |||
|     rb_io_t *fptr; | ||||
|     VALUE sock2; | ||||
|     struct sockaddr_storage buf; | ||||
|     socklen_t len = sizeof buf; | ||||
|     socklen_t len = (socklen_t)sizeof buf; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     sock2 = rsock_s_accept(0,fptr->fd,(struct sockaddr*)&buf,&len); | ||||
|  | @ -967,7 +967,7 @@ sock_s_gethostbyaddr(int argc, VALUE *argv) | |||
| 	t = AF_INET6; | ||||
|     } | ||||
| #endif | ||||
|     h = gethostbyaddr(RSTRING_PTR(addr), RSTRING_LEN(addr), t); | ||||
|     h = gethostbyaddr(RSTRING_PTR(addr), RSTRING_LENINT(addr), t); | ||||
|     if (h == NULL) { | ||||
| #ifdef HAVE_HSTRERROR | ||||
| 	extern int h_errno; | ||||
|  | @ -1015,7 +1015,7 @@ sock_s_getservbyname(int argc, VALUE *argv) | |||
| { | ||||
|     VALUE service, proto; | ||||
|     struct servent *sp; | ||||
|     int port; | ||||
|     long port; | ||||
|     const char *servicename, *protoname = "tcp"; | ||||
| 
 | ||||
|     rb_scan_args(argc, argv, "11", &service, &proto); | ||||
|  | @ -1418,7 +1418,7 @@ sock_s_unpack_sockaddr_un(VALUE self, VALUE addr) | |||
| 	rb_raise(rb_eTypeError, "too long sockaddr_un - %ld longer than %d", | ||||
| 		 RSTRING_LEN(addr), (int)sizeof(struct sockaddr_un)); | ||||
|     } | ||||
|     sun_path = rsock_unixpath(sockaddr, RSTRING_LEN(addr)); | ||||
|     sun_path = rsock_unixpath(sockaddr, RSTRING_LENINT(addr)); | ||||
|     if (sizeof(struct sockaddr_un) == RSTRING_LEN(addr) && | ||||
|         sun_path == sockaddr->sun_path && | ||||
|         sun_path + strlen(sun_path) == RSTRING_PTR(addr) + RSTRING_LEN(addr)) { | ||||
|  | @ -1434,7 +1434,7 @@ sock_s_unpack_sockaddr_un(VALUE self, VALUE addr) | |||
| static VALUE | ||||
| sockaddr_obj(struct sockaddr *addr) | ||||
| { | ||||
|     size_t len; | ||||
|     socklen_t len; | ||||
| #if defined(AF_INET6) && defined(__KAME__) | ||||
|     struct sockaddr_in6 addr6; | ||||
| #endif | ||||
|  | @ -1444,12 +1444,12 @@ sockaddr_obj(struct sockaddr *addr) | |||
| 
 | ||||
|     switch (addr->sa_family) { | ||||
|       case AF_INET: | ||||
|         len = sizeof(struct sockaddr_in); | ||||
|         len = (socklen_t)sizeof(struct sockaddr_in); | ||||
|         break; | ||||
| 
 | ||||
| #ifdef AF_INET6 | ||||
|       case AF_INET6: | ||||
|         len = sizeof(struct sockaddr_in6); | ||||
|         len = (socklen_t)sizeof(struct sockaddr_in6); | ||||
| #  ifdef __KAME__ | ||||
| 	/* KAME uses the 2nd 16bit word of link local IPv6 address as interface index internally */ | ||||
|         /* http://orange.kame.net/dev/cvsweb.cgi/kame/IMPLEMENTATION */ | ||||
|  | @ -1469,17 +1469,17 @@ sockaddr_obj(struct sockaddr *addr) | |||
| 
 | ||||
| #ifdef HAVE_SYS_UN_H | ||||
|       case AF_UNIX: | ||||
|         len = sizeof(struct sockaddr_un); | ||||
|         len = (socklen_t)sizeof(struct sockaddr_un); | ||||
|         break; | ||||
| #endif | ||||
| 
 | ||||
|       default: | ||||
|         len = sizeof(struct sockaddr_in); | ||||
|         len = (socklen_t)sizeof(struct sockaddr_in); | ||||
|         break; | ||||
|     } | ||||
| #ifdef SA_LEN | ||||
|     if (len < (socklen_t)SA_LEN(addr)) | ||||
| 	len = SA_LEN(addr); | ||||
| 	len = (socklen_t)SA_LEN(addr); | ||||
| #endif | ||||
| 
 | ||||
|     return rsock_addrinfo_new(addr, len, addr->sa_family, 0, 0, Qnil, Qnil); | ||||
|  |  | |||
|  | @ -51,7 +51,7 @@ tcp_accept(VALUE sock) | |||
|     socklen_t fromlen; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     fromlen = sizeof(from); | ||||
|     fromlen = (socklen_t)sizeof(from); | ||||
|     return rsock_s_accept(rb_cTCPSocket, fptr->fd, | ||||
| 		          (struct sockaddr*)&from, &fromlen); | ||||
| } | ||||
|  | @ -97,7 +97,7 @@ tcp_accept_nonblock(VALUE sock) | |||
|     socklen_t fromlen; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     fromlen = sizeof(from); | ||||
|     fromlen = (socklen_t)sizeof(from); | ||||
|     return rsock_s_accept_nonblock(rb_cTCPSocket, fptr, | ||||
| 			           (struct sockaddr *)&from, &fromlen); | ||||
| } | ||||
|  | @ -124,7 +124,7 @@ tcp_sysaccept(VALUE sock) | |||
|     socklen_t fromlen; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     fromlen = sizeof(from); | ||||
|     fromlen = (socklen_t)sizeof(from); | ||||
|     return rsock_s_accept(0, fptr->fd, (struct sockaddr*)&from, &fromlen); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -52,7 +52,7 @@ unix_accept(VALUE sock) | |||
|     socklen_t fromlen; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     fromlen = sizeof(struct sockaddr_un); | ||||
|     fromlen = (socklen_t)sizeof(struct sockaddr_un); | ||||
|     return rsock_s_accept(rb_cUNIXSocket, fptr->fd, | ||||
| 		          (struct sockaddr*)&from, &fromlen); | ||||
| } | ||||
|  | @ -98,7 +98,7 @@ unix_accept_nonblock(VALUE sock) | |||
|     socklen_t fromlen; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     fromlen = sizeof(from); | ||||
|     fromlen = (socklen_t)sizeof(from); | ||||
|     return rsock_s_accept_nonblock(rb_cUNIXSocket, fptr, | ||||
| 			           (struct sockaddr *)&from, &fromlen); | ||||
| } | ||||
|  | @ -129,7 +129,7 @@ unix_sysaccept(VALUE sock) | |||
|     socklen_t fromlen; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
|     fromlen = sizeof(struct sockaddr_un); | ||||
|     fromlen = (socklen_t)sizeof(struct sockaddr_un); | ||||
|     return rsock_s_accept(0, fptr->fd, (struct sockaddr*)&from, &fromlen); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -17,10 +17,11 @@ struct unixsock_arg { | |||
| }; | ||||
| 
 | ||||
| static VALUE | ||||
| unixsock_connect_internal(struct unixsock_arg *arg) | ||||
| unixsock_connect_internal(VALUE a) | ||||
| { | ||||
|     struct unixsock_arg *arg = (struct unixsock_arg *)a; | ||||
|     return (VALUE)rsock_connect(arg->fd, (struct sockaddr*)arg->sockaddr, | ||||
| 			        sizeof(*arg->sockaddr), 0); | ||||
| 			        (socklen_t)sizeof(*arg->sockaddr), 0); | ||||
| } | ||||
| 
 | ||||
| VALUE | ||||
|  | @ -45,15 +46,14 @@ rsock_init_unixsock(VALUE sock, VALUE path, int server) | |||
|     memcpy(sockaddr.sun_path, RSTRING_PTR(path), RSTRING_LEN(path)); | ||||
| 
 | ||||
|     if (server) { | ||||
|         status = bind(fd, (struct sockaddr*)&sockaddr, sizeof(sockaddr)); | ||||
|         status = bind(fd, (struct sockaddr*)&sockaddr, (socklen_t)sizeof(sockaddr)); | ||||
|     } | ||||
|     else { | ||||
| 	int prot; | ||||
| 	struct unixsock_arg arg; | ||||
| 	arg.sockaddr = &sockaddr; | ||||
| 	arg.fd = fd; | ||||
|         status = rb_protect((VALUE(*)(VALUE))unixsock_connect_internal, | ||||
| 			    (VALUE)&arg, &prot); | ||||
|         status = (int)rb_protect(unixsock_connect_internal, (VALUE)&arg, &prot); | ||||
| 	if (prot) { | ||||
| 	    close(fd); | ||||
| 	    rb_jump_tag(prot); | ||||
|  | @ -115,7 +115,7 @@ unix_path(VALUE sock) | |||
|     GetOpenFile(sock, fptr); | ||||
|     if (NIL_P(fptr->pathv)) { | ||||
| 	struct sockaddr_un addr; | ||||
| 	socklen_t len = sizeof(addr); | ||||
| 	socklen_t len = (socklen_t)sizeof(addr); | ||||
| 	if (getsockname(fptr->fd, (struct sockaddr*)&addr, &len) < 0) | ||||
| 	    rb_sys_fail(0); | ||||
| 	fptr->pathv = rb_obj_freeze(rb_str_new_cstr(rsock_unixpath(&addr, len))); | ||||
|  | @ -235,10 +235,10 @@ unix_send_io(VALUE sock, VALUE val) | |||
| 
 | ||||
| #if FD_PASSING_BY_MSG_CONTROL | ||||
|     arg.msg.msg_control = (caddr_t)&cmsg; | ||||
|     arg.msg.msg_controllen = CMSG_LEN(sizeof(int)); | ||||
|     arg.msg.msg_controllen = (socklen_t)CMSG_LEN(sizeof(int)); | ||||
|     arg.msg.msg_flags = 0; | ||||
|     MEMZERO((char*)&cmsg, char, sizeof(cmsg)); | ||||
|     cmsg.hdr.cmsg_len = CMSG_LEN(sizeof(int)); | ||||
|     cmsg.hdr.cmsg_len = (socklen_t)CMSG_LEN(sizeof(int)); | ||||
|     cmsg.hdr.cmsg_level = SOL_SOCKET; | ||||
|     cmsg.hdr.cmsg_type = SCM_RIGHTS; | ||||
|     memcpy(CMSG_DATA(&cmsg.hdr), &fd, sizeof(int)); | ||||
|  | @ -320,9 +320,9 @@ unix_recv_io(int argc, VALUE *argv, VALUE sock) | |||
| 
 | ||||
| #if FD_PASSING_BY_MSG_CONTROL | ||||
|     arg.msg.msg_control = (caddr_t)&cmsg; | ||||
|     arg.msg.msg_controllen = CMSG_SPACE(sizeof(int)); | ||||
|     arg.msg.msg_controllen = (socklen_t)CMSG_SPACE(sizeof(int)); | ||||
|     arg.msg.msg_flags = 0; | ||||
|     cmsg.hdr.cmsg_len = CMSG_LEN(sizeof(int)); | ||||
|     cmsg.hdr.cmsg_len = (socklen_t)CMSG_LEN(sizeof(int)); | ||||
|     cmsg.hdr.cmsg_level = SOL_SOCKET; | ||||
|     cmsg.hdr.cmsg_type = SCM_RIGHTS; | ||||
|     fd = -1; | ||||
|  | @ -415,7 +415,7 @@ unix_addr(VALUE sock) | |||
| { | ||||
|     rb_io_t *fptr; | ||||
|     struct sockaddr_un addr; | ||||
|     socklen_t len = sizeof addr; | ||||
|     socklen_t len = (socklen_t)sizeof addr; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
| 
 | ||||
|  | @ -441,7 +441,7 @@ unix_peeraddr(VALUE sock) | |||
| { | ||||
|     rb_io_t *fptr; | ||||
|     struct sockaddr_un addr; | ||||
|     socklen_t len = sizeof addr; | ||||
|     socklen_t len = (socklen_t)sizeof addr; | ||||
| 
 | ||||
|     GetOpenFile(sock, fptr); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 nobu
						nobu