Nilorea Library
C utilities for networking, threading, graphics
Loading...
Searching...
No Matches
NETWORK ENGINE: connect, accept, send and recv wrappers. Network Queue, thread-safe add/get message, ssl/tls secured communications

Data Structures

struct  N_SOCKET
 Structure of a N_SOCKET. More...
 
struct  NETWORK
 Structure of a NETWORK. More...
 
struct  NETWORK_HTTP_INFO
 structure for splitting HTTP requests More...
 
struct  NETWORK_POOL
 structure of a network pool More...
 

Macros

#define _OPEN_SYS_SOCK_IPV6   1
 
#define HEAD_CODE   3
 Code of a HEAD message.
 
#define HEAD_SIZE   10
 Size of a HEAD message.
 
#define N_ENUM_netw_code_type(_)
 Network codes definition.
 
#define NETW_MAX_RETRIES   128
 Send or recv max number of retries.
 
#define NETW_SOCKET_DISCONNECTED   -2
 Code for a disconnected recv.
 
#define NETW_SOCKET_ERROR   -1
 code for a socekt error
 
#define NETWORK_CONSECUTIVE_SEND_WAIT   2048
 Flag to set consecutive send waiting timeout

 
#define NETWORK_DEPLETE_QUEUES_TIMEOUT   1024
 Flag to set network queues depletion timeout

 
#define NETWORK_DEPLETE_SOCKET_TIMEOUT   512
 Flag to set send buffer depletion timeout

 
#define NETWORK_IPALL   0
 Flag for auto detection by OS of ip version to use.
 
#define NETWORK_IPV4   1
 Flag to force IPV4

 
#define NETWORK_IPV6   2
 Flag to force IPV6

 
#define NETWORK_WAIT_CLOSE_TIMEOUT   4096
 Flag to set network closing wait timeout.
 
#define SOCKET_SIZE_FORMAT   "%d"
 socket associated printf style
 

Typedefs

typedef ssize_t(* netw_func) (void *, char *, uint32_t)
 send/recv func ptr type
 
typedef int SOCKET
 default socket declaration
 

Enumerations

enum  __netw_code_type {
  NETW_CLIENT = 2 , NETW_SERVER = 4 , NETW_RESTART_TIMER = 8 , NETW_EMPTY_SENDBUF = 16 ,
  NETW_EMPTY_RECVBUF = 32 , NETW_RUN = 64 , NETW_EXIT_ASKED = 128 , NETW_EXITED = 256 ,
  NETW_ERROR = 512 , NETW_ENCRYPT_NONE = 1024 , NETW_ENCRYPT_OPENSSL = 2048 , NETW_THR_ENGINE_STARTED = 4096 ,
  NETW_THR_ENGINE_STOPPED = 8192 , NETW_DESTROY_RECVBUF = 16384 , NETW_DESTROY_SENDBUF = 32768 , ____netw_code_type_UNKNOWN_VALUE__
}
 Network codes declaration. More...
 

Functions

__netw_code_type __netw_code_type_fromString (const char *str_value)
 
__netw_code_type __netw_code_type_fromStringEx (const char *str_value, int index)
 
bool __netw_code_type_isStringValid (const char *str_value)
 
bool __netw_code_type_isValid (__netw_code_type value)
 network error code
 
const char * __netw_code_type_toString (__netw_code_type value)
 
int deplete_send_buffer (int fd, int timeout)
 wait until the socket is empty or timeout, checking each 100 msec.
 
size_t htonst (size_t value)
 host to network size_t
 
NETWORKnetw_accept_from (NETWORK *from)
 make a normal blocking 'accept' .
 
NETWORKnetw_accept_from_ex (NETWORK *from, size_t send_list_limit, size_t recv_list_limit, int blocking, int *retval)
 make a normal 'accept' .
 
NETWORKnetw_accept_nonblock_from (NETWORK *from, int blocking)
 make a normal blocking 'accept' .
 
int netw_add_msg (NETWORK *netw, N_STR *msg)
 Add a message to send in aimed NETWORK.
 
int netw_add_msg_ex (NETWORK *netw, char *str, unsigned int length)
 Add a message to send in aimed NETWORK.
 
int netw_build_http_response (N_STR **http_response, int status_code, const char *server_name, const char *content_type, char *additional_headers, N_STR *body)
 function to dynamically generate an HTTP response
 
size_t netw_calculate_urlencoded_size (const char *str, size_t len)
 function to calculate the required size for the URL-encoded string
 
int netw_close (NETWORK **netw)
 Closing a specified Network, destroy queues, free the structure.
 
int netw_connect (NETWORK **netw, char *host, char *port, int ip_version)
 Use this to connect a NETWORK to any listening one, unrestricted send/recv lists.
 
int netw_connect_ex (NETWORK **netw, char *host, char *port, size_t send_list_limit, size_t recv_list_limit, int ip_version, char *ssl_key_file, char *ssl_cert_file)
 
int netw_destroy_pool (NETWORK_POOL **netw_pool)
 free a NETWORK_POOL *pool
 
NETWORK_HTTP_INFO netw_extract_http_info (char *request)
 extract a lot of informations, mostly as pointers, and populate a NETWORK_HTTP_INFO structure
 
char * netw_extract_http_request_type (const char *request)
 function to extract the request method from an http request
 
int netw_get_http_date (char *buffer, size_t buffer_size)
 helper function to generate the current date in HTTP format
 
const char * netw_get_http_status_message (int status_code)
 helper function to convert status code to a human-readable message
 
N_STRnetw_get_msg (NETWORK *netw)
 Get a message from aimed NETWORK.
 
int netw_get_queue_status (NETWORK *netw, size_t *nb_to_send, size_t *nb_to_read)
 retrieve network send queue status
 
int netw_get_state (NETWORK *netw, uint32_t *state, int *thr_engine_status)
 Get the state of a network.
 
int netw_get_url_from_http_request (const char *request, char *url, size_t size)
 Helper function to extract the URL from the HTTP request line.
 
const char * netw_guess_http_content_type (const char *url)
 function to guess the content type based on URL extension
 
int netw_info_destroy (NETWORK_HTTP_INFO http_request)
 destroy a NETWORK_HTTP_INFO loaded informations
 
int netw_init_openssl (void)
 Do not directly use, internal api.
 
int netw_init_wsa (int mode, int v1, int v2)
 Do not directly use, internal api.
 
int netw_make_listening (NETWORK **netw, char *addr, char *port, int nbpending, int ip_version)
 Make a NETWORK be a Listening network.
 
NETWORK_POOLnetw_new_pool (size_t nb_min_element)
 return a new network pool of nb_min_element
 
HASH_TABLEnetw_parse_post_data (const char *post_data)
 Function to parse POST data.
 
