Classes | Macros | Typedefs | Functions
multi.c File Reference
#include "curl_setup.h"
#include <curl/curl.h>
#include "urldata.h"
#include "transfer.h"
#include "url.h"
#include "connect.h"
#include "progress.h"
#include "easyif.h"
#include "share.h"
#include "multiif.h"
#include "sendf.h"
#include "timeval.h"
#include "http.h"
#include "select.h"
#include "warnless.h"
#include "speedcheck.h"
#include "conncache.h"
#include "multihandle.h"
#include "pipeline.h"
#include "sigpipe.h"
#include "vtls/vtls.h"
#include "http_proxy.h"
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
Include dependency graph for multi.c:

Go to the source code of this file.

Classes

struct  Curl_sh_entry
 

Macros

#define CURL_CONNECTION_HASH_SIZE   97
 
#define CURL_MULTI_HANDLE   0x000bab1e
 
#define CURL_SOCKET_HASH_TABLE_SIZE   911
 
#define GOOD_MULTI_HANDLE(x)   ((x) && (x)->type == CURL_MULTI_HANDLE)
 
#define multistate(x, y)   mstate(x,y)
 
#define NUM_POLLS_ON_STACK   10
 
#define SH_READ   1
 
#define SH_WRITE   2
 

Typedefs

typedef void(* init_multistate_func) (struct Curl_easy *data)
 

Functions

static CURLMcode add_next_timeout (struct curltime now, struct Curl_multi *multi, struct Curl_easy *d)
 
static void close_all_connections (struct Curl_multi *multi)
 
static bool ConnectionDone (struct Curl_easy *data, struct connectdata *conn)
 
void Curl_expire (struct Curl_easy *data, time_t milli, expire_id id)
 
void Curl_expire_clear (struct Curl_easy *data)
 
void Curl_expire_done (struct Curl_easy *data, expire_id id)
 
CURLMcode curl_multi_add_handle (struct Curl_multi *multi, struct Curl_easy *data)
 
CURLMcode Curl_multi_add_perform (struct Curl_multi *multi, struct Curl_easy *data, struct connectdata *conn)
 
CURLMcode curl_multi_assign (struct Curl_multi *multi, curl_socket_t s, void *hashp)
 
curl_off_t Curl_multi_chunk_length_penalty_size (struct Curl_multi *multi)
 
CURLMcode curl_multi_cleanup (struct Curl_multi *multi)
 
void Curl_multi_closed (struct connectdata *conn, curl_socket_t s)
 
void Curl_multi_connchanged (struct Curl_multi *multi)
 
curl_off_t Curl_multi_content_length_penalty_size (struct Curl_multi *multi)
 
CURLMcode curl_multi_fdset (struct Curl_multi *multi, fd_set *read_fd_set, fd_set *write_fd_set, fd_set *exc_fd_set, int *max_fd)
 
struct Curl_multiCurl_multi_handle (int hashsize, int chashsize)
 
void Curl_multi_handlePipeBreak (struct Curl_easy *data)
 
CURLMsgcurl_multi_info_read (struct Curl_multi *multi, int *msgs_in_queue)
 
struct Curl_multicurl_multi_init (void)
 
size_t Curl_multi_max_host_connections (struct Curl_multi *multi)
 
size_t Curl_multi_max_total_connections (struct Curl_multi *multi)
 
CURLMcode curl_multi_perform (struct Curl_multi *multi, int *running_handles)
 
struct curl_llistCurl_multi_pipelining_server_bl (struct Curl_multi *multi)
 
struct curl_llistCurl_multi_pipelining_site_bl (struct Curl_multi *multi)
 
void Curl_multi_process_pending_handles (struct Curl_multi *multi)
 
CURLMcode curl_multi_remove_handle (struct Curl_multi *multi, struct Curl_easy *data)
 
CURLMcode curl_multi_setopt (struct Curl_multi *multi, CURLMoption option,...)
 
CURLMcode curl_multi_socket (struct Curl_multi *multi, curl_socket_t s, int *running_handles)
 
CURLMcode curl_multi_socket_action (struct Curl_multi *multi, curl_socket_t s, int ev_bitmask, int *running_handles)
 
