libwget-net(3) | wget2 | libwget-net(3) |
libwget-net - TCP sockets
int wget_net_init (void)
int wget_net_deinit (void)
struct addrinfo * wget_tcp_resolve (wget_tcp_t *tcp, const char *host,
uint16_t port)
void wget_tcp_set_tcp_fastopen (wget_tcp_t G_GNUC_WGET_UNUSED *tcp, int
G_GNUC_WGET_UNUSED tcp_fastopen)
char wget_tcp_get_tcp_fastopen (wget_tcp_t *tcp)
void wget_tcp_set_tls_false_start (wget_tcp_t *tcp, int false_start)
char wget_tcp_get_tls_false_start (wget_tcp_t *tcp)
void wget_tcp_set_dns_caching (wget_tcp_t *tcp, int caching)
int wget_tcp_get_dns_caching (wget_tcp_t *tcp)
void wget_tcp_set_protocol (wget_tcp_t *tcp, int protocol)
int wget_tcp_get_protocol (wget_tcp_t *tcp)
void wget_tcp_set_preferred_family (wget_tcp_t *tcp, int family)
int wget_tcp_get_preferred_family (wget_tcp_t *tcp)
void wget_tcp_set_family (wget_tcp_t *tcp, int family)
int wget_tcp_get_family (wget_tcp_t *tcp)
int wget_tcp_get_local_port (wget_tcp_t *tcp)
void wget_tcp_set_stats_dns (wget_stats_callback_t fn)
const void * wget_tcp_get_stats_dns (const wget_dns_stats_t type, const
void *_stats)
void wget_tcp_set_dns_timeout (wget_tcp_t *tcp, int timeout)
void wget_tcp_set_connect_timeout (wget_tcp_t *tcp, int timeout)
void wget_tcp_set_timeout (wget_tcp_t *tcp, int timeout)
int wget_tcp_get_timeout (wget_tcp_t *tcp)
void wget_tcp_set_bind_address (wget_tcp_t *tcp, const char
*bind_address)
void wget_tcp_set_ssl (wget_tcp_t *tcp, int ssl)
int wget_tcp_get_ssl (wget_tcp_t *tcp)
void wget_tcp_set_ssl_hostname (wget_tcp_t *tcp, const char *hostname)
const char * wget_tcp_get_ssl_hostname (wget_tcp_t *tcp)
wget_tcp_t * wget_tcp_init (void)
void wget_tcp_deinit (wget_tcp_t **_tcp)
int wget_tcp_ready_2_transfer (wget_tcp_t *tcp, int flags)
int wget_tcp_connect (wget_tcp_t *tcp, const char *host, uint16_t port)
int wget_tcp_tls_start (wget_tcp_t *tcp)
void wget_tcp_tls_stop (wget_tcp_t *tcp)
ssize_t wget_tcp_read (wget_tcp_t *tcp, char *buf, size_t count)
ssize_t wget_tcp_write (wget_tcp_t *tcp, const char *buf, size_t count)
ssize_t wget_tcp_vprintf (wget_tcp_t *tcp, const char *fmt, va_list
args)
ssize_t wget_tcp_printf (wget_tcp_t *tcp, const char *fmt,...)
void wget_tcp_close (wget_tcp_t *tcp)
TCP sockets and DNS cache management functions.
The following features are supported:
Most functions here take a wget_tcp_t structure as argument.
The wget_tcp_t structure represents a TCP connection. You create it with wget_tcp_init() and destroy it with wget_tcp_deinit(). You can connect to a remote host with wget_tcp_connect(), or listen for incoming connections (and accept them) with wget_tcp_listen() and wget_tcp_accept(). You end a connection with wget_tcp_close().
There are several knobs you can use to customize the behavior of most functions here. The list that follows describes the most important parameters, although you can look at the getter and setter functions here to see them all (wget_tcp_get_xxx, wget_tcp_set_xxx).
When you create a new wget_tcp_t with wget_tcp_init(), it is initialized with the following parameters:
Returns
Initialize the resources needed for network operations.
Returns
Free the resources allocated by wget_net_init().
Parameters
Returns
Resolve a host name into its IPv4/IPv6 address.
The caching parameter tells wget_tcp_resolve() to use the DNS cache as long as possible. This means that if the queried hostname is found in the cache, that will be returned without querying any actual DNS server. If no such entry is found, a DNS query is performed, and the result stored in the cache. You can enable caching with wget_tcp_set_dns_caching().
Note that if caching is false, the DNS cache will not be used at all. Not only it won't be used for looking up the hostname, but the addresses returned by the DNS server will not be stored in it either.
This function uses the following wget_tcp_t parameters:
The parameter tcp might be NULL. In that case, the aforementioned behavior is governed by global options: those set by previous calls to wget_tcp_set_dns_caching(), wget_tcp_set_family() and wget_tcp_set_preferred_family(), etc.
The returned addrinfo structure must be freed with freeaddrinfo(3). Note that if you call wget_tcp_connect(), this will be done for you when you call wget_tcp_close(). But if you call this function alone, you must take care of it.
Parameters
Enable or disable TCP Fast Open (RFC 7413), if available.
This function is a no-op on systems where TCP Fast Open is not supported.
If tcp is NULL, TCP Fast Open is enabled or disabled globally.
Parameters
Returns
Tells whether TCP Fast Open is enabled or not.
You can enable and disable it with wget_tcp_set_tcp_fastopen().
Parameters
Enable or disable TLS False Start (RFC 7918).
If tcp is NULL, TLS False Start is enabled or disabled globally.
Parameters
Returns
Tells whether TLS False Start is enabled or not.
You can enable and disable it with wget_tcp_set_tls_false_start().
Parameters
Enable or disable DNS caching for the connection provided, or globally.
The DNS cache is kept internally in memory, and is used in wget_tcp_resolve() to speed up DNS queries.
If tcp is NULL, DNS caching is enabled or disabled globally.
Parameters
Returns
Tells whether DNS caching is enabled or not.
You can enable and disable it with wget_tcp_set_dns_caching().
Parameters
Set the protocol for the connection provided, or globally.
If tcp is NULL, theprotocol will be set globally (for all connections). Otherwise, only for the provided connection (tcp).
Parameters
Returns
Get protocol used with the provided connection, or globally (if tcp is NULL).
Parameters
Tells the preferred address family that should be used when establishing a TCP connection.
wget_tcp_resolve() will favor that and pick an address of that family if possible.
If tcp is NULL, the preferred address family will be set globally.
Parameters
Returns
Get the preferred address family that was previously set with wget_tcp_set_preferred_family().
Parameters
Tell the address family that will be used when establishing a TCP connection.
wget_tcp_resolve() will pick an address of that family, or fail if it cannot find one.
If tcp is NULL, the address family will be set globally.
Parameters
Returns
Get the address family that was previously set with wget_tcp_set_family().
Parameters
Returns
Get the port number the TCP connection tcp is bound to on the local machine.
Parameters
Set callback function to be called once DNS statistics for a host are collected
Parameters
Returns
Get the specific DNS statistics information
Parameters
Set the timeout (in milliseconds) for the DNS queries.
This is the maximum time to wait until we get a response from the server.
The following two values are special:
Parameters
Set the timeout for the TCP connection.
This is the maximum time to wait until the remote host accepts our connection.
The following two values are special:
Parameters
Set the timeout (in milliseconds) for wget_tcp_read(), wget_tcp_write() and wget_tcp_accept().
The following two values are special:
Parameters
Returns
Get the timeout value that was set with wget_tcp_set_timeout().
Parameters
Set the IP address/hostname the socket tcp will bind to on the local machine when connecting to a remote host.
The hostname can explicitly set the port after a colon (':').
This is mainly relevant to wget_tcp_connect().
Parameters
Enable or disable SSL/TLS.
If tcp is NULL, TLS will be enabled globally. Otherwise, TLS will be enabled only for the provided connection.
Parameters
Returns
Tells whether TLS is enabled or not.
Parameters
Sets the TLS Server Name Indication (SNI). For more info see RFC 6066, sect. 3.
SNI basically does at the TLS layer what the Host: header field does at the application (HTTP) layer. The server might use this information to locate an appropriate X.509 certificate from a pool of certificates, or to direct the request to a specific virtual host, for instance.
Parameters
Returns
Returns the value that was set to SNI with a previous call to wget_tcp_set_ssl_hostname().
Returns
Create a new wget_tcp_t structure, that represents a TCP connection. It can be destroyed with wget_tcp_deinit().
This function does not establish or modify a TCP connection in any way. That can be done with the other functions in this file, such as wget_tcp_connect() or wget_tcp_listen() and wget_tcp_accept().
Parameters
Release a TCP connection (created with wget_tcp_init()).
The wget_tcp_t structure will be freed and _tcp will be set to NULL.
If _tcp is NULL, the SNI field will be cleared.
Does not free the internal DNS cache, so that other connections can re-use it. Call wget_dns_cache_free() if you want to free it.
Test whether the given connection (tcp) is ready to read or write.
The parameter flags can have one or both (with bitwise OR) of the following values:
Parameters
Returns
Open a TCP connection with a remote host.
This function will use TLS if it has been enabled for this wget_tcp_t. You can enable it with wget_tcp_set_ssl(). Additionally, you can also use wget_tcp_set_ssl_hostname() to set the Server Name Indication (SNI).
You can set which IP address and port on the local machine will the socket be bound to with wget_tcp_set_bind_address(). Otherwise the socket will bind to any address and port chosen by the operating system.
This function will try to use TCP Fast Open if enabled and available. If TCP Fast Open fails, it will fall back to the normal TCP handshake, without raising an error. You can enable TCP Fast Open with wget_tcp_set_tcp_fastopen().
If the connection fails, WGET_E_CONNECT is returned.
Parameters
Returns
This will typically be called by wget_tcp_accept().
If the socket is listening (e.g. wget_tcp_listen(), wget_tcp_accept()), it will expect the client to perform a TLS handshake, and fail if it doesn't.
If this is a client connection (e.g. wget_tcp_connect()), it will try perform a TLS handshake with the server.
Parameters
Stops TLS, but does not close the connection. Data will be transmitted in the clear from now on.
Parameters
Returns
Read count bytes of data from the TCP connection represented by tcp and store them in the buffer buf.
This function knows whether the provided connection is over TLS or not and it will do the right thing.
The tcp->timeout parameter is taken into account by this function as well. It specifies how long should this function wait until there's data available to read (in milliseconds). The default timeout is -1, which means to wait indefinitely.
The following two values are special:
You can set the timeout with wget_tcp_set_timeout().
In particular, the returned value will be zero if no data was available for reading before the timeout elapsed.
Parameters
Returns
Write count bytes of data from the buffer buf to the TCP connection represented by tcp.
This function knows whether the provided connection is over TLS or not and it will do the right thing.
TCP Fast Open will be used if it's available and enabled. You can enable TCP Fast Open with wget_tcp_set_tcp_fastopen().
This function honors the timeout parameter. If the write operation fails because the socket buffer is full, then it will wait at most that amount of milliseconds. If after the timeout the socket is still unavailable for writing, this function returns zero.
The following two values are special:
You can set the timeout with wget_tcp_set_timeout().
Parameters
Write data in vprintf-style format, to the connection tcp.
It uses wget_tcp_write().
Parameters
Write data in printf-style format, to the connection tcp.
It uses wget_tcp_vprintf(), which in turn uses wget_tcp_write().
Parameters
Close a TCP connection.
Generated automatically by Doxygen for wget2 from the source code.
Tue Jan 26 2021 | Version 1.99.1 |