ext/socket/init.c File Reference

#include "rubysocket.h"

Go to the source code of this file.

Data Structures

struct  recvfrom_arg
struct  connect_arg
struct  accept_arg

Defines

#define WAIT_IN_PROGRESS   1

Functions

void rsock_raise_socket_error (const char *reason, int error)
VALUE rsock_init_sock (VALUE sock, int fd)
VALUE rsock_sendto_blocking (void *data)
VALUE rsock_send_blocking (void *data)
static VALUE recvfrom_blocking (void *data)
VALUE rsock_s_recvfrom (VALUE sock, int argc, VALUE *argv, enum sock_recv_type from)
VALUE rsock_s_recvfrom_nonblock (VALUE sock, int argc, VALUE *argv, enum sock_recv_type from)
static int rsock_socket0 (int domain, int type, int proto)
int rsock_socket (int domain, int type, int proto)
static int wait_connectable (int fd)
static VALUE connect_blocking (void *data)
int rsock_connect (int fd, const struct sockaddr *sockaddr, int len, int socks)
static void make_fd_nonblock (int fd)
static int cloexec_accept (int socket, struct sockaddr *address, socklen_t *address_len)
VALUE rsock_s_accept_nonblock (VALUE klass, rb_io_t *fptr, struct sockaddr *sockaddr, socklen_t *len)
static VALUE accept_blocking (void *data)
VALUE rsock_s_accept (VALUE klass, int fd, struct sockaddr *sockaddr, socklen_t *len)
int rsock_getfamily (int sockfd)
void rsock_init_socket_init ()

Variables

VALUE rb_cBasicSocket
VALUE rb_cIPSocket
VALUE rb_cTCPSocket
VALUE rb_cTCPServer
VALUE rb_cUDPSocket
VALUE rb_cSocket
VALUE rb_cAddrinfo
VALUE rb_eSocket
int rsock_do_not_reverse_lookup = 1


Define Documentation

#define WAIT_IN_PROGRESS   1

Definition at line 360 of file init.c.

Referenced by rsock_connect().


Function Documentation

static VALUE accept_blocking ( void *  data  )  [static]

Definition at line 564 of file init.c.

References cloexec_accept(), accept_arg::fd, accept_arg::len, accept_arg::sockaddr, and VALUE.

Referenced by rsock_s_accept().

static int cloexec_accept ( int  socket,
struct sockaddr *  address,
socklen_t address_len 
) [static]

Definition at line 494 of file init.c.

References errno, and rb_maygvl_fd_fix_cloexec().

Referenced by accept_blocking(), and rsock_s_accept_nonblock().

static VALUE connect_blocking ( void *  data  )  [static]

Definition at line 370 of file init.c.

References connect_arg::fd, connect_arg::len, connect_arg::sockaddr, and VALUE.

Referenced by rsock_connect().

static void make_fd_nonblock ( int  fd  )  [static]

Definition at line 476 of file init.c.

References F_SETFL, fcntl(), O_NONBLOCK, and rb_sys_fail().

Referenced by rsock_s_accept_nonblock().

static VALUE recvfrom_blocking ( void *  data  )  [static]

Definition at line 98 of file init.c.

References union_sockaddr::addr, recvfrom_arg::alen, recvfrom_arg::buf, recvfrom_arg::fd, recvfrom_arg::flags, RSTRING_LEN, RSTRING_PTR, recvfrom_arg::str, and VALUE.

Referenced by rsock_s_recvfrom().

int rsock_connect ( int  fd,
const struct sockaddr *  sockaddr,
int  len,
int  socks 
)

Definition at line 386 of file init.c.

References BLOCKING_REGION_FD, connect_blocking(), EALREADY, EINPROGRESS, EISCONN, errno, connect_arg::fd, func, connect_arg::len, rb_thread_wait_for(), connect_arg::sockaddr, wait_connectable(), and WAIT_IN_PROGRESS.

Referenced by init_inetsock_internal(), sock_connect(), and udp_connect_internal().

int rsock_getfamily ( int  sockfd  ) 

Definition at line 605 of file init.c.

References AF_UNSPEC.

Referenced by bsock_getsockopt(), and bsock_setsockopt().

VALUE rsock_init_sock ( VALUE  sock,
int  fd 
)

Definition at line 43 of file init.c.