CURLMcode curl_multi_socket_all (struct Curl_multi *multi, int *running_handles)
 
CURLMcode curl_multi_timeout (struct Curl_multi *multi, long *timeout_ms)
 
CURLMcode curl_multi_wait (struct Curl_multi *multi, struct curl_waitfd extra_fds[], unsigned int extra_nfds, int timeout_ms, int *ret)
 
bool Curl_pipeline_wanted (const struct Curl_multi *multi, int bits)
 
static void do_complete (struct connectdata *conn)
 
static int domore_getsock (struct connectdata *conn, curl_socket_t *socks, int numsocks)
 
static size_t fd_key_compare (void *k1, size_t k1_len, void *k2, size_t k2_len)
 
static size_t hash_fd (void *key, size_t key_length, size_t slots_num)
 
static void mstate (struct Curl_easy *data, CURLMstate state)
 
static CURLMcode multi_addmsg (struct Curl_multi *multi, struct Curl_message *msg)
 
static CURLMcode multi_addtimeout (struct Curl_easy *data, struct curltime *stamp, expire_id eid)
 
static void multi_deltimeout (struct Curl_easy *data, expire_id eid)
 
static CURLcode multi_do (struct connectdata **connp, bool *done)
 
static CURLcode multi_do_more (struct connectdata *conn, int *complete)
 
static CURLcode multi_done (struct connectdata **connp, CURLcode status, bool premature)
 
static void multi_freeamsg (void *a, void *b)
 
static int multi_getsock (struct Curl_easy *data, curl_socket_t *socks, int numsocks)
 
static bool multi_ischanged (struct Curl_multi *multi, bool clear)
 
static CURLcode multi_reconnect_request (struct connectdata **connp)
 
static CURLMcode multi_runsingle (struct Curl_multi *multi, struct curltime now, struct Curl_easy *data)
 
static CURLMcode multi_socket (struct Curl_multi *multi, bool checkall, curl_socket_t s, int ev_bitmask, int *running_handles)
 
static CURLMcode multi_timeout (struct Curl_multi *multi, long *timeout_ms)
 
static struct Curl_sh_entrysh_addentry (struct curl_hash *sh, curl_socket_t s, struct Curl_easy *data)
 
static void sh_delentry (struct curl_hash *sh, curl_socket_t s)
 
static void sh_freeentry (void *freethis)
 
static struct Curl_sh_entrysh_getentry (struct curl_hash *sh, curl_socket_t s)
 
static int sh_init (struct curl_hash *hash, int hashsize)
 
static void singlesocket (struct Curl_multi *multi, struct Curl_easy *data)
 
static int update_timer (struct Curl_multi *multi)
 
static int waitconnect_getsock (struct connectdata *conn, curl_socket_t *sock, int numsocks)
 
static int waitproxyconnect_getsock (struct connectdata *conn, curl_socket_t *sock, int numsocks)
 

Macro Definition Documentation

#define CURL_CONNECTION_HASH_SIZE   97

Definition at line 62 of file multi.c.

#define CURL_MULTI_HANDLE   0x000bab1e

Definition at line 64 of file multi.c.

#define CURL_SOCKET_HASH_TABLE_SIZE   911

Definition at line 59 of file multi.c.

#define GOOD_MULTI_HANDLE (   x)    ((x) && (x)->type == CURL_MULTI_HANDLE)

Definition at line 66 of file multi.c.

#define multistate (   x,
  y 
)    mstate(x,y)

Definition at line 163 of file multi.c.

#define NUM_POLLS_ON_STACK   10

Definition at line 966 of file multi.c.

#define SH_READ   1

Definition at line 180 of file multi.c.

#define SH_WRITE   2

Definition at line 181 of file multi.c.

Typedef Documentation

typedef void(* init_multistate_func) (struct Curl_easy *data)

Definition at line 104 of file multi.c.

Function Documentation

static CURLMcode add_next_timeout ( struct curltime  now,
struct Curl_multi multi,
struct Curl_easy d 
)
static

Definition at line 2499 of file multi.c.

static void close_all_connections ( struct Curl_multi multi)
static

Definition at line 2195 of file multi.c.

