ELinks 0.16.1.1
socket.c File Reference
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include "elinks.h"
#include "config/options.h"
#include "main/select.h"
#include "network/connection.h"
#include "network/dns.h"
#include "network/socket.h"
#include "network/ssl/socket.h"
#include "osdep/osdep.h"
#include "osdep/getifaddrs.h"
#include "protocol/http/blacklist.h"
#include "protocol/protocol.h"
#include "protocol/uri.h"
#include "util/error.h"
#include "util/memory.h"
#include "util/string.h"
Include dependency graph for socket.c:

Data Structures

struct  connect_info
struct  socket_weak_ref
 For detecting whether a struct socket has been deleted while a function was using it. More...
struct  write_buffer

Macros

#define debug_transfer_log(data, len)
#define RD_ALLOC_GR   (2<<11) /* 4096 */
#define RD_MEM(rb)
#define RD_SIZE(rb, len)

Functions

static struct connect_infoinit_connection_info (struct uri *uri, struct socket *socket, socket_connect_T connect_done)
static void done_connection_info (struct socket *socket)
struct socketinit_socket (void *conn, struct socket_operations *ops)
void done_socket (struct socket *socket)
void close_socket (struct socket *socket)
void dns_exception (struct socket *socket)
static void exception (struct socket *socket)
void timeout_socket (struct socket *socket)
static void dns_found (struct socket *socket, struct sockaddr_storage *addr, int addrlen)
void make_connection (struct socket *socket, struct uri *uri, socket_connect_T connect_done, int no_cache)
int get_pasv_socket (struct socket *ctrl_socket, struct sockaddr_storage *addr)
static int check_if_local_address4 (struct sockaddr_in *addr)
void complete_connect_socket (struct socket *socket, struct uri *uri, socket_connect_T done)
static void connected (struct socket *socket)
static void init_bind_address (void)
void connect_socket (struct socket *csocket, struct connection_state state)
static int generic_write (struct socket *socket, char *data, int len)
static void write_select (struct socket *socket)
void write_to_socket (struct socket *socket, char *data, int len, struct connection_state state, socket_write_T write_done)
static ssize_t generic_read (struct socket *socket, char *data, int len)
static void read_select (struct socket *socket)
struct read_bufferalloc_read_buffer (struct socket *socket)
void read_from_socket (struct socket *socket, struct read_buffer *buffer, struct connection_state state, socket_read_T done)
static void read_response_from_socket (struct socket *socket)
void request_from_socket (struct socket *socket, char *data, int datalen, struct connection_state state, enum socket_state sock_state, socket_read_T read_done)
void kill_buffer_data (struct read_buffer *rb, int n)

Variables

static struct socket_weak_ref list socket_weak_refs = { D_LIST_HEAD(socket_weak_refs) }
static int to_bind
static struct sockaddr_in sa_bind

Macro Definition Documentation

◆ debug_transfer_log

#define debug_transfer_log ( data,
len )

◆ RD_ALLOC_GR

#define RD_ALLOC_GR   (2<<11) /* 4096 */

◆ RD_MEM

#define RD_MEM ( rb)
Value:
(sizeof(*(rb)) + 4 * RD_ALLOC_GR + RD_ALLOC_GR)
#define RD_ALLOC_GR
Definition socket.c:924

◆ RD_SIZE

#define RD_SIZE ( rb,
len )
Value:
((RD_MEM(rb) + (len)) & ~(RD_ALLOC_GR - 1))
#define RD_MEM(rb)
Definition socket.c:925

Function Documentation

◆ alloc_read_buffer()

struct read_buffer * alloc_read_buffer ( struct socket * socket)

◆ check_if_local_address4()

int check_if_local_address4 ( struct sockaddr_in * addr)
inlinestatic

◆ close_socket()

void close_socket ( struct socket * socket)

◆ complete_connect_socket()

void complete_connect_socket ( struct socket * socket,
struct uri * uri,
socket_connect_T done )

◆ connect_socket()

void connect_socket ( struct socket * csocket,
struct connection_state state )

◆ connected()

void connected ( struct socket * socket)
static

◆ dns_exception()

void dns_exception ( struct socket * socket)

◆ dns_found()

void dns_found ( struct socket * socket,
struct sockaddr_storage * addr,
int addrlen )
static

◆ done_connection_info()

void done_connection_info ( struct socket * socket)
static

◆ done_socket()

void done_socket ( struct socket * socket)

◆ exception()

void exception ( struct socket * socket)
static

◆ generic_read()

ssize_t generic_read ( struct socket * socket,
char * data,
int len )
static

◆ generic_write()

int generic_write ( struct socket * socket,
char * data,
int len )
static

◆ get_pasv_socket()

int get_pasv_socket ( struct socket * ctrl_socket,
struct sockaddr_storage * addr )

◆ init_bind_address()

void init_bind_address ( void )
static

◆ init_connection_info()

struct connect_info * init_connection_info ( struct uri * uri,
struct socket * socket,
socket_connect_T connect_done )
static

◆ init_socket()

struct socket * init_socket ( void * conn,
struct socket_operations * ops )

◆ kill_buffer_data()

void kill_buffer_data ( struct read_buffer * rb,
int n )

◆ make_connection()

void make_connection ( struct socket * socket,
struct uri * uri,
socket_connect_T connect_done,
int no_cache )

◆ read_from_socket()

void read_from_socket ( struct socket * socket,
struct read_buffer * buffer,
struct connection_state state,
socket_read_T done )

◆ read_response_from_socket()

void read_response_from_socket ( struct socket * socket)
static

◆ read_select()

void read_select ( struct socket * socket)
static

◆ request_from_socket()

void request_from_socket ( struct socket * socket,
char * data,
int datalen,
struct connection_state state,
enum socket_state sock_state,
socket_read_T read_done )

◆ timeout_socket()

void timeout_socket ( struct socket * socket)

◆ write_select()

void write_select ( struct socket * socket)
static

◆ write_to_socket()

void write_to_socket ( struct socket * socket,
char * data,
int len,
struct connection_state state,
socket_write_T write_done )

Variable Documentation

◆ sa_bind

struct sockaddr_in sa_bind
static

◆ socket_weak_refs

struct socket_weak_ref list socket_weak_refs = { D_LIST_HEAD(socket_weak_refs) }
static

◆ to_bind

int to_bind
static