17#include "apr_arch_networkio.h"
22#include "apr_arch_inherit.h"
26#define close closesocket
29#if APR_HAVE_SOCKADDR_UN
30#define GENERIC_INADDR_ANY_LEN sizeof(struct sockaddr_un)
32#define GENERIC_INADDR_ANY_LEN 16
43#if APR_HAVE_SOCKADDR_UN
84#if defined(BEOS) && !defined(BEOS_BONE)
98 (*new)->local_addr->pool =
p;
101 (*new)->remote_addr->pool =
p;
102 (*new)->remote_addr_unknown = 1;
103#ifndef WAITIO_USES_POLL
122#ifdef HAVE_SOCK_CLOEXEC
133#if APR_HAVE_SOCKADDR_UN
158 (*new)->socketdes = -1;
170 if ((*new)->socketdes < 0) {
175#ifndef HAVE_SOCK_CLOEXEC
182 close((*new)->socketdes);
183 (*new)->socketdes = -1;
190 close((*new)->socketdes);
191 (*new)->socketdes = -1;
197 (*new)->timeout = -1;
225#if APR_HAVE_SOCKADDR_UN
259#if defined(SOCK_NONBLOCK) && APR_O_NONBLOCK_INHERITED
293 (*new)->connected = 1;
295 (*new)->timeout = -1;
297 (*new)->remote_addr_unknown = 0;
299 (*new)->socketdes =
s;
302 (*new)->remote_addr->sa =
sa.
sa;
315 (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin.sin_addr;
319 (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin6.sin6_addr;
322#if APR_HAVE_SOCKADDR_UN
325 (*new)->local_addr->
ipaddr_ptr = &((*new)->local_addr->sa.unx.sun_path);
326 (*new)->remote_addr->ipaddr_ptr = &((*new)->remote_addr->sa.unx.sun_path);
330 (*new)->remote_addr->port =
ntohs((*new)->remote_addr->sa.sin.sin_port);
333 (*new)->local_port_unknown = 1;
336#if APR_TCP_NODELAY_INHERITED
341#if APR_O_NONBLOCK_INHERITED
357 (*new)->local_interface_unknown = 1;
367 close((*new)->socketdes);
368 (*new)->socketdes = -1;
375 close((*new)->socketdes);
376 (*new)->socketdes = -1;
440#if APR_HAVE_SOCKADDR_UN
518 (*apr_sock)->timeout = -1;
521 memcpy(&(*apr_sock)->local_addr->sa.sin,
523 (*apr_sock)->local_addr->salen);
525 (*apr_sock)->local_addr->port =
ntohs((*apr_sock)->local_addr->sa.sin.sin_port);
528 (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1;
532 (*apr_sock)->connected = 1;
534 memcpy(&(*apr_sock)->remote_addr->sa.sin,
536 (*apr_sock)->remote_addr->salen);
538 (*apr_sock)->remote_addr->port =
ntohs((*apr_sock)->remote_addr->sa.sin.sin_port);
541 (*apr_sock)->remote_addr_unknown = 1;
544 (*apr_sock)->inherit = 0;
560 (*sock)->timeout = -1;
562 (*sock)->local_port_unknown = (*sock)->local_interface_unknown = 1;
563 (*sock)->remote_addr_unknown = 1;
const char apr_size_t len
APR Portability Routines.
apr_pool_t const char apr_dbd_t const char ** error
const char apr_ssize_t int flags
const char int apr_pool_t * pool
void const char apr_status_t(* cleanup)(void *))
apr_sockaddr_t * sockaddr
#define APR_POOL_IMPLEMENT_ACCESSOR(type)
#define apr_pcalloc(p, size)
apr_os_sock_info_t * os_sock_info
apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, int for_read)
#define APR_IMPLEMENT_INHERIT_UNSET(name, flag, pool, cleanup)
#define APR_IMPLEMENT_INHERIT_SET(name, flag, pool, cleanup)
void apr_sockaddr_vars_set(apr_sockaddr_t *, int, apr_port_t)
static void alloc_socket(apr_socket_t **new, apr_pool_t *p)
static apr_status_t socket_cleanup(void *sock)
static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol)
union apr_sockaddr_t::@55 sa
sock_userdata_t * userdata
apr_interval_time_t timeout
int local_interface_unknown
apr_sockaddr_t * remote_addr
apr_sockaddr_t * local_addr
#define apr_is_option_set(skt, option)
#define apr_set_option(skt, option, on)
apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock)
apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock, apr_pool_t *connection_context)
apr_status_t apr_socket_listen(apr_socket_t *sock, apr_int32_t backlog)
apr_status_t apr_socket_bind(apr_socket_t *sock, apr_sockaddr_t *sa)
apr_status_t apr_os_sock_make(apr_socket_t **apr_sock, apr_os_sock_info_t *os_sock_info, apr_pool_t *cont)
apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont)
#define GENERIC_INADDR_ANY_LEN
apr_status_t apr_socket_close(apr_socket_t *thesocket)
apr_status_t apr_socket_type_get(apr_socket_t *sock, int *type)
apr_status_t apr_socket_connect(apr_socket_t *sock, apr_sockaddr_t *sa)
static apr_status_t socket_child_cleanup(void *sock)
apr_status_t apr_socket_protocol_get(apr_socket_t *sock, int *protocol)
apr_status_t apr_socket_shutdown(apr_socket_t *thesocket, apr_shutdown_how_e how)
static char generic_inaddr_any[16]
apr_status_t apr_socket_create(apr_socket_t **new, int ofamily, int type, int protocol, apr_pool_t *cont)
apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock)
apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key, apr_status_t(*cleanup)(void *))