FFmpeg  4.0
Functions
network.c File Reference
#include <fcntl.h>
#include "network.h"
#include "tls.h"
#include "url.h"
#include "libavcodec/internal.h"
#include "libavutil/avutil.h"
#include "libavutil/mem.h"
#include "libavutil/time.h"

Go to the source code of this file.

Functions

int ff_tls_init (void)
 
void ff_tls_deinit (void)
 
int ff_network_init (void)
 
int ff_network_wait_fd (int fd, int write)
 
int ff_network_wait_fd_timeout (int fd, int write, int64_t timeout, AVIOInterruptCB *int_cb)
 This works similarly to ff_network_wait_fd, but waits up to 'timeout' microseconds Uses ff_network_wait_fd in a loop. More...
 
int ff_network_sleep_interruptible (int64_t timeout, AVIOInterruptCB *int_cb)
 Waits for up to 'timeout' microseconds. More...
 
void ff_network_close (void)
 
int ff_is_multicast_address (struct sockaddr *addr)
 
static int ff_poll_interrupt (struct pollfd *p, nfds_t nfds, int timeout, AVIOInterruptCB *cb)
 
int ff_socket (int af, int type, int proto)
 
int ff_listen (int fd, const struct sockaddr *addr, socklen_t addrlen)
 Bind to a file descriptor to an address without accepting connections. More...
 
int ff_accept (int fd, int timeout, URLContext *h)
 Poll for a single connection on the passed file descriptor. More...
 
int ff_listen_bind (int fd, const struct sockaddr *addr, socklen_t addrlen, int timeout, URLContext *h)
 Bind to a file descriptor and poll for a connection. More...
 
int ff_listen_connect (int fd, const struct sockaddr *addr, socklen_t addrlen, int timeout, URLContext *h, int will_try_next)
 Connect to a file descriptor and poll for result. More...
 
static int match_host_pattern (const char *pattern, const char *hostname)
 
int ff_http_match_no_proxy (const char *no_proxy, const char *hostname)
 

Function Documentation

◆ ff_tls_init()

int ff_tls_init ( void  )

Definition at line 30 of file network.c.

Referenced by avformat_network_init().

◆ ff_tls_deinit()

void ff_tls_deinit ( void  )

Definition at line 45 of file network.c.

Referenced by avformat_network_deinit().

◆ ff_network_init()

int ff_network_init ( void  )

◆ ff_network_wait_fd()

int ff_network_wait_fd ( int  fd,
int  write 
)

◆ ff_network_wait_fd_timeout()

int ff_network_wait_fd_timeout ( int  fd,
int  write,
int64_t  timeout,
AVIOInterruptCB int_cb 
)

This works similarly to ff_network_wait_fd, but waits up to 'timeout' microseconds Uses ff_network_wait_fd in a loop.

Socket descriptor Set 1 to wait for socket able to be read, 0 to be written Timeout interval, in microseconds. Actual precision is 100000 mcs, due to ff_network_wait_fd usage

Parameters
int_cbInterrupt callback, is checked before each ff_network_wait_fd call
Returns
0 if data can be read/written, AVERROR(ETIMEDOUT) if timeout expired, or negative error code

Definition at line 77 of file network.c.

Referenced by tcp_read(), and tcp_write().

◆ ff_network_sleep_interruptible()

int ff_network_sleep_interruptible ( int64_t  timeout,
AVIOInterruptCB int_cb 
)

Waits for up to 'timeout' microseconds.

If the usert's int_cb is set and triggered, return before that. Timeout in microseconds. Maybe have lower actual precision.

Parameters
int_cbInterrupt callback, is checked regularly.
Returns
AVERROR(ETIMEDOUT) if timeout expirted, AVERROR_EXIT if interrupted by int_cb

Definition at line 97 of file network.c.

Referenced by http_read_stream().

◆ ff_network_close()

void ff_network_close ( void  )

◆ ff_is_multicast_address()

int ff_is_multicast_address ( struct sockaddr *  addr)

Definition at line 144 of file network.c.

Referenced by ff_udp_set_remote_url().

◆ ff_poll_interrupt()

static int ff_poll_interrupt ( struct pollfd *  p,
nfds_t  nfds,
int  timeout,
AVIOInterruptCB cb 
)
static

Definition at line 158 of file network.c.

Referenced by ff_accept(), and ff_listen_connect().

◆ ff_socket()

int ff_socket ( int  af,
int  type,
int  proto 
)

Definition at line 179 of file network.c.

Referenced by sctp_open(), tcp_open(), udp_socket_create(), and unix_open().

◆ ff_listen()

int ff_listen ( int  fd,
const struct sockaddr *  addr,
socklen_t  addrlen 
)

Bind to a file descriptor to an address without accepting connections.

Parameters
fdFirst argument of bind().
addrSecond argument of bind().
addrlenThird argument of bind().
Returns
0 on success or an AVERROR on failure.

Definition at line 203 of file network.c.

Referenced by ff_listen_bind(), and tcp_open().

◆ ff_accept()

int ff_accept ( int  fd,
int  timeout,
URLContext h 
)

Poll for a single connection on the passed file descriptor.

Parameters
fdThe listening socket file descriptor.
timeoutPolling timeout in milliseconds.
hURLContext providing interrupt check callback and logging context.
Returns
A non-blocking file descriptor on success or an AVERROR on failure.

Definition at line 221 of file network.c.

Referenced by ff_listen_bind(), and tcp_accept().

◆ ff_listen_bind()

int ff_listen_bind ( int  fd,
const struct sockaddr *  addr,
socklen_t  addrlen,
int  timeout,
URLContext h 
)

Bind to a file descriptor and poll for a connection.

Parameters
fdFirst argument of bind().
addrSecond argument of bind().
addrlenThird argument of bind().
timeoutPolling timeout in milliseconds.
hURLContext providing interrupt check callback and logging context.
Returns
A non-blocking file descriptor on success or an AVERROR on failure.

Definition at line 239 of file network.c.

Referenced by sctp_open(), tcp_open(), and unix_open().

◆ ff_listen_connect()

int ff_listen_connect ( int  fd,
const struct sockaddr *  addr,
socklen_t  addrlen,
int  timeout,
URLContext h,
int  will_try_next 
)

Connect to a file descriptor and poll for result.

Parameters
fdFirst argument of connect(), will be set as non-blocking.
addrSecond argument of connect().
addrlenThird argument of connect().
timeoutPolling timeout in milliseconds.
hURLContext providing interrupt check callback and logging context.
will_try_nextWhether the caller will try to connect to another address for the same host name, affecting the form of logged errors.
Returns
0 on success, AVERROR on failure.

Definition at line 251 of file network.c.

Referenced by sctp_open(), tcp_open(), and unix_open().

◆ match_host_pattern()

static int match_host_pattern ( const char *  pattern,
const char *  hostname 
)
static

Definition at line 296 of file network.c.

Referenced by ff_http_match_no_proxy().

◆ ff_http_match_no_proxy()

int ff_http_match_no_proxy ( const char *  no_proxy,
const char *  hostname 
)

Definition at line 320 of file network.c.

Referenced by ff_tls_open_underlying(), http_open_cnx_internal(), and test().