Go to the documentation of this file.
32 struct sockaddr_storage saddr;
51 memset(&saddr, 0,
sizeof(saddr));
68 struct sockaddr_storage saddr;
71 if (domain == AF_UNSPEC) {
88 memset(&saddr, 0,
sizeof(saddr));
94 (saddr.ss_family == AF_INET &&
95 ((
struct sockaddr_in*) &saddr)->sin_port != 0)) {
118 domain =
flags & 0xFF;
119 if (domain != AF_INET && domain !=
AF_INET6 && domain != AF_UNSPEC)
131 if (domain != AF_UNSPEC) {
149 const struct sockaddr*
addr,
150 unsigned int addrlen,
151 unsigned int flags) {
164 if (setsockopt(
tcp->io_watcher.fd, SOL_SOCKET, SO_REUSEADDR, &on,
sizeof(on)))
171 if (setsockopt(
tcp->io_watcher.fd,
177 if (errno == EOPNOTSUPP)
187 if (bind(
tcp->io_watcher.fd,
addr, addrlen) && errno != EADDRINUSE) {
188 if (errno == EAFNOSUPPORT)
206 const struct sockaddr*
addr,
207 unsigned int addrlen,
212 assert(
handle->type == UV_TCP);
214 if (
handle->connect_req != NULL)
223 handle->delayed_error = 0;
228 }
while (
r == -1 && errno == EINTR);
235 if (
r == -1 && errno != 0) {
236 if (errno == EINPROGRESS)
238 else if (errno == ECONNREFUSED
239 #
if defined(__OpenBSD__)
260 if (
handle->delayed_error)
284 struct sockaddr*
name,
287 if (
handle->delayed_error)
288 return handle->delayed_error;
298 struct sockaddr*
name,
301 if (
handle->delayed_error)
302 return handle->delayed_error;
313 struct linger
l = { 1, 0 };
320 if (0 != setsockopt(fd, SOL_SOCKET, SO_LINGER, &
l,
sizeof(
l)))
329 static int single_accept = -1;
333 if (
tcp->delayed_error)
334 return tcp->delayed_error;
336 if (single_accept == -1) {
337 const char* val =
getenv(
"UV_TCP_SINGLE_ACCEPT");
338 single_accept = (val != NULL && atoi(val) != 0);
359 tcp->connection_cb =
cb;
371 if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on,
sizeof(on)))
378 if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on,
sizeof(on)))
385 if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &delay,
sizeof(delay)))
387 if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &intvl,
sizeof(intvl)))
389 if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &cnt,
sizeof(cnt)))
398 #if defined(TCP_KEEPALIVE) && !defined(__sun)
399 if (on && setsockopt(fd, IPPROTO_TCP,
TCP_KEEPALIVE, &delay,
sizeof(delay)))
@ UV_HANDLE_TCP_KEEPALIVE
void uv__stream_close(uv_stream_t *handle)
int uv_tcp_getpeername(const uv_tcp_t *handle, struct sockaddr *name, int *namelen)
int uv_tcp_close_reset(uv_tcp_t *handle, uv_close_cb close_cb)
return memset(p, 0, total)
int uv__socket(int domain, int type, int protocol)
#define uv__req_init(loop, req, typ)
@ UV_HANDLE_TCP_SINGLE_ACCEPT
void uv__tcp_close(uv_tcp_t *handle)
int uv_tcp_listen(uv_tcp_t *tcp, int backlog, uv_connection_cb cb)
static int new_socket(uv_tcp_t *handle, int domain, unsigned long flags)
UV_EXTERN void uv_close(uv_handle_t *handle, uv_close_cb close_cb)
UV_REQ_FIELDS uv_connect_cb cb
int uv_tcp_nodelay(uv_tcp_t *handle, int on)
int uv_tcp_init_ex(uv_loop_t *loop, uv_tcp_t *tcp, unsigned int flags)
int uv_tcp_getsockname(const uv_tcp_t *handle, struct sockaddr *name, int *namelen)
int uv_tcp_init(uv_loop_t *loop, uv_tcp_t *tcp)
int uv_tcp_open(uv_tcp_t *handle, uv_os_sock_t sock)
void uv__server_io(uv_loop_t *loop, uv__io_t *w, unsigned int events)
int uv__fd_exists(uv_loop_t *loop, int fd)
void uv__io_start(uv_loop_t *loop, uv__io_t *w, unsigned int events)
int uv__getsockpeername(const uv_handle_t *handle, uv__peersockfunc func, struct sockaddr *name, int *namelen)
static int maybe_new_socket(uv_tcp_t *handle, int domain, unsigned long flags)
void uv__stream_init(uv_loop_t *loop, uv_stream_t *stream, uv_handle_type type)
static void close_cb(uv_handle_t *handle)
void(* uv_connect_cb)(uv_connect_t *req, int status)
int uv_tcp_keepalive(uv_tcp_t *handle, int on, unsigned int delay)
int uv__tcp_connect(uv_connect_t *req, uv_tcp_t *handle, const struct sockaddr *addr, unsigned int addrlen, uv_connect_cb cb)
void uv__io_feed(uv_loop_t *loop, uv__io_t *w)
def listen(endpoint, test_case)
void(* uv_connection_cb)(uv_stream_t *server, int status)
#define uv__stream_fd(handle)
int uv_tcp_simultaneous_accepts(uv_tcp_t *handle, int enable)
int uv__tcp_bind(uv_tcp_t *tcp, const struct sockaddr *addr, unsigned int addrlen, unsigned int flags)
void(* uv_close_cb)(uv_handle_t *handle)
int uv__stream_open(uv_stream_t *, int fd, int flags)
int uv__tcp_keepalive(int fd, int on, unsigned int delay)
int uv__tcp_nodelay(int fd, int on)
OPENSSL_EXPORT pem_password_cb * cb
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:29