static bool ConnectionDone ( struct Curl_easy data,
struct connectdata conn 
)
static

Definition at line 490 of file multi.c.

void Curl_expire ( struct Curl_easy data,
time_t  milli,
expire_id  id 
)

Definition at line 2930 of file multi.c.

void Curl_expire_clear ( struct Curl_easy data)

Definition at line 3006 of file multi.c.

void Curl_expire_done ( struct Curl_easy data,
expire_id  id 
)

Definition at line 2995 of file multi.c.

CURLMcode curl_multi_add_handle ( struct Curl_multi multi,
struct Curl_easy data 
)

Definition at line 361 of file multi.c.

CURLMcode Curl_multi_add_perform ( struct Curl_multi multi,
struct Curl_easy data,
struct connectdata conn 
)

Definition at line 1148 of file multi.c.

CURLMcode curl_multi_assign ( struct Curl_multi multi,
curl_socket_t  s,
void *  hashp 
)

Definition at line 3044 of file multi.c.

curl_off_t Curl_multi_chunk_length_penalty_size ( struct Curl_multi multi)

Definition at line 3074 of file multi.c.

CURLMcode curl_multi_cleanup ( struct Curl_multi multi)

Definition at line 2216 of file multi.c.

void Curl_multi_closed ( struct connectdata conn,
curl_socket_t  s 
)

Definition at line 2467 of file multi.c.

void Curl_multi_connchanged ( struct Curl_multi multi)

Definition at line 1127 of file multi.c.

curl_off_t Curl_multi_content_length_penalty_size ( struct Curl_multi multi)

Definition at line 3069 of file multi.c.

CURLMcode curl_multi_fdset ( struct Curl_multi multi,
fd_set *  read_fd_set,
fd_set *  write_fd_set,
fd_set *  exc_fd_set,
int *  max_fd 
)

Definition at line 919 of file multi.c.

struct Curl_multi* Curl_multi_handle ( int  hashsize,
int  chashsize 
)

Definition at line 305 of file multi.c.

void Curl_multi_handlePipeBreak ( struct Curl_easy data)

Definition at line 795 of file multi.c.

CURLMsg* curl_multi_info_read ( struct Curl_multi multi,
int *  msgs_in_queue 
)

Definition at line 2289 of file multi.c.

struct Curl_multi* curl_multi_init ( void  )

Definition at line 355 of file multi.c.

size_t Curl_multi_max_host_connections ( struct Curl_multi multi)

Definition at line 3059 of file multi.c.

size_t Curl_multi_max_total_connections ( struct Curl_multi multi)

Definition at line 3064 of file multi.c.

CURLMcode curl_multi_perform ( struct Curl_multi multi,
int *  running_handles 
)

Definition at line 2144 of file multi.c.

struct curl_llist* Curl_multi_pipelining_server_bl ( struct Curl_multi multi)

Definition at line 3084 of file multi.c.

struct curl_llist* Curl_multi_pipelining_site_bl ( struct Curl_multi multi)

Definition at line 3079 of file multi.c.

void Curl_multi_process_pending_handles ( struct Curl_multi multi)

Definition at line 3089 of file multi.c.

CURLMcode curl_multi_remove_handle ( struct Curl_multi multi,
struct Curl_easy data 
)

Definition at line 654 of file multi.c.

CURLMcode curl_multi_setopt ( struct Curl_multi multi,
CURLMoption  option,
  ... 
)

Definition at line 2676 of file multi.c.

CURLMcode curl_multi_socket ( struct Curl_multi multi,
curl_socket_t  s,
int *  running_handles 
)

Definition at line 2746 of file multi.c.

CURLMcode curl_multi_socket_action ( struct Curl_multi multi,
curl_socket_t  s,
int  ev_bitmask,
int *  running_handles 
)

Definition at line 2755 of file multi.c.

CURLMcode curl_multi_socket_all ( struct Curl_multi multi,
int *  running_handles 
)

Definition at line 2765 of file multi.c.

CURLMcode curl_multi_timeout ( struct Curl_multi multi,
long *  timeout_ms 
)

Definition at line 2810 of file multi.c.