int netw_pool_add (NETWORK_POOL *netw_pool, NETWORK *netw)
 add a NETWORK *netw to a NETWORK_POOL *pool
 
int netw_pool_broadcast (NETWORK_POOL *netw_pool, NETWORK *from, N_STR *net_msg)
 add net_msg to all network in netork pool
 
size_t netw_pool_nbclients (NETWORK_POOL *netw_pool)
 return the number of networks in netw_pool
 
void netw_pool_netw_close (void *netw_ptr)
 close a network from a network pool
 
int netw_pool_remove (NETWORK_POOL *netw_pool, NETWORK *netw)
 remove a NETWORK *netw to a NETWORK_POOL *pool
 
void * netw_recv_func (void *NET)
 To Thread Receiving function.
 
void * netw_send_func (void *NET)
 Thread send function.
 
int netw_send_ident (NETWORK *netw, int type, int id, N_STR *name, N_STR *passwd)
 Add a formatted NETWMSG_IDENT message to the specified network.
 
int netw_send_ping (NETWORK *netw, int type, int id_from, int id_to, int time)
 Add a ping reply to the network.
 
int netw_send_position (NETWORK *netw, int id, double X, double Y, double vx, double vy, double acc_x, double acc_y, int time_stamp)
 Add a formatted NETWMSG_IDENT message to the specified network.
 
int netw_send_quit (NETWORK *netw)
 Add a formatted NETMSG_QUIT message to the specified network.
 
int netw_send_string_to (NETWORK *netw, int id_to, N_STR *name, N_STR *chan, N_STR *txt, int color)
 Add a string to the network, aiming a specific user.
 
int netw_send_string_to_all (NETWORK *netw, N_STR *name, N_STR *chan, N_STR *txt, int color)
 Add a string to the network, aiming all server-side users.
 
int netw_set (NETWORK *netw, int flag)
 Restart or reset the specified network ability.
 
int netw_set_blocking (NETWORK *netw, unsigned long int is_blocking)
 Modify blocking socket mode.
 
int netw_set_crypto (NETWORK *netw, char *key, char *certificate)
 activate SSL encryption on selected network, using key and certificate
 
int netw_set_user_id (NETWORK *netw, int id)
 associate an id and a network
 
int netw_setsockopt (NETWORK *netw, int optname, int value)
 Modify common socket options on the given netw.
 
int netw_ssl_connect (NETWORK **netw, char *host, char *port, int ip_version, char *ssl_key_file, char *ssl_cert_file)
 Use this to connect a NETWORK to any listening one, unrestricted send/recv lists.
 
int netw_start_thr_engine (NETWORK *netw)
 Start the NETWORK netw Threaded Engine.
 
int netw_stop_thr_engine (NETWORK *netw)
 Stop a NETWORK connection sending and receing thread.
 
int netw_unload_openssl (void)
 Do not directly use, internal api.
 
char * netw_urldecode (const char *str)
 Function to decode URL-encoded data.
 
char * netw_urlencode (const char *str, size_t len)
 function to perform URL encoding
 
int netw_wait_close (NETWORK **netw)
 
int netw_wait_close_timed (NETWORK **netw, size_t timeout)
 
N_STRnetw_wait_msg (NETWORK *netw, unsigned int refresh, size_t timeout)
 
size_t ntohst (size_t value)
 
ssize_t recv_data (void *netw, char *buf, uint32_t n)
 recv data from the socket
 
ssize_t recv_php (SOCKET s, int *_code, char **buf)
 recv data from the socket
 
ssize_t recv_ssl_data (void *netw, char *buf, uint32_t n)
 recv data from the socket
 
ssize_t send_data (void *netw, char *buf, uint32_t n)
 send data onto the socket
 
ssize_t send_php (SOCKET s, int _code, char *buf, int n)
 send data onto the socket
 
ssize_t send_ssl_data (void *netw, char *buf, uint32_t n)
 send data onto the socket
 

Detailed Description


Data Structure Documentation

◆ N_SOCKET

struct N_SOCKET

Structure of a N_SOCKET.

Definition at line 216 of file n_network.h.

+ Collaboration diagram for N_SOCKET:
Data Fields
struct addrinfo hints address of local machine
char * ip ip of the connected socket
unsigned long int is_blocking flag to quickly check socket mode
char * port port of socket
struct sockaddr_storage raddr connected remote addr
struct addrinfo * rhost getaddrinfo results
SOCKET sock a normal socket

◆ NETWORK

struct NETWORK

Structure of a NETWORK.

Examples
ex_network.c, and ex_network_ssl.c.

Definition at line 236 of file n_network.h.

+ Collaboration diagram for NETWORK:
Data Fields
int addr_infos_loaded Internal flag to know if we have to free addr infos.
char * certificate openssl certificate file
int crypto_algo if encryption is on, which one (flags NETW_ENCRYPT_*)
int crypto_mode tell if the socket have to be encrypted (flags NETW_CRYPTO_*)
SSL_CTX * ctx SSL context holder.
int deplete_queues_timeout deplete network queues timeout ( 0 disabled, > 0 wait for timeout and check unset/unack datas)
int deplete_socket_timeout deplete socket send buffer timeout ( 0 disabled, > 0 wait for timeout and check unset/unack datas)
pthread_mutex_t eventbolt mutex for threaded access of state event
char * key openssl key file
N_SOCKET link networking socket
const SSL_METHOD * method SSL method container.
int mode NETWORK mode , 1 listening, 0 connecting.
int nb_pending Nb pending connection,if listening.
int nb_running_threads nb running threads, if > 0 thread engine is still running
LIST * pools pointers to network pools if members of any
LIST * recv_buf reveicing buffer (for incomming usage)
netw_func recv_data receive func ptr
pthread_t recv_thr receiving thread
pthread_mutex_t recvbolt mutex for threaded access of recv buf
sem_t send_blocker block sending func
LIST * send_buf sending buffer (for outgoing queuing )
netw_func send_data send func ptr
int send_queue_consecutive_wait send queue consecutive pool interval, used when there are still items to send, in usec
pthread_t send_thr sending thread
pthread_mutex_t sendbolt mutex for threaded access of send_buf
int so_keepalive so keepalive state
int so_linger close lingering value (-1 disabled, 0 force close, >0 linger )
int so_rcvbuf size of the socket recv buffer, 0 untouched, else size in bytes
int so_rcvtimeo send timeout value
int so_reuseaddr so reuseaddr state
int so_sndbuf size of the socket send buffer, 0 untouched, else size in bytes
int so_sndtimeo send timeout value
SSL * ssl SSL handle.
uint32_t state state of the connection , NETW_RUN, NETW_QUIT, NETW_STOP , NETW_ERR
int tcpnodelay state of naggle algorythm, 0 untouched, 1 forcibly disabled
int threaded_engine_status Threaded network engine state for this network.