References rb_io_t::fd, FMODE_DUPLEX, FMODE_NOREVLOOKUP, FMODE_READWRITE, fstat, MakeOpenFile, rb_io_t::mode, rb_eArgError, rb_io_ascii8bit_binmode(), rb_io_synchronized(), rb_raise(), rb_sys_fail(), rb_update_max_fd(), rb_w32_is_socket(), rsock_do_not_reverse_lookup, and stat.

Referenced by bsock_s_for_fd(), init_inetsock_internal(), rsock_s_accept(), rsock_s_accept_nonblock(), sock_initialize(), and udp_init().

void rsock_init_socket_init ( void   ) 

Definition at line 618 of file init.c.

References rb_define_class(), rb_eSocket, rb_eStandardError, rsock_init_addrinfo(), rsock_init_ancdata(), rsock_init_ipsocket(), rsock_init_socket_constants(), rsock_init_sockifaddr(), rsock_init_sockopt(), rsock_init_sockssocket(), rsock_init_tcpserver(), rsock_init_tcpsocket(), rsock_init_udpsocket(), rsock_init_unixserver(), and rsock_init_unixsocket().

Referenced by Init_socket().

void rsock_raise_socket_error ( const char *  reason,
int  error 
)

Definition at line 34 of file init.c.

References EAI_SYSTEM, gai_strerror(), rb_eSocket, rb_raise(), and rb_sys_fail().

Referenced by addrinfo_getnameinfo(), addrinfo_mdump(), make_ipaddr0(), rsock_getaddrinfo(), rsock_inspect_sockaddr(), rsock_ipaddr(), and sock_s_getnameinfo().

VALUE rsock_s_accept ( VALUE  klass,
int  fd,
struct sockaddr *  sockaddr,
socklen_t len 
)

Definition at line 571 of file init.c.

References accept_blocking(), BLOCKING_REGION_FD, errno, accept_arg::fd, INT2NUM, accept_arg::len, rb_gc(), rb_io_wait_readable(), rb_obj_alloc(), rb_secure(), rb_sys_fail(), rb_thread_wait_fd(), rb_update_max_fd(), rsock_init_sock(), and accept_arg::sockaddr.

Referenced by sock_accept(), sock_sysaccept(), tcp_accept(), and tcp_sysaccept().

VALUE rsock_s_accept_nonblock ( VALUE  klass,
rb_io_t fptr,
struct sockaddr *  sockaddr,
socklen_t len 
)

Definition at line 531 of file init.c.

References cloexec_accept(), ECONNABORTED, errno, EWOULDBLOCK, rb_io_t::fd, make_fd_nonblock(), rb_io_set_nonblock(), RB_IO_WAIT_READABLE, rb_obj_alloc(), rb_readwrite_sys_fail(), rb_secure(), rb_sys_fail(), rb_update_max_fd(), and rsock_init_sock().

Referenced by sock_accept_nonblock(), and tcp_accept_nonblock().

VALUE rsock_s_recvfrom ( VALUE  sock,
int  argc,
VALUE *  argv,
enum sock_recv_type  from 
)

Definition at line 111 of file init.c.

References union_sockaddr::addr, recvfrom_arg::alen, BLOCKING_REGION_FD, recvfrom_arg::buf, recvfrom_arg::fd, rb_io_t::fd, recvfrom_arg::flags, FMODE_NOREVLOOKUP, GetOpenFile, len, rb_io_t::mode, NUM2INT, Qnil, rb_assoc_new(), rb_bug(), rb_eIOError, rb_eRuntimeError, rb_eTypeError, rb_io_check_closed(), rb_io_read_pending(), rb_io_wait_readable(), rb_obj_hide(), rb_obj_reveal(), rb_obj_taint(), rb_raise(), rb_scan_args(), rb_str_set_len(), rb_sys_fail(), rb_tainted_str_new(), rb_thread_wait_fd(), RBASIC, RECV_IP, RECV_RECV, RECV_SOCKET, RECV_UNIX, recvfrom_blocking(), rsock_io_socket_addrinfo(), rsock_ipaddr(), RSTRING_LEN, recvfrom_arg::str, and VALUE.

Referenced by bsock_recv(), ip_recvfrom(), and sock_recvfrom().

VALUE rsock_s_recvfrom_nonblock ( VALUE  sock,
int  argc,
VALUE *  argv,
enum sock_recv_type  from 
)

Definition at line 179 of file init.c.