CURLMcode curl_multi_wait ( struct Curl_multi multi,
struct curl_waitfd  extra_fds[],
unsigned int  extra_nfds,
int  timeout_ms,
int *  ret 
)

Definition at line 968 of file multi.c.

bool Curl_pipeline_wanted ( const struct Curl_multi multi,
int  bits 
)

Definition at line 790 of file multi.c.

static void do_complete ( struct connectdata conn)
static

Definition at line 1230 of file multi.c.

static int domore_getsock ( struct connectdata conn,
curl_socket_t socks,
int  numsocks 
)
static

Definition at line 843 of file multi.c.

static size_t fd_key_compare ( void *  k1,
size_t  k1_len,
void *  k2,
size_t  k2_len 
)
static

Definition at line 241 of file multi.c.

static size_t hash_fd ( void *  key,
size_t  key_length,
size_t  slots_num 
)
static

Definition at line 248 of file multi.c.

static void mstate ( struct Curl_easy data,
CURLMstate  state 
)
static

Definition at line 107 of file multi.c.

static CURLMcode multi_addmsg ( struct Curl_multi multi,
struct Curl_message msg 
)
static

Definition at line 286 of file multi.c.

static CURLMcode multi_addtimeout ( struct Curl_easy data,
struct curltime stamp,
expire_id  eid 
)
static

Definition at line 2884 of file multi.c.

static void multi_deltimeout ( struct Curl_easy data,
expire_id  eid 
)
static

Definition at line 2862 of file multi.c.

static CURLcode multi_do ( struct connectdata **  connp,
bool done 
)
static

Definition at line 1238 of file multi.c.

static CURLcode multi_do_more ( struct connectdata conn,
int *  complete 
)
static

Definition at line 1287 of file multi.c.

static CURLcode multi_done ( struct connectdata **  connp,
CURLcode  status,
bool  premature 
)
static

Definition at line 519 of file multi.c.

static void multi_freeamsg ( void *  a,
void *  b 
)
static

Definition at line 299 of file multi.c.

static int multi_getsock ( struct Curl_easy data,
curl_socket_t socks,
int  numsocks 
)
static

Definition at line 853 of file multi.c.

static bool multi_ischanged ( struct Curl_multi multi,
bool  clear 
)
static

Definition at line 1140 of file multi.c.

static CURLcode multi_reconnect_request ( struct connectdata **  connp)
static

Definition at line 1170 of file multi.c.

static CURLMcode multi_runsingle ( struct Curl_multi multi,
struct curltime  now,
struct Curl_easy data 
)
static

Definition at line 1303 of file multi.c.

static CURLMcode multi_socket ( struct Curl_multi multi,
bool  checkall,
curl_socket_t  s,
int  ev_bitmask,
int *  running_handles 
)
static

Definition at line 2543 of file multi.c.

static CURLMcode multi_timeout ( struct Curl_multi multi,
long *  timeout_ms 
)
static

Definition at line 2775 of file multi.c.

static struct Curl_sh_entry* sh_addentry ( struct curl_hash sh,
curl_socket_t  s,
struct Curl_easy data 
)
static

Definition at line 194 of file multi.c.

static void sh_delentry ( struct curl_hash sh,
curl_socket_t  s 
)
static

Definition at line 224 of file multi.c.

static void sh_freeentry ( void *  freethis)
static

Definition at line 234 of file multi.c.

static struct Curl_sh_entry* sh_getentry ( struct curl_hash sh,
curl_socket_t  s 
)
static

Definition at line 184 of file multi.c.

static int sh_init ( struct curl_hash hash,
int  hashsize 
)
static

Definition at line 274 of file multi.c.

static void singlesocket ( struct Curl_multi multi,
struct Curl_easy data 
)
static

Definition at line 2319 of file multi.c.

static int update_timer ( struct Curl_multi multi)
static

Definition at line 2824 of file multi.c.

static int waitconnect_getsock ( struct connectdata conn,
curl_socket_t sock,
int  numsocks 
)
static

Definition at line 800 of file multi.c.

static int waitproxyconnect_getsock ( struct connectdata conn,
curl_socket_t sock,
int  numsocks 
)
static

Definition at line 826 of file multi.c.



rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:17