NETW_THR_ENGINE_STARTED or NETW_THR_ENGINE_STOPPED

int user_id if part of a user property, id of the user
int wait_close_timeout network wait close timeout value ( < 1 disabled, >= 1 timeout sec )

◆ NETWORK_HTTP_INFO

struct NETWORK_HTTP_INFO

structure for splitting HTTP requests

Examples
ex_network_ssl.c.

Definition at line 339 of file n_network.h.

+ Collaboration diagram for NETWORK_HTTP_INFO:
Data Fields
char * body
size_t content_length
char content_type[256]
char * type

◆ NETWORK_POOL

struct NETWORK_POOL

structure of a network pool

Definition at line 329 of file n_network.h.

+ Collaboration diagram for NETWORK_POOL:
Data Fields
HASH_TABLE * pool table of clients
pthread_rwlock_t rwlock thread safety

Macro Definition Documentation

◆ _OPEN_SYS_SOCK_IPV6

#define _OPEN_SYS_SOCK_IPV6   1

Definition at line 185 of file n_network.h.

◆ HEAD_CODE

#define HEAD_CODE   3

Code of a HEAD message.

Definition at line 42 of file n_network.h.

◆ HEAD_SIZE

#define HEAD_SIZE   10

Size of a HEAD message.

Definition at line 40 of file n_network.h.

◆ N_ENUM_netw_code_type

#define N_ENUM_netw_code_type (   _)
Value:
_(NETW_CLIENT, 2) \
_(NETW_SERVER, 4) \
_(NETW_RESTART_TIMER, 8) \
_(NETW_EMPTY_SENDBUF, 16) \
_(NETW_EMPTY_RECVBUF, 32) \
_(NETW_RUN, 64) \
_(NETW_EXIT_ASKED, 128) \
_(NETW_EXITED, 256) \
_(NETW_ERROR, 512) \
_(NETW_ENCRYPT_NONE, 1024) \
_(NETW_ENCRYPT_OPENSSL, 2048) \
_(NETW_THR_ENGINE_STARTED, 4096) \
_(NETW_THR_ENGINE_STOPPED, 8192) \
_(NETW_DESTROY_RECVBUF, 16384) \
_(NETW_DESTROY_SENDBUF, 32768)

Network codes definition.

Definition at line 192 of file n_network.h.

◆ NETW_MAX_RETRIES

#define NETW_MAX_RETRIES   128

Send or recv max number of retries.

Definition at line 48 of file n_network.h.

◆ NETW_SOCKET_DISCONNECTED

#define NETW_SOCKET_DISCONNECTED   -2

Code for a disconnected recv.

Definition at line 46 of file n_network.h.

◆ NETW_SOCKET_ERROR

#define NETW_SOCKET_ERROR   -1

code for a socekt error

Definition at line 44 of file n_network.h.

◆ NETWORK_CONSECUTIVE_SEND_WAIT

#define NETWORK_CONSECUTIVE_SEND_WAIT   2048

Flag to set consecutive send waiting timeout

Definition at line 36 of file n_network.h.

◆ NETWORK_DEPLETE_QUEUES_TIMEOUT

#define NETWORK_DEPLETE_QUEUES_TIMEOUT   1024

Flag to set network queues depletion timeout

Definition at line 34 of file n_network.h.

◆ NETWORK_DEPLETE_SOCKET_TIMEOUT

#define NETWORK_DEPLETE_SOCKET_TIMEOUT   512

Flag to set send buffer depletion timeout

Definition at line 32 of file n_network.h.

◆ NETWORK_IPALL

#define NETWORK_IPALL   0

Flag for auto detection by OS of ip version to use.

Examples
ex_network.c, and ex_network_ssl.c.

Definition at line 26 of file n_network.h.

◆ NETWORK_IPV4

#define NETWORK_IPV4   1

Flag to force IPV4

Examples
ex_network.c, and ex_network_ssl.c.

Definition at line 28 of file n_network.h.

◆ NETWORK_IPV6

#define NETWORK_IPV6   2

Flag to force IPV6

Examples
ex_network.c, and ex_network_ssl.c.

Definition at line 30 of file n_network.h.

◆ NETWORK_WAIT_CLOSE_TIMEOUT

#define NETWORK_WAIT_CLOSE_TIMEOUT   4096

Flag to set network closing wait timeout.

Examples
ex_network.c.

Definition at line 38 of file n_network.h.

◆ SOCKET_SIZE_FORMAT

#define SOCKET_SIZE_FORMAT   "%d"

socket associated printf style

Examples
ex_network_ssl.c.

Definition at line 63 of file n_network.h.

Typedef Documentation

◆ netw_func

typedef ssize_t(* netw_func) (void *, char *, uint32_t)

send/recv func ptr type

Definition at line 213 of file n_network.h.

◆ SOCKET

typedef int SOCKET

default socket declaration

socket type for windows

Definition at line 61 of file n_network.h.

Enumeration Type Documentation

◆ __netw_code_type

Network codes declaration.

Definition at line 210 of file n_network.h.

Function Documentation

◆ __netw_code_type_fromString()

__netw_code_type __netw_code_type_fromString ( const char *  str_value)

Definition at line 23 of file n_network.c.

◆ __netw_code_type_fromStringEx()

__netw_code_type __netw_code_type_fromStringEx ( const char *  str_value,
int  index 
)

Definition at line 23 of file n_network.c.

◆ __netw_code_type_isStringValid()

bool __netw_code_type_isStringValid ( const char *  str_value)

Definition at line 23 of file n_network.c.

◆ __netw_code_type_isValid()

bool __netw_code_type_isValid ( __netw_code_type  value)

network error code

Definition at line 23 of file n_network.c.

◆ __netw_code_type_toString()

const char * __netw_code_type_toString ( __netw_code_type  value)

Definition at line 23 of file n_network.c.

◆ deplete_send_buffer()

int deplete_send_buffer ( int  fd,
int  timeout 
)

wait until the socket is empty or timeout, checking each 100 msec.

Not as reliable as expected.

Parameters
fdsocket descriptor
timeouttimeout value in msec , value <= 0 : disabled
Returns
0 if timeout or unsupported, -1 on error or the amount of remaining datas in bytes

Definition at line 1472 of file n_network.c.

References LOG_ERR, and n_log.

Referenced by netw_close().

+ Here is the caller graph for this function:

◆ htonst()

size_t htonst ( size_t  value)

host to network size_t

network to host size_t

Parameters
valuethe size_t value to convert to network order
Returns
network ordered value
Parameters
valuethe size_t value to convert to host order
Returns
host ordered value

Definition at line 30 of file n_network.c.

◆ netw_accept_from()

