libwebsockets
Lightweight C library for HTML5 websockets
Socket adoption helpers

Data Structures

union  lws_sock_file_fd_type
 

Enumerations

enum  lws_adoption_type {
  LWS_ADOPT_RAW_FILE_DESC = 0, LWS_ADOPT_HTTP = 1, LWS_ADOPT_SOCKET = 2, LWS_ADOPT_ALLOW_SSL = 4,
  LWS_ADOPT_WS_PARENTIO = 8
}
 

Functions

LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket (struct lws_context *context, lws_sockfd_type accept_fd)
 
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost (struct lws_vhost *vh, lws_sockfd_type accept_fd)
 
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_descriptor_vhost (struct lws_vhost *vh, lws_adoption_type type, lws_sock_file_fd_type fd, const char *vh_prot_name, struct lws *parent)
 
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_readbuf (struct lws_context *context, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
 
LWS_VISIBLE LWS_EXTERN struct lws * lws_adopt_socket_vhost_readbuf (struct lws_vhost *vhost, lws_sockfd_type accept_fd, const char *readbuf, size_t len)
 

Detailed Description

Socket adoption helpers

When integrating with an external app with its own event loop, these can be used to accept connections from someone else's listening socket.

When using lws own event loop, these are not needed.

Function Documentation

◆ lws_adopt_socket()

LWS_VISIBLE LWS_EXTERN struct lws* lws_adopt_socket ( struct lws_context *  context,
lws_sockfd_type  accept_fd 
)

#include <lib/libwebsockets.h>

lws_adopt_socket() - adopt foreign socket as if listen socket accepted it for the default vhost of context.

Parameters
contextlws context
accept_fdfd of already-accepted socket to adopt

Either returns new wsi bound to accept_fd, or closes accept_fd and returns NULL, having cleaned up any new wsi pieces.

LWS adopts the socket in http serving mode, it's ready to accept an upgrade to ws or just serve http.

◆ lws_adopt_socket_readbuf()

LWS_VISIBLE LWS_EXTERN struct lws* lws_adopt_socket_readbuf ( struct lws_context *  context,
lws_sockfd_type  accept_fd,
const char *  readbuf,
size_t  len 
)

#include <lib/libwebsockets.h>

lws_adopt_socket_readbuf() - adopt foreign socket and first rx as if listen socket accepted it for the default vhost of context.

Parameters
contextlws context
accept_fdfd of already-accepted socket to adopt
readbufNULL or pointer to data that must be drained before reading from accept_fd
lenThe length of the data held at
readbufEither returns new wsi bound to accept_fd, or closes accept_fd and returns NULL, having cleaned up any new wsi pieces.

LWS adopts the socket in http serving mode, it's ready to accept an upgrade to ws or just serve http.

If your external code did not already read from the socket, you can use lws_adopt_socket() instead.

This api is guaranteed to use the data at

Parameters
readbuffirst, before reading from the socket.

readbuf is limited to the size of the ah rx buf, currently 2048 bytes.

◆ lws_adopt_socket_vhost()

LWS_VISIBLE LWS_EXTERN struct lws* lws_adopt_socket_vhost ( struct lws_vhost *  vh,
lws_sockfd_type  accept_fd 
)

#include <lib/libwebsockets.h>

lws_adopt_socket_vhost() - adopt foreign socket as if listen socket accepted it for vhost

Parameters
vhlws vhost
accept_fdfd of already-accepted socket to adopt

Either returns new wsi bound to accept_fd, or closes accept_fd and returns NULL, having cleaned up any new wsi pieces.

LWS adopts the socket in http serving mode, it's ready to accept an upgrade to ws or just serve http.

◆ lws_adopt_socket_vhost_readbuf()

LWS_VISIBLE LWS_EXTERN struct lws* lws_adopt_socket_vhost_readbuf ( struct lws_vhost *  vhost,
lws_sockfd_type  accept_fd,
const char *  readbuf,
size_t  len 
)

#include <lib/libwebsockets.h>

lws_adopt_socket_vhost_readbuf() - adopt foreign socket and first rx as if listen socket accepted it for vhost.

Parameters
vhostlws vhost
accept_fdfd of already-accepted socket to adopt
readbufNULL or pointer to data that must be drained before reading from accept_fd
lenThe length of the data held at
readbufEither returns new wsi bound to accept_fd, or closes accept_fd and returns NULL, having cleaned up any new wsi pieces.

LWS adopts the socket in http serving mode, it's ready to accept an upgrade to ws or just serve http.

If your external code did not already read from the socket, you can use lws_adopt_socket() instead.

This api is guaranteed to use the data at

Parameters
readbuffirst, before reading from the socket.

readbuf is limited to the size of the ah rx buf, currently 2048 bytes.