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

## Macros

#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)
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)
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

## Macro Definition Documentation

#define WAIT_IN_PROGRESS 1

Definition at line 314 of file init.c.

Referenced by rsock_connect().

## Function Documentation

static VALUE accept_blocking | ( | void * | data | ) |

static

Definition at line 481 of file init.c.

References accept_arg::fd, accept_arg::len, and accept_arg::sockaddr.

Referenced by rsock_s_accept().

static VALUE connect_blocking | ( | void * | data | ) |

static

Definition at line 324 of file init.c.

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

Referenced by rsock_connect().

static void make_fd_nonblock | ( | int | fd | ) |

static

Definition at line 430 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 97 of file init.c.

References recvfrom_arg::alen, arg, recvfrom_arg::buf, recvfrom_arg::fd, recvfrom_arg::flags, RSTRING_LEN, RSTRING_PTR, and recvfrom_arg::str.

Referenced by rsock_s_recvfrom().

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

Definition at line 340 of file init.c.

References BLOCKING_REGION_FD, connect_blocking(), EALREADY, EINPROGRESS, EISCONN, errno, connect_arg::fd, func, connect_arg::len, 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 522 of file init.c.

References AF_UNSPEC, and sockaddr_storage::ss_family.

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 535 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_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(), inspect_sockaddr(), make_ipaddr0(), rsock_getaddrinfo(), rsock_ipaddr(), and sock_s_getnameinfo().

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

Definition at line 488 of file init.c.

References accept_blocking(), BLOCKING_REGION_FD, errno, accept_arg::fd, INT2NUM(), accept_arg::len, 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 448 of file init.c.

References ECONNABORTED, errno, EWOULDBLOCK, rb_io_t::fd, make_fd_nonblock(), rb_io_set_nonblock(), rb_mod_sys_fail(), rb_mWaitReadable, rb_obj_alloc(), 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 105 of file init.c.

References recvfrom_arg::alen, BLOCKING_REGION_FD, recvfrom_arg::buf, rb_io_t::fd, recvfrom_arg::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_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, and recvfrom_arg::str.

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 173 of file init.c.

References errno, EWOULDBLOCK, rb_io_t::fd, 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_mod_sys_fail(), rb_mWaitReadable, rb_obj_taint(), rb_raise(), 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, and recvfrom_arg::str.

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

VALUE rsock_send_blocking | ( | void * | data | ) |

Definition at line 81 of file init.c.

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

Referenced by rsock_bsock_send().

VALUE rsock_sendto_blocking | ( | void * | data | ) |

Definition at line 72 of file init.c.

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

Referenced by rsock_bsock_send(), and udp_send().

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

Definition at line 243 of file init.c.

References errno, rb_gc(), and rb_update_max_fd().

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

static int wait_connectable | ( | int | fd | ) |

static

Definition at line 260 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_socket(), rsock_init_ancdata(), 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().