NETWORK * netw_accept_from ( NETWORK from)

make a normal blocking 'accept' .

Network 'from' must be allocated with netw_make_listening.

Parameters
fromThe network from which to obtaion the connection
Returns
NULL

Definition at line 1908 of file n_network.c.

References MAX_LIST_ITEMS, and netw_accept_from_ex().

+ Here is the call graph for this function:

◆ netw_accept_from_ex()

NETWORK * netw_accept_from_ex ( NETWORK from,
size_t  send_list_limit,
size_t  recv_list_limit,
int  blocking,
int *  retval 
)

make a normal 'accept' .

Network 'from' must be allocated with netw_make_listening.

Parameters
fromthe network from where we accept
send_list_limitInternal sending list maximum number of item. 0 for unrestricted
recv_list_limitInternal receiving list maximum number of item. 0 for unrestricted
blockingset to -1 to make it non blocking, to 0 for blocking, else it's the select timeout value in msecs.
retvalEAGAIN ou EWOULDBLOCK or neterrno (use netstrerr( retval) to obtain a string describing the code )
Returns
NULL on failure, if not a pointer to the connected network

Definition at line 1753 of file n_network.c.

References __n_assert, _str, NETWORK::crypto_algo, NETWORK::ctx, FreeNoLog, get_in_addr(), N_SOCKET::ip, N_SOCKET::is_blocking, NETWORK::link, LOG_DEBUG, LOG_ERR, Malloc, n_log, neterrno, netstrerror, netw_close(), netw_init_wsa(), netw_new(), netw_set(), netw_set_blocking(), netw_setsockopt(), N_SOCKET::port, N_SOCKET::raddr, NETWORK::recv_data, recv_ssl_data(), NETWORK::send_data, send_ssl_data(), N_SOCKET::sock, and NETWORK::ssl.

Referenced by netw_accept_from(), and netw_accept_nonblock_from().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_accept_nonblock_from()

NETWORK * netw_accept_nonblock_from ( NETWORK from,
int  blocking 
)

make a normal blocking 'accept' .

Network 'from' must be allocated with netw_make_listening.

Parameters
fromThe network from which to obtaion the connection
blockingset to -1 to make it non blocking, to 0 for blocking, else it's the select timeout value in mseconds.
Returns
NULL

Definition at line 1918 of file n_network.c.

References MAX_LIST_ITEMS, and netw_accept_from_ex().

+ Here is the call graph for this function:

◆ netw_add_msg()

int netw_add_msg ( NETWORK netw,
N_STR msg 
)

Add a message to send in aimed NETWORK.

Parameters
netwNETWORK where add the message
msgthe message to add
Returns
TRUE if success FALSE on error

Definition at line 1928 of file n_network.c.

References __n_assert, N_STR::data, free_nstr_ptr(), N_STR::length, list_push(), LOG_ERR, n_log, NETWORK::send_blocker, NETWORK::send_buf, and NETWORK::sendbolt.

Referenced by netw_pool_broadcast(), netw_send_ident(), netw_send_ping(), netw_send_position(), netw_send_quit(), netw_send_string_to(), netw_send_string_to_all(), send_net_datas(), userlist_add_msg_to_ex(), userlist_send_waiting_msgs(), and userlist_user_send_waiting_msgs().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_add_msg_ex()

int netw_add_msg_ex ( NETWORK netw,
char *  str,
unsigned int  length 
)

Add a message to send in aimed NETWORK.

Parameters
netwNETWORK where add the message
strthe message to add
lengththe size of the message to add
Returns
TRUE if success FALSE on error

Definition at line 1959 of file n_network.c.

References __n_assert, N_STR::data, free_nstr_ptr(), N_STR::length, list_push(), LOG_ERR, Malloc, n_log, NETWORK::send_blocker, NETWORK::send_buf, NETWORK::sendbolt, and N_STR::written.

+ Here is the call graph for this function:

◆ netw_build_http_response()

int netw_build_http_response ( N_STR **  http_response,
int  status_code,
const char *  server_name,
const char *  content_type,
char *  additional_headers,
N_STR body 
)

function to dynamically generate an HTTP response

Parameters
http_responsepointer to a N_STR *response. Will be set to the response, or NULL
status_coderesponse http status code
server_nameresponse 'Server' in headers
content_typeresponse 'Content-Type' in headers
additional_headersadditional response headers, can be "" if no additional headers, else 'backslash r backslash n' separated key: values
bodyresponse 'Server' in headers
Returns
TRUE if the http_response was built, FALSE if not

Definition at line 3542 of file n_network.c.

References __n_assert, LOG_DEBUG, n_log, netw_get_http_date(), netw_get_http_status_message(), nstrcat, nstrprintf, and N_STR::written.

+ Here is the call graph for this function:

◆ netw_calculate_urlencoded_size()

size_t netw_calculate_urlencoded_size ( const char *  str,
size_t  len 
)

function to calculate the required size for the URL-encoded string

Parameters
strclear string from which we want to know the urlencoded size
lenlength of the input string
Returns
the urlencoded size if the string was urlencoded

Definition at line 3130 of file n_network.c.

References __n_assert.

Referenced by netw_urlencode().

+ Here is the caller graph for this function:

◆ netw_close()

int netw_close ( NETWORK **  netw)

Closing a specified Network, destroy queues, free the structure.

Parameters
netwA NETWORK *network to close
Returns
TRUE on success , FALSE on failure

Definition at line 1503 of file n_network.c.

References __n_assert, _str, deplete_send_buffer(), Free, FreeNoLog, list_destroy(), list_foreach, LOG_DEBUG, LOG_ERR, N_ENUM_ENTRY, n_log, neterrno, netstrerror, netw_get_state(), netw_pool_remove(), netw_set(), and netw_stop_thr_engine().

Referenced by manage_client(), netw_accept_from_ex(), netw_make_listening(), netw_new(), and netw_set_blocking().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_connect()

int netw_connect ( NETWORK **  netw,
char *  host,
char *  port,
int  ip_version 
)

Use this to connect a NETWORK to any listening one, unrestricted send/recv lists.

Parameters
netwa NETWORK *object
hostHost or IP to connect to
portPort to use to connect
ip_versionNETWORK_IPALL for both ipv4 and ipv6 , NETWORK_IPV4 or NETWORK_IPV6
Returns
TRUE or FALSE

Definition at line 1359 of file n_network.c.

References _str, LOG_INFO, MAX_LIST_ITEMS, and n_log.

◆ netw_connect_ex()

int netw_connect_ex ( NETWORK **  netw,
char *  host,
char *  port,
size_t  send_list_limit,
size_t  recv_list_limit,
int  ip_version,
char *  ssl_key_file,
char *  ssl_cert_file 
)

Definition at line 1222 of file n_network.c.