References recvfrom_arg::alen, buf, errno, EWOULDBLOCK, recvfrom_arg::fd, rb_io_t::fd, recvfrom_arg::flags, FMODE_NOREVLOOKUP, GetOpenFile, len, rb_io_t::mode, NUM2INT, Qnil, rb_assoc_new(), rb_bug(), rb_eIOError, rb_io_check_closed(), rb_io_read_pending(), rb_io_set_nonblock(), RB_IO_WAIT_READABLE, rb_obj_taint(), rb_raise(), rb_readwrite_sys_fail(), rb_scan_args(), rb_str_set_len(), rb_sys_fail(), rb_tainted_str_new(), RECV_IP, RECV_RECV, RECV_SOCKET, rsock_io_socket_addrinfo(), rsock_ipaddr(), RSTRING_LEN, RSTRING_PTR, recvfrom_arg::str, and VALUE.

Referenced by bsock_recv_nonblock(), sock_recvfrom_nonblock(), and udp_recvfrom_nonblock().

VALUE rsock_send_blocking ( void *  data  ) 

Definition at line 82 of file init.c.

References rsock_send_arg::fd, rsock_send_arg::flags, rsock_send_arg::mesg, RSTRING_LEN, RSTRING_PTR, and VALUE.

Referenced by rsock_bsock_send().

VALUE rsock_sendto_blocking ( void *  data  ) 

Definition at line 73 of file init.c.

References rsock_send_arg::fd, rsock_send_arg::flags, rsock_send_arg::mesg, RSTRING_LEN, RSTRING_PTR, rsock_send_arg::to, rsock_send_arg::tolen, and VALUE.

Referenced by rsock_bsock_send(), and udp_send().

int rsock_socket ( int  domain,
int  type,
int  proto 
)

Definition at line 285 of file init.c.

References errno, recvfrom_arg::fd, rb_gc(), rb_update_max_fd(), and rsock_socket0().

Referenced by init_inetsock_internal(), sock_initialize(), and udp_init().

static int rsock_socket0 ( int  domain,
int  type,
int  proto 
) [static]

Definition at line 253 of file init.c.

References errno, and rb_fd_fix_cloexec().

Referenced by rsock_socket().

static int wait_connectable ( int  fd  )  [static]

Definition at line 302 of file init.c.

References errno, NULL, rb_wait_for_single_fd(), RB_WAITFD_IN, and RB_WAITFD_OUT.

Referenced by rsock_connect().


Variable Documentation

VALUE rb_cAddrinfo

Definition at line 23 of file init.c.

Referenced by rsock_addrinfo_new(), and rsock_init_addrinfo().

VALUE rb_cBasicSocket

Definition at line 13 of file init.c.

Referenced by Init_socket(), rsock_init_basicsocket(), rsock_init_ipsocket(), and rsock_init_unixsocket().

VALUE rb_cIPSocket

Definition at line 14 of file init.c.

Referenced by rsock_init_ipsocket(), rsock_init_tcpsocket(), and rsock_init_udpsocket().

VALUE rb_cSocket

Definition at line 22 of file init.c.

Referenced by init_constants(), Init_socket(), rsock_init_ancdata(), rsock_init_sockifaddr(), rsock_init_sockopt(), sock_accept(), and sock_accept_nonblock().

VALUE rb_cTCPServer

Definition at line 16 of file init.c.

Referenced by rsock_init_tcpserver().

VALUE rb_cTCPSocket

Definition at line 15 of file init.c.

Referenced by rsock_init_sockssocket(), rsock_init_tcpserver(), rsock_init_tcpsocket(), tcp_accept(), and tcp_accept_nonblock().

VALUE rb_cUDPSocket

Definition at line 17 of file init.c.

Referenced by rsock_init_udpsocket().

VALUE rb_eSocket

Definition at line 25 of file init.c.

Referenced by addrinfo_initialize(), addrinfo_ip_address(), addrinfo_ip_port(), addrinfo_ip_unpack(), addrinfo_mdump(), addrinfo_mload(), call_getaddrinfo(), constant_arg(), make_addrinfo(), rsock_getaddrinfo(), rsock_init_socket_init(), rsock_raise_socket_error(), sock_s_gethostbyaddr(), sock_s_getnameinfo(), sock_s_getservbyname(), sock_s_getservbyport(), and sock_sockaddr().

int rsock_do_not_reverse_lookup = 1

Definition at line 31 of file init.c.

Referenced by bsock_do_not_rev_lookup(), bsock_do_not_rev_lookup_set(), rsock_init_sock(), and sock_s_getaddrinfo().


Generated on 19 Jul 2016 for Ruby by  doxygen 1.4.7