summaryrefslogtreecommitdiffstats
path: root/ext/socket/socket.c
Commit message (Collapse)AuthorAgeFilesLines
* * ext/socket/socket.c (socket_s_list_ip_address): new method.akr2009-01-201-0/+233
| | | | | | | | | | | | | | | | | (sockaddr_obj): new function. * ext/socket/rubysocket.h: include ifaddrs.h, sys/ioctl.h, sys/sockio.h, net/if.h if available. (addrinfo_new): declared. * ext/socket/raddrinfo.c (addrinfo_new): exported. * ext/socket/extconf.rb: check ifaddrs.h, sys/ioctl.h, sys/sockio.h, net/if.h and getifaddrs. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (sock_s_getnameinfo): accept AddrInfo object.akr2009-01-171-1/+1
| | | | | | | | | | * ext/socket/raddrinfo.c (rb_check_sockaddr_string_type): defined. * ext/socket/rubysocket.h (rb_check_sockaddr_string_type): declared. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket: split files for each class.akr2009-01-171-4203/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ext/socket/rubysocket.h: common header. * ext/socket/basicsocket.c: new file for BasicSocket. * ext/socket/ipsocket.c: new file for IPSocket. * ext/socket/tcpsocket.c: new file for TCPSocket. * ext/socket/tcpserver.c: new file for TCPServer. * ext/socket/sockssocket.c: new file for SOCKSSocket. * ext/socket/udpsocket.c: new file for UDPSocket. * ext/socket/unixsocket.c: new file for UNIXSocket. * ext/socket/unixserver.c: new file for UNIXServer. * ext/socket/socket.c: now for Socket. * ext/socket/raddrinfo.c: new file for AddrInfo and name resolution. * ext/socket/constants.c: new file for constants. * ext/socket/init.c: new file for utilities. * ext/socket/mkconstants.rb: export *_to_int. * ext/socket/extconf.rb: add new object files. * ext/socket/depend: add dependencies for new files. * ext/.document: add new files. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21619 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c: move addrinfo code.akr2009-01-161-1026/+1030
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (addrinfo_s_ip): new method AddrInfo.ip.akr2009-01-151-2/+24
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (rb_getaddrinfo): use getaddrinfo with GVL ifakr2009-01-131-0/+12
| | | | | | | | | | | | | getaddrinfo.c/getnameinfo.c is used. They are not thread safe because gethostbyname/gethostbyaddr is used. (rb_getnameinfo): ditto. * extconf.rb: define GETADDRINFO_EMU if getaddrinfo.c/getnameinfo.c is used. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* Commit miss in previous commit.duerst2009-01-131-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (sock_s_unpack_sockaddr_in): check too shortakr2009-01-121-0/+10
| | | | | | | | sockaddr. (sock_s_unpack_sockaddr_un): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (addrinfo_ip_unpack): new methodakr2009-01-121-1/+66
| | | | | | | | | AddrInfo#ip_unpack. (addrinfo_unix_path): new method AddrInfo#unix_path. (Init_socket): define above methods. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21468 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (IS_IP_FAMILY): defined.akr2009-01-121-6/+7
| | | | | | | (addrinfo_ip_p): use it. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21466 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* rdoc update.akr2009-01-121-15/+17
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* rdoc update.akr2009-01-101-0/+10
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21421 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* rdoc update.akr2009-01-101-2/+711
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21419 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (sock_define_const): use INT2NUM.akr2009-01-091-2/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (bsock_shutdown): accept symbol/string as how.akr2009-01-081-4/+11
| | | | | | | | | | (shutdown_how_arg): new function. * ext/socket/mkconstants.rb: generate shutdown_how_to_int. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c: don't use AI_NUMERICSERV for platforms whichakr2009-01-081-1/+8
| | | | | | | | not define it as old Windows. [ruby-dev:37736] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (init_unix_addrinfo): don't return a value.akr2009-01-071-4/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (addrinfo_getnameinfo): use NI_DGRAM if socktypeakr2009-01-071-0/+3
| | | | | | | is SOCK_DGRAM. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (host_str): add flags_ptr argument to specifyakr2009-01-071-5/+11
| | | | | | | | | AI_NUMERICHOST if host is numeric form. (port_str): add flags_ptr argument to specify AI_NUMERICSERV if port is numeric form. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (rb_cAddrInfo): new class AddrInfo.akr2009-01-071-13/+1065
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (s_recvfrom): return AddrInfo as address. (s_recvfrom_nonblock): ditto. (sock_accept): ditto. (sock_accept_nonblock): ditto. (sock_sysaccept): ditto. (bsock_send): accept AddrInfo as address argument. (sock_connect): ditto. (sock_connect_nonblock): ditto. (sock_bind): ditto. (sock_s_unpack_sockaddr_in): ditto. (sock_s_unpack_sockaddr_un): ditto. (bsock_local_address): new method BasicSocket#local_address. (bsock_remote_address): new method BasicSocket#remote_address. (addrinfo_initialize): new method AddrInfo#initialize. (addrinfo_inspect): new method AddrInfo#inspect. (addrinfo_afamily): new method AddrInfo#afamily. (addrinfo_pfamily): new method AddrInfo#pfamily. (addrinfo_socktype): new method AddrInfo#socktype. (addrinfo_protocol): new method AddrInfo#protocol. (addrinfo_to_sockaddr): new method AddrInfo#to_sockaddr. (addrinfo_canonname): new method AddrInfo#canonname. (addrinfo_ip_p): new method AddrInfo#ip?. (addrinfo_ipv4_p): new method AddrInfo#ipv4?. (addrinfo_ipv6_p): new method AddrInfo#ipv6?. (addrinfo_unix_p): new method AddrInfo#unix?. (addrinfo_getnameinfo): new method AddrInfo#getnameinfo. (addrinfo_s_getaddrinfo): new method AddrInfo.getaddrinfo. (addrinfo_s_tcp): new method AddrInfo.tcp. (addrinfo_s_udp): new method AddrInfo.udp. (addrinfo_s_unix): new method AddrInfo.unix. (Init_socket): define new class and methods. (sock_getaddrinfo): apply socktype hack regardless of ai_flags. (addrinfo_new): defined. (get_afamily): ditto. (fd_socket_addrinfo): ditto. (io_socket_addrinfo): ditto. (SockAddrStringValue): ditto. (SockAddrStringValuePtr): ditto. (sockaddr_string_value): ditto. (sockaddr_string_value_ptr): ditto. (rb_addrinfo_t): ditto. (addrinfo_mark): ditto. (addrinfo_free): ditto. (addrinfo_s_allocate): ditto. (IS_ADDRINFO): ditto. (check_addrinfo): ditto. (get_addrinfo): ditto. (alloc_addrinfo): ditto. (init_addrinfo): ditto. (addrinfo_new): ditto. (call_getaddrinfo): ditto. (init_addrinfo_getaddrinfo): ditto. (make_inspectname): ditto. (addrinfo_firstonly_new): ditto. (addrinfo_list_new): ditto. (init_unix_addrinfo): ditto. (ai_get_afamily): ditto. * ext/socket/mkconstants.rb: generate intern_protocol_family, intern_socktype and intern_ipproto. [ruby-dev:37692] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21371 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (ruby_getaddrinfo, ruby_getaddrinfo__aix):nobu2009-01-071-26/+21
| | | | | | | | | constified. * ext/socket/socket.c (ruby_getnameinfo__aix): protoized. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (io_call_close, io_close, pair_yield):nobu2009-01-061-0/+2
| | | | | | | | | | unused unless socketpair exists. * ext/socket/getnameinfo.c (getnameinfo): moved conditinally used variable. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (rb_getaddrinfo): defined for address lookup without GVL.akr2009-01-041-11/+82
| | | | | | | | | | | (struct getaddrinfo_arg): defined. (nogvl_getaddrinfo): defined. (rb_getnameinfo): defined for name lookup without GVL. (getnameinfo_arg): defined. (nogvl_getnameinfo): defined. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (constant_arg): constified.nobu2009-01-041-1/+3
| | | | | | | | | | * ext/socket/socket.c (optname_arg): cygwin does not have IPPROTO_IPV6. * ext/socket/mkconstants.rb (ipv6_optname_to_int): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c: redundant #ifdef removed.akr2009-01-031-2/+0
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c: don't apply socktype hack [ruby-core:184] forakr2009-01-021-4/+4
| | | | | | | | | | | sock_s_getaddrinfo. (sock_getaddrinfo): add socktype_hack argument. (sock_addrinfo): call sock_getaddrinfo with socktype_hack. (sock_s_getaddrinfo): call sock_getaddrinfo without socktype_hack. [ruby-dev:37674] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: rename family_to_str to intern_family.akr2009-01-021-3/+4
| | | | | | | | | | it returns ID now. * ext/socket/socket.c (ipaddr): use intern_family. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21272 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: use ID in the values ofakr2009-01-021-4/+4
| | | | | | | | | | family_to_str_hash. family_to_str returns a VALUE. * ext/socket/socket.c (ipaddr): follow family_to_str change. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: use hash for family_to_str to avoidakr2009-01-021-1/+1
| | | | | | | | | | | linear search. lenp argument removed. * ext/socket/socket.c (ipaddr): call family_to_str without lenp argument. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb (gen_int_to_name): add lenp argument.akr2009-01-021-1/+1
| | | | | | | | * ext/socket/socket.c (ipaddr): follow argument change. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21266 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (optname_arg): defined.akr2009-01-011-3/+22
| | | | | | | | | | | | | | (bsock_setsockopt): use optname_arg. (bsock_getsockopt): ditto. * ext/socket/mkconstants.rb: generate so_optname_to_int, ip_optname_to_int, ipv6_optname_to_int, tcp_optname_to_int and udp_optname_to_int. more constants. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21261 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (constant_arg): extracted from family_arg.akr2009-01-011-53/+19
| | | | | | | | | | (family_arg): use constant_arg. (socktype_arg): ditto. (level_arg): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (level_arg): defined.akr2009-01-011-2/+28
| | | | | | | | | | | (bsock_setsockopt): use level_arg. (bsock_getsockopt): ditto. * ext/socket/mkconstants.rb: generate level_to_int. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (family_arg): accept symbols as well.akr2009-01-011-4/+12
| | | | | | | (socktype_arg): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21257 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (sock_s_getaddrinfo): use socktype_arg.akr2009-01-011-1/+1
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (family_arg): extracted fromakr2009-01-011-58/+57
| | | | | | | | | | | | | setup_domain_and_type. (socktype_arg): ditto. (udp_init): use family_arg. (sock_s_gethostbyaddr): ditto. (sock_s_getaddrinfo): ditto. (sock_s_getnameinfo): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (sock_s_getnameinfo): use family_to_int.akr2009-01-011-8/+4
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21252 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (sock_s_getaddrinfo): use family_to_int.akr2009-01-011-8/+4
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21247 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c: include constants.h at top.akr2009-01-011-10/+8
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21246 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: add valp argument for family_to_int andakr2009-01-011-10/+4
| | | | | | | | | | socktype_to_int. * ext/socket/socket.c (setup_domain_and_type): use valp argument. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: generate family_to_str.akr2009-01-011-23/+7
| | | | | | | | * ext/socket/socket.c (ipaddr): use family_to_str. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: generate socktype_to_int.akr2009-01-011-21/+5
| | | | | | | | * ext/socket/socket.c (setup_domain_and_type): use socktype_to_int. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (setup_domain_and_type): initialize ptr.akr2009-01-011-1/+2
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: generate family_to_int().akr2009-01-011-42/+6
| | | | | | | | * ext/socket/socket.c (setup_domain_and_type): use family_to_int. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: generate init_constants function.akr2009-01-011-1/+3
| | | | | | | | * ext/socket/socket.c (Init_socket): call init_constants. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb (Socket::AF_INET6): moved from socket.c.akr2009-01-011-4/+0
| | | | | | | (Socket::PF_INET6): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (sock_s_socketpair): yield if a block is given.akr2008-12-311-2/+26
| | | | | | | | | | (io_call_close): defined. (io_close): defined. (pair_yield): defined. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/mkconstants.rb: use sock_define_uconst for INADDR_*akr2008-12-301-0/+9
| | | | | | | | | | | constants because Socket::INADDR_LOOPBACK should be 0x7f000001 instead of -0xffffff. * ext/socket/socket.c (sock_define_uconst): defined. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21202 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (s_recvfrom_nonblock): revert r21162.matz2008-12-291-6/+3
| | | | git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21167 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* * ext/socket/socket.c (s_recvfrom_nonblock): fixed awesome typo.matz2008-12-291-1/+1
| | | | | | sorry. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@21164 b2dd03c8-39d4-4d8f-98ff-823fe69b080e