◆ netw_destroy_pool()

int netw_destroy_pool ( NETWORK_POOL **  netw_pool)

free a NETWORK_POOL *pool

Parameters
netw_poolthe address of a NETWORK_POOL *pointer to free
Returns
TRUE or FALSE

Definition at line 2846 of file n_network.c.

References __n_assert, destroy_ht(), Free, rw_lock_destroy, unlock, and write_lock.

+ Here is the call graph for this function:

◆ netw_extract_http_info()

NETWORK_HTTP_INFO netw_extract_http_info ( char *  request)

extract a lot of informations, mostly as pointers, and populate a NETWORK_HTTP_INFO structure

Parameters
requestthe raw http request string
Returns
a NETWORK_HTTP_INFO structure, filled with zeros in case of errors

Definition at line 3219 of file n_network.c.

References __n_assert, LOG_ERR, n_log, and netw_extract_http_request_type().

+ Here is the call graph for this function:

◆ netw_extract_http_request_type()

char * netw_extract_http_request_type ( const char *  request)

function to extract the request method from an http request

Parameters
requestthe raw http request
Returns
a char *copy of the request type, or NULL

Definition at line 3186 of file n_network.c.

References __n_assert.

Referenced by netw_extract_http_info().

+ Here is the caller graph for this function:

◆ netw_get_http_date()

int netw_get_http_date ( char *  buffer,
size_t  buffer_size 
)

helper function to generate the current date in HTTP format

Parameters
bufferthe target buffer, must be big enough to hold the date
buffer_sizethe size of the target buffer
Returns
TRUE or FALSE

Definition at line 3510 of file n_network.c.

References __n_assert, LOG_ERR, and n_log.

Referenced by netw_build_http_response().

+ Here is the caller graph for this function:

◆ netw_get_http_status_message()

const char * netw_get_http_status_message ( int  status_code)

helper function to convert status code to a human-readable message

Parameters
status_codethe code to convert into a human-readable message
Returns
a pointer to the human readable message. 'Unknown' is returned if the status code is not supported

Definition at line 3486 of file n_network.c.

Referenced by netw_build_http_response().

+ Here is the caller graph for this function:

◆ netw_get_msg()

N_STR * netw_get_msg ( NETWORK netw)

Get a message from aimed NETWORK.

Parameters
netwNETWORK where get the msg
Returns
NULL or a filled N_STR

Definition at line 1995 of file n_network.c.

References __n_assert, list_shift, NETWORK::recv_buf, and NETWORK::recvbolt.

Referenced by manage_client().

+ Here is the caller graph for this function:

◆ netw_get_queue_status()

int netw_get_queue_status ( NETWORK netw,
size_t *  nb_to_send,
size_t *  nb_to_read 
)

retrieve network send queue status

Parameters
netwNETWORK object
nb_to_sendNumber of messages still in send buffer (not yet submitted to kernel)
nb_to_readNumber of message already read by the kernel, waiting in the local message list
Returns
TRUE or FALSE

Definition at line 2808 of file n_network.c.

References __n_assert, LIST::nb_items, NETWORK::recv_buf, NETWORK::recvbolt, NETWORK::send_buf, and NETWORK::sendbolt.

◆ netw_get_state()

int netw_get_state ( NETWORK netw,
uint32_t *  state,
int *  thr_engine_status 
)

Get the state of a network.

Parameters
netwThe NETWORK *connection to query
statepointer to network status storage , NETW_RUN , NETW_EXIT_ASKED , NETW_EXITED
thr_engine_statuspointer to network thread engine status storage ,NETW_THR_ENGINE_STARTED , NETW_THR_ENGINE_STOPPED
Returns
TRUE or FALSE

Definition at line 1388 of file n_network.c.

References LOG_ERR, n_log, NETWORK::sendbolt, NETWORK::state, and NETWORK::threaded_engine_status.

Referenced by manage_client(), netw_close(), netw_recv_func(), netw_send_func(), and netw_stop_thr_engine().

+ Here is the caller graph for this function:

◆ netw_get_url_from_http_request()

int netw_get_url_from_http_request ( const char *  request,
char *  url,
size_t  size 
)

Helper function to extract the URL from the HTTP request line.

Parameters
requestraw http request to decode
urlpointer to an allocated char *holder
sizethe size of the url holder
Returns
TRUE or FALSE

Definition at line 3301 of file n_network.c.

References __n_assert.

◆ netw_guess_http_content_type()

const char * netw_guess_http_content_type ( const char *  url)

function to guess the content type based on URL extension

Parameters
urlthe url from which we want to guess the content type
Returns
a pointer to the detected content type. It will be 'unknown' if no detection worked

Definition at line 3422 of file n_network.c.

References __n_assert.

◆ netw_info_destroy()

int netw_info_destroy ( NETWORK_HTTP_INFO  http_request)

destroy a NETWORK_HTTP_INFO loaded informations

Parameters
http_requestthe parsed NETWORK_HTTP_INFO request
Returns
TRUE ;

Definition at line 3288 of file n_network.c.

References FreeNoLog.

◆ netw_init_openssl()

int netw_init_openssl ( void  )

Do not directly use, internal api.

Initialize openssl

Returns
TRUE

Definition at line 1116 of file n_network.c.

Referenced by netw_set_crypto().

+ Here is the caller graph for this function:

◆ netw_init_wsa()

int netw_init_wsa ( int  mode,
int  v1,
int  v2 
)

Do not directly use, internal api.

Initialize winsock dll loading on windows if needed.

Parameters
mode1 for opening 0 for close 2 for status
v1First digit of version requested
v2Second digit of version requested
Returns
TRUE on success FALSE on error

Definition at line 693 of file n_network.c.

Referenced by netw_accept_from_ex(), and netw_make_listening().

+ Here is the caller graph for this function:

◆ netw_make_listening()

int netw_make_listening ( NETWORK **  netw,
char *  addr,
char *  port,
int  nbpending,
int  ip_version 
)

Make a NETWORK be a Listening network.

Parameters
netwA NETWORK **network to make listening
addrAddress to bind, NULL for automatic address filling
portFor choosing a PORT to listen to
nbpendingNumber of pending connection when listening
ip_versionNETWORK_IPALL for both ipv4 and ipv6 , NETWORK_IPV4 or NETWORK_IPV6
Returns
TRUE on success, FALSE on error

Definition at line 1644 of file n_network.c.

References __n_assert, _str, FreeNoLog, get_in_addr(), LOG_ERR, Malloc, MAX_LIST_ITEMS, n_log, neterrno, netstrerror, netw_close(), netw_init_wsa(), netw_new(), netw_set(), netw_setsockopt(), NETWORK_IPV4, and NETWORK_IPV6.

+ Here is the call graph for this function:

◆ netw_new_pool()

