#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 "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
Go to the source code of this file.
Classes | |
struct | Curl_sh_entry |
Defines | |
#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 | SH_READ 1 |
#define | SH_WRITE 2 |
Typedefs | |
typedef void(* | init_multistate_func )(struct Curl_easy *data) |
Functions | |
static CURLMcode | add_next_timeout (struct timeval 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) |
void | Curl_expire_clear (struct Curl_easy *data) |
void | Curl_expire_latest (struct Curl_easy *data, time_t milli) |
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_multi * | Curl_multi_handle (int hashsize, int chashsize) |
void | Curl_multi_handlePipeBreak (struct Curl_easy *data) |
CURLMsg * | curl_multi_info_read (struct Curl_multi *multi, int *msgs_in_queue) |
struct Curl_multi * | curl_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_llist * | Curl_multi_pipelining_server_bl (struct Curl_multi *multi) |
struct curl_llist * | Curl_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_llist *timeoutlist, struct timeval *stamp) |
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 void | multi_freetimeout (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 timeval 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_entry * | sh_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_entry * | sh_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) |
#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) |
typedef void(* init_multistate_func)(struct Curl_easy *data) |
static CURLMcode add_next_timeout | ( | struct timeval | now, |
struct Curl_multi * | multi, | ||
struct Curl_easy * | d | ||
) | [static] |
static void close_all_connections | ( | struct Curl_multi * | multi | ) | [static] |
static bool ConnectionDone | ( | struct Curl_easy * | data, |
struct connectdata * | conn | ||
) | [static] |
void Curl_expire | ( | struct Curl_easy * | data, |
time_t | milli | ||
) |
void Curl_expire_clear | ( | struct Curl_easy * | data | ) |
void Curl_expire_latest | ( | struct Curl_easy * | data, |
time_t | milli | ||
) |
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_multi* Curl_multi_handle | ( | int | hashsize, |
int | chashsize | ||
) | [read] |
void Curl_multi_handlePipeBreak | ( | struct Curl_easy * | data | ) |
CURLMsg* curl_multi_info_read | ( | struct Curl_multi * | multi, |
int * | msgs_in_queue | ||
) |
struct Curl_multi* curl_multi_init | ( | void | ) | [read] |
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_llist* Curl_multi_pipelining_server_bl | ( | struct Curl_multi * | multi | ) | [read] |
struct curl_llist* Curl_multi_pipelining_site_bl | ( | struct Curl_multi * | multi | ) | [read] |
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] |
static int domore_getsock | ( | struct connectdata * | conn, |
curl_socket_t * | socks, | ||
int | numsocks | ||
) | [static] |
static size_t fd_key_compare | ( | void * | k1, |
size_t | k1_len, | ||
void * | k2, | ||
size_t | k2_len | ||
) | [static] |
static size_t hash_fd | ( | void * | key, |
size_t | key_length, | ||
size_t | slots_num | ||
) | [static] |
static void mstate | ( | struct Curl_easy * | data, |
CURLMstate | state | ||
) | [static] |
static CURLMcode multi_addmsg | ( | struct Curl_multi * | multi, |
struct Curl_message * | msg | ||
) | [static] |
static CURLMcode multi_addtimeout | ( | struct curl_llist * | timeoutlist, |
struct timeval * | stamp | ||
) | [static] |
static CURLcode multi_do | ( | struct connectdata ** | connp, |
bool * | done | ||
) | [static] |
static CURLcode multi_do_more | ( | struct connectdata * | conn, |
int * | complete | ||
) | [static] |
static CURLcode multi_done | ( | struct connectdata ** | connp, |
CURLcode | status, | ||
bool | premature | ||
) | [static] |
static void multi_freeamsg | ( | void * | a, |
void * | b | ||
) | [static] |
static void multi_freetimeout | ( | void * | a, |
void * | b | ||
) | [static] |
static int multi_getsock | ( | struct Curl_easy * | data, |
curl_socket_t * | socks, | ||
int | numsocks | ||
) | [static] |
static bool multi_ischanged | ( | struct Curl_multi * | multi, |
bool | clear | ||
) | [static] |
static CURLcode multi_reconnect_request | ( | struct connectdata ** | connp | ) | [static] |
static CURLMcode multi_runsingle | ( | struct Curl_multi * | multi, |
struct timeval | now, | ||
struct Curl_easy * | data | ||
) | [static] |
static CURLMcode multi_socket | ( | struct Curl_multi * | multi, |
bool | checkall, | ||
curl_socket_t | s, | ||
int | ev_bitmask, | ||
int * | running_handles | ||
) | [static] |
static CURLMcode multi_timeout | ( | struct Curl_multi * | multi, |
long * | timeout_ms | ||
) | [static] |
static struct Curl_sh_entry* sh_addentry | ( | struct curl_hash * | sh, |
curl_socket_t | s, | ||
struct Curl_easy * | data | ||
) | [static, read] |
static void sh_delentry | ( | struct curl_hash * | sh, |
curl_socket_t | s | ||
) | [static] |
static void sh_freeentry | ( | void * | freethis | ) | [static] |
static struct Curl_sh_entry* sh_getentry | ( | struct curl_hash * | sh, |
curl_socket_t | s | ||
) | [static, read] |
static void singlesocket | ( | struct Curl_multi * | multi, |
struct Curl_easy * | data | ||
) | [static] |
static int update_timer | ( | struct Curl_multi * | multi | ) | [static] |
static int waitconnect_getsock | ( | struct connectdata * | conn, |
curl_socket_t * | sock, | ||
int | numsocks | ||
) | [static] |
static int waitproxyconnect_getsock | ( | struct connectdata * | conn, |
curl_socket_t * | sock, | ||
int | numsocks | ||
) | [static] |