NETWORK_POOL * netw_new_pool ( size_t  nb_min_element)

return a new network pool of nb_min_element

Parameters
nb_min_elementsize of internal hash table for network pool
Returns
a new NETWORK_POOL or NULL

Definition at line 2827 of file n_network.c.

References __n_assert, Free, init_lock, Malloc, new_ht(), NETWORK_POOL::pool, and NETWORK_POOL::rwlock.

+ Here is the call graph for this function:

◆ netw_parse_post_data()

HASH_TABLE * netw_parse_post_data ( const char *  post_data)

Function to parse POST data.

Parameters
post_datathe post data to parse
Returns
An allocated HASH_TABLE with post data as keys/values, or NULL

Definition at line 3375 of file n_network.c.

References __n_assert, ht_put_string(), netw_urldecode(), and new_ht().

+ Here is the call graph for this function:

◆ netw_pool_add()

int netw_pool_add ( NETWORK_POOL netw_pool,
NETWORK netw 
)

add a NETWORK *netw to a NETWORK_POOL *pool

Parameters
netw_pooltargeted network pool
netwnetwork to add
Returns
TRUE or FALSE

Definition at line 2878 of file n_network.c.

References __n_assert, _nstr, free_nstr, ht_get_ptr(), ht_put_ptr(), NETWORK::link, list_push(), LOG_DEBUG, LOG_ERR, n_log, netw_pool_netw_close(), nstrprintf, NETWORK_POOL::pool, NETWORK::pools, NETWORK_POOL::rwlock, N_SOCKET::sock, unlock, and write_lock.

+ Here is the call graph for this function:

◆ netw_pool_broadcast()

int netw_pool_broadcast ( NETWORK_POOL netw_pool,
NETWORK from,
N_STR net_msg 
)

add net_msg to all network in netork pool

Parameters
netw_pooltargeted network pool
fromsource network
net_msgmesage to broadcast
Returns
TRUE or FALSE

Definition at line 2956 of file n_network.c.

References __n_assert, hash_val, ht_foreach, NETWORK::link, netw_add_msg(), nstrdup(), NETWORK_POOL::pool, read_lock, NETWORK_POOL::rwlock, N_SOCKET::sock, and unlock.

+ Here is the call graph for this function:

◆ netw_pool_nbclients()

size_t netw_pool_nbclients ( NETWORK_POOL netw_pool)

return the number of networks in netw_pool

Parameters
netw_pooltargeted network pool
Returns
0 or the number of networks in netw_pool

Definition at line 2980 of file n_network.c.

References __n_assert, HASH_TABLE::nb_keys, NETWORK_POOL::pool, read_lock, NETWORK_POOL::rwlock, and unlock.

◆ netw_pool_netw_close()

void netw_pool_netw_close ( void *  netw_ptr)

close a network from a network pool

Parameters
netw_ptrNETWORK *network pointer

Definition at line 2865 of file n_network.c.

References __n_assert, NETWORK::link, LOG_DEBUG, n_log, and N_SOCKET::sock.

Referenced by netw_pool_add().

+ Here is the caller graph for this function:

◆ netw_pool_remove()

int netw_pool_remove ( NETWORK_POOL netw_pool,
NETWORK netw 
)

remove a NETWORK *netw to a NETWORK_POOL *pool

Parameters
netw_pooltargeted network pool
netwnetwork to remove
Returns
TRUE or FALSE

Definition at line 2921 of file n_network.c.

References __n_assert, _nstr, free_nstr, ht_remove(), NETWORK::link, list_search(), LOG_DEBUG, LOG_ERR, n_log, nstrprintf, NETWORK_POOL::pool, NETWORK::pools, remove_list_node, NETWORK_POOL::rwlock, N_SOCKET::sock, unlock, and write_lock.

Referenced by netw_close().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_recv_func()

void * netw_recv_func ( void *  NET)

To Thread Receiving function.

Parameters
NETthe NETWORK connection to use
Returns
NULL ;

Definition at line 2223 of file n_network.c.

References __n_assert, _str, N_STR::data, NETWORK::eventbolt, free_nstr_ptr(), N_SOCKET::ip, N_STR::length, NETWORK::link, list_push(), LOG_DEBUG, LOG_ERR, Malloc, n_log, NETWORK::nb_running_threads, netw_get_state(), netw_set(), NETW_SOCKET_DISCONNECTED, NETWORK::recv_buf, NETWORK::recv_data, NETWORK::recvbolt, N_SOCKET::sock, and N_STR::written.

Referenced by netw_start_thr_engine().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_send_func()

void * netw_send_func ( void *  NET)

Thread send function.

Parameters
NETthe NETWORK connection to use, casted into (void*)
Returns
NULL

Definition at line 2102 of file n_network.c.

References __n_assert, _str, N_STR::data, NETWORK::eventbolt, free_nstr, N_SOCKET::ip, N_STR::length, NETWORK::link, list_shift, LOG_DEBUG, LOG_ERR, n_log, NETWORK::nb_running_threads, netw_get_state(), netw_set(), NETW_SOCKET_DISCONNECTED, NETWORK::send_blocker, NETWORK::send_buf, NETWORK::send_data, NETWORK::send_queue_consecutive_wait, NETWORK::sendbolt, N_SOCKET::sock, NETWORK::state, u_sleep(), and N_STR::written.

Referenced by netw_start_thr_engine().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_send_ident()

int netw_send_ident ( NETWORK netw,
int  type,
int  id,
N_STR name,
N_STR passwd 
)

Add a formatted NETWMSG_IDENT message to the specified network.

Parameters
netwThe aimed NETWORK where we want to add something to send
typetype of identification ( NETW_IDENT_REQUEST , NETW_IDENT_NEW )
idThe ID of the sending client
nameUsername
passwdPassword
Returns
TRUE or FALSE

Definition at line 3031 of file n_network.c.

References __n_assert, netmsg_make_ident(), and netw_add_msg().

+ Here is the call graph for this function:

◆ netw_send_ping()

int netw_send_ping ( NETWORK netw,
int  type,
int  id_from,
int  id_to,
int  time 
)

Add a ping reply to the network.

Parameters
netwThe aimed NETWORK where we want to add something to send
id_fromIdentifiant of the sender
id_toIdentifiant of the destination, -1 if the serveur itslef is targetted
timeThe time it was when the ping was sended
typeNETW_PING_REQUEST or NETW_PING_REPLY
Returns
TRUE or FALSE

Definition at line 3012 of file n_network.c.

References __n_assert, netmsg_make_ping(), and netw_add_msg().

+ Here is the call graph for this function:

◆ netw_send_position()

int netw_send_position ( NETWORK netw,
int  id,
double  X,
double  Y,
double  vx,
double  vy,
double  acc_x,
double  acc_y,
int  time_stamp 
)

Add a formatted NETWMSG_IDENT message to the specified network.

Parameters
netwThe aimed NETWORK where we want to add something to send
idThe ID of the sending client
XX position inside a big grid
YY position inside a big grid
vxX speed
vyY speed
acc_xY acceleration
acc_yX acceleration
time_stampCurrent Time when sending (for some delta we would want to compute )
Returns
TRUE or FALSE

Definition at line 3055 of file n_network.c.

References __n_assert, netmsg_make_position_msg(), and netw_add_msg().

+ Here is the call graph for this function:

◆ netw_send_quit()

int netw_send_quit ( NETWORK netw)

Add a formatted NETMSG_QUIT message to the specified network.

Parameters
netwThe aimed NETWORK
Returns
TRUE or FALSE

Definition at line 3113 of file n_network.c.

References __n_assert, netmsg_make_quit_msg(), and netw_add_msg().

+ Here is the call graph for this function:

◆ netw_send_string_to()

int netw_send_string_to ( NETWORK netw,
int  id_to,
N_STR name,
N_STR chan,
N_STR txt,
int  color 
)

Add a string to the network, aiming a specific user.

Parameters
netwThe aimed NETWORK where we want to add something to send
id_toThe ID of the targetted client
nameSender Name
chanchannel to use
txtSender text
colorSender text color
Returns
TRUE or FALSE

Definition at line 3077 of file n_network.c.

References __n_assert, netmsg_make_string_msg(), netw_add_msg(), and NETWORK::user_id.

+ Here is the call graph for this function:

◆ netw_send_string_to_all()

int netw_send_string_to_all ( NETWORK netw,
N_STR name,
N_STR chan,
N_STR txt,
int  color 
)

Add a string to the network, aiming all server-side users.

Parameters
netwThe aimed NETWORK where we want to add something to send
nameName of user
chanTarget Channel, if any. Pass "ALL" to target the default channel
txtThe text to send
colorThe color of the text
Returns
TRUE or FALSE;

Definition at line 3097 of file n_network.c.

References __n_assert, netmsg_make_string_msg(), netw_add_msg(), and NETWORK::user_id.

+ Here is the call graph for this function:

◆ netw_set()

int netw_set ( NETWORK netw,
int  flag 
)

Restart or reset the specified network ability.

Parameters
netwThe NETWORK *connection to modify
flagNETW_EMPTY_SENDBUF, NETW_EMPTY_RECVBUF, NETW_RUN , NETW_EXIT_ASKED , NETW_EXITED
Returns
TRUE or FALSE

Definition at line 1409 of file n_network.c.

References NETWORK::eventbolt, list_destroy(), list_empty(), NETWORK::mode, NETWORK::recv_buf, NETWORK::recvbolt, NETWORK::send_blocker, NETWORK::send_buf, NETWORK::sendbolt, NETWORK::state, and NETWORK::threaded_engine_status.

Referenced by netw_accept_from_ex(), netw_close(), netw_make_listening(), netw_recv_func(), netw_send_func(), and netw_stop_thr_engine().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_set_blocking()

int netw_set_blocking ( NETWORK netw,
unsigned long int  is_blocking 
)

Modify blocking socket mode.

Parameters
netwThe network to configure
is_blocking0 NON BLOCk , 1 BLOCK
Returns
TRUE or FALSE

Definition at line 739 of file n_network.c.

References __n_assert, _str, FreeNoLog, N_SOCKET::is_blocking, NETWORK::link, LOG_DEBUG, LOG_ERR, n_log, neterrno, netstrerror, netw_close(), and N_SOCKET::sock.

Referenced by netw_accept_from_ex().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_set_crypto()

int netw_set_crypto ( NETWORK netw,
char *  key,
char *  certificate 
)

activate SSL encryption on selected network, using key and certificate

Parameters
keypath to the key file
certificatepath to the certificate file
Returns
TRUE of FALSE

Definition at line 1160 of file n_network.c.

References __n_assert, NETWORK::certificate, NETWORK::crypto_algo, NETWORK::ctx, NETWORK::key, NETWORK::link, NETWORK::method, netw_init_openssl(), NETWORK::recv_data, recv_ssl_data(), NETWORK::send_data, send_ssl_data(), and N_SOCKET::sock.

+ Here is the call graph for this function:

◆ netw_set_user_id()

int netw_set_user_id ( NETWORK netw,
int  id 
)

associate an id and a network

Parameters
netwtargeted network
idid we want to associated with
Returns
TRUE or FALSE

Definition at line 2997 of file n_network.c.

References __n_assert, and NETWORK::user_id.

◆ netw_setsockopt()

int netw_setsockopt ( NETWORK netw,
int  optname,
int  value 
)

Modify common socket options on the given netw.

Parameters
netwThe socket to configure
optnameNETWORK_DEPLETE_SOCKET_TIMEOUT,NETWORK_DEPLETE_QUEUES_TIMEOUT,NETWORK_WAIT_CLOSE_TIMEOUT,NETWORK_CONSECUTIVE_SEND_WAIT ,SO_REUSEADDR,SO_REUSEPORT,SO_KEEPALIVE,TCP_NODELAY,SO_SNDBUF,SO_RCVBUF,SO_LINGER,SO_RCVTIMEO,SO_SNDTIMEO,TCP_USER_TIMEOUT. Please refer to man setsockopt for details
valueThe value of the socket parameter
Warning
Beware of TCP_USER_TIMEOUT, it's causing hangs on some systems. It should not be used lightly and tested. It looks like it's messing up with TCP_KEEPALIVE
Returns
TRUE or FALSE

Definition at line 794 of file n_network.c.

References __n_assert, _str, NETWORK::deplete_queues_timeout, NETWORK::deplete_socket_timeout, FreeNoLog, NETWORK::link, LOG_ERR, n_log, neterrno, netstrerror, NETWORK_CONSECUTIVE_SEND_WAIT, NETWORK_DEPLETE_QUEUES_TIMEOUT, NETWORK_DEPLETE_SOCKET_TIMEOUT, NETWORK_WAIT_CLOSE_TIMEOUT, NETWORK::send_queue_consecutive_wait, NETWORK::so_keepalive, NETWORK::so_linger, NETWORK::so_rcvbuf, NETWORK::so_rcvtimeo, NETWORK::so_reuseaddr, NETWORK::so_sndbuf, NETWORK::so_sndtimeo, N_SOCKET::sock, NETWORK::tcpnodelay, and NETWORK::wait_close_timeout.

Referenced by netw_accept_from_ex(), and netw_make_listening().

+ Here is the caller graph for this function:

◆ netw_ssl_connect()

int netw_ssl_connect ( NETWORK **  netw,
char *  host,
char *  port,
int  ip_version,
char *  ssl_key_file,
char *  ssl_cert_file 
)

Use this to connect a NETWORK to any listening one, unrestricted send/recv lists.

Parameters
netwa NETWORK *object
hostHost or IP to connect to
portPort to use to connect
ip_versionNETWORK_IPALL for both ipv4 and ipv6 , NETWORK_IPV4 or NETWORK_IPV6
ssl_key_fileNULL or the path to the SSL key file to use. If set, a ssl_cert_file must also be provided
ssl_cert_fileNULL or the path to the SSL certificate file to use. If set, a ssl_key_file must also be provided
Returns
TRUE or FALSE

Definition at line 1375 of file n_network.c.

References _str, LOG_INFO, MAX_LIST_ITEMS, and n_log.

◆ netw_start_thr_engine()

int netw_start_thr_engine ( NETWORK netw)

Start the NETWORK netw Threaded Engine.

Create a sending & receiving thread.

Parameters
netwThe aimed NETWORK connection to start receiving data
Returns
TRUE on success FALSE on failure

Definition at line 2067 of file n_network.c.

References __n_assert, _str, NETWORK::eventbolt, N_SOCKET::ip, NETWORK::link, LOG_ERR, n_log, NETWORK::nb_running_threads, netw_recv_func(), netw_send_func(), NETWORK::recv_thr, NETWORK::send_thr, and NETWORK::threaded_engine_status.

Referenced by manage_client().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_stop_thr_engine()

int netw_stop_thr_engine ( NETWORK netw)

Stop a NETWORK connection sending and receing thread.

Parameters
netwThe aimed NETWORK conection to stop
Returns
TRUE on success FALSE on failure

Definition at line 2340 of file n_network.c.

References __n_assert, NETWORK::link, LOG_DEBUG, LOG_ERR, n_log, netw_get_state(), netw_set(), NETWORK::recv_thr, NETWORK::send_blocker, NETWORK::send_thr, and N_SOCKET::sock.

Referenced by netw_close().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ netw_unload_openssl()

int netw_unload_openssl ( void  )

Do not directly use, internal api.

Initialize openssl

Returns
TRUE

Definition at line 1140 of file n_network.c.

◆ netw_urldecode()

char * netw_urldecode ( const char *  str)

Function to decode URL-encoded data.

Parameters
strinput string to decode
Returns
url decoded string

Definition at line 3338 of file n_network.c.

References __n_assert, Free, LOG_ERR, and n_log.

Referenced by netw_parse_post_data().

+ Here is the caller graph for this function:

◆ netw_urlencode()

char * netw_urlencode ( const char *  str,
size_t  len 
)

function to perform URL encoding

Parameters
strinput string
leninput string length
Returns
urlencoded char *string or NULL

Definition at line 3153 of file n_network.c.

References __n_assert, and netw_calculate_urlencoded_size().

+ Here is the call graph for this function:

◆ netw_wait_msg()

N_STR * netw_wait_msg ( NETWORK netw,
unsigned int  refresh,
size_t  timeout 
)

Definition at line 2016 of file n_network.c.

◆ ntohst()

size_t ntohst ( size_t  value)

Definition at line 47 of file n_network.c.

◆ recv_data()

ssize_t recv_data ( void *  netw,
char *  buf,
uint32_t  n 
)

recv data from the socket

Parameters
netwconnected NETWORK
bufpointer to buffer
nnumber of characters we want
Returns
NETW_SOCKET_ERROR on error, NETW_RECV_DISCONNECTED on disconnection, 'n' value on success

Definition at line 2430 of file n_network.c.

References __n_assert, _str, CALL_RETRY, FreeNoLog, LOG_DEBUG, LOG_ERR, n_log, neterrno, netstrerror, NETW_MAX_RETRIES, NETW_SOCKET_DISCONNECTED, and NETW_SOCKET_ERROR.

Referenced by netw_new().

+ Here is the caller graph for this function:

◆ recv_php()

ssize_t recv_php ( SOCKET  s,
int *  _code,
char **  buf 
)

recv data from the socket

Parameters
sconnected socket
_codepointer to store the code
bufpointer to buffer
Returns
-1 on error, size on success

Definition at line 2697 of file n_network.c.

References _str, Free, FreeNoLog, HEAD_CODE, HEAD_SIZE, LOG_ERR, Malloc, n_log, neterrno, and netstrerror.

◆ recv_ssl_data()

ssize_t recv_ssl_data ( void *  netw,
char *  buf,
uint32_t  n 
)

recv data from the socket

Parameters
netwconnected NETWORK
bufpointer to buffer
nnumber of characters we want
Returns
-1 on error, NETW_SOCKET_DISCONNECTED on disconnection n on success

Definition at line 2547 of file n_network.c.

References __n_assert, _str, FreeNoLog, LOG_ERR, n_log, neterrno, and netstrerror.

Referenced by netw_accept_from_ex(), and netw_set_crypto().

+ Here is the caller graph for this function:

◆ send_data()

ssize_t send_data ( void *  netw,
char *  buf,
uint32_t  n 
)

send data onto the socket

Parameters
netwconnected NETWORK
bufpointer to buffer
nnumber of characters we want to send
Returns
NETW_SOCKET_ERROR on error, NETW_SOCKET_DISCONNECTED on disconnection, 'n' value on success

Definition at line 2379 of file n_network.c.

References __n_assert, _str, CALL_RETRY, FreeNoLog, LOG_DEBUG, LOG_ERR, n_log, neterrno, netstrerror, NETW_MAX_RETRIES, NETW_SOCKET_DISCONNECTED, and NETW_SOCKET_ERROR.

Referenced by netw_new().

+ Here is the caller graph for this function:

◆ send_php()

ssize_t send_php ( SOCKET  s,
int  _code,
char *  buf,
int  n 
)

send data onto the socket

Parameters
sconnected socket
bufpointer to buffer
nnumber of characters we want to send
_codeCode for php decoding rule
Returns
-1 on error, n on success

Definition at line 2614 of file n_network.c.

References _str, FreeNoLog, HEAD_CODE, HEAD_SIZE, LOG_ERR, n_log, neterrno, and netstrerror.

◆ send_ssl_data()

ssize_t send_ssl_data ( void *  netw,
char *  buf,
uint32_t  n 
)

send data onto the socket

Parameters
netwconnected NETWORK in SSL mode
bufpointer to buffer
nnumber of characters we want to send
Returns
-1 on error, NETW_SOCKET_DISCONNECTED on disconnection, n on success

Definition at line 2481 of file n_network.c.

References __n_assert, _str, FreeNoLog, LOG_ERR, n_log, neterrno, and netstrerror.

Referenced by netw_accept_from_ex(), and netw_set_crypto().

+ Here is the caller graph for this function: