#include "setup.h"#include <stdio.h>#include <string.h>#include <stdarg.h>#include <stdlib.h>#include <ctype.h>#include <errno.h>#include "strtoofft.h"#include "strequal.h"#include <signal.h>#include "urldata.h"#include <curl/curl.h>#include "netrc.h"#include "content_encoding.h"#include "hostip.h"#include "transfer.h"#include "sendf.h"#include "speedcheck.h"#include "progress.h"#include "http.h"#include "url.h"#include "getinfo.h"#include "sslgen.h"#include "http_digest.h"#include "http_ntlm.h"#include "http_negotiate.h"#include "share.h"#include "memory.h"#include "select.h"#include "multiif.h"#include "easyif.h"#include <curl/mprintf.h>#include "memdebug.h"Go to the source code of this file.
| #define _MPRINTF_REPLACE |
Definition at line 104 of file transfer.c.
| #define CURL_TIMEOUT_EXPECT_100 1000 |
| #define HEADER1 k->p |
Referenced by Curl_readwrite().
| static bool checkhttpprefix | ( | struct SessionHandle * | data, | |
| const char * | s | |||
| ) | [static] |
Definition at line 183 of file transfer.c.
References calloc, checkprefix, Curl_convert_from_network(), CURLE_OK, curl_slist::data, failf, FALSE, free, UserDefined::http200aliases, curl_slist::next, NULL, SessionHandle::set, and TRUE.
Referenced by Curl_readwrite().
| static CURLcode Curl_connect_host | ( | struct SessionHandle * | data, | |
| struct connectdata ** | conn | |||
| ) | [static] |
Definition at line 2308 of file transfer.c.
References SessionHandle::change, Curl_async_resolved(), Curl_connect(), Curl_disconnect(), Curl_done(), Curl_follow(), Curl_pgrsTime(), Curl_wait_for_resolv(), CURLE_OK, FALSE, free, NULL, strdup, TIMER_STARTSINGLE, TRUE, DynamicStatic::url, and DynamicStatic::url_changed.
Referenced by Curl_perform().
| CURLcode Curl_fillreadbuffer | ( | struct connectdata * | conn, | |
| int | bytes, | |||
| int * | nreadp | |||
| ) |
Definition at line 116 of file transfer.c.
References connectdata::bits, Curl_convert_to_network(), CURL_READFUNC_ABORT, CURLE_ABORTED_BY_CALLBACK, CURLE_OK, connectdata::data, failf, ConnectBits::forbidchunk, connectdata::fread, connectdata::fread_in, HandleData::keep, UserDefined::prefer_ascii, SessionHandle::reqdata, SessionHandle::set, TRUE, ConnectBits::upload_chunky, Curl_transfer_keeper::upload_done, and HandleData::upload_fromhere.
Referenced by Curl_readwrite(), file_upload(), and tftp_tx().
| CURLcode Curl_follow | ( | struct SessionHandle * | data, | |
| char * | newurl, | |||
| bool | retry | |||
| ) |
Definition at line 2013 of file transfer.c.
References UrlState::allow_port, SessionHandle::change, Curl_pgrsResetTimes(), Curl_pgrsTime(), CURLE_OK, CURLE_OUT_OF_MEMORY, CURLE_TOO_MANY_REDIRECTS, failf, FALSE, UserDefined::followlocation, free, UserDefined::http_auto_referer, PureInfo::httpcode, UserDefined::httpreq, HTTPREQ_GET, HTTPREQ_POST, HTTPREQ_POST_FORM, SessionHandle::info, infof, malloc, UserDefined::maxredirs, NULL, UserDefined::opt_no_body, DynamicStatic::referer, DynamicStatic::referer_alloc, SessionHandle::set, SessionHandle::state, strcpy_url(), strdup, strlen_url(), UrlState::this_is_a_follow, TIMER_REDIRECT, TRUE, DynamicStatic::url, and DynamicStatic::url_alloc.
Referenced by Curl_connect_host(), Curl_perform(), and multi_runsingle().
| CURLcode Curl_perform | ( | struct SessionHandle * | data | ) |
Definition at line 2389 of file transfer.c.
References connectdata::bits, ConnectBits::close, UserDefined::connect_only, Curl_connect_host(), Curl_do(), Curl_done(), curl_easy_strerror(), Curl_follow(), Curl_posttransfer(), Curl_pretransfer(), Curl_retry_request(), CURL_SOCKET_BAD, CURLE_OK, UrlState::errorbuf, failf, FALSE, free, HandleData::newurl, NULL, SessionHandle::reqdata, sclose, SECONDARYSOCKET, SessionHandle::set, connectdata::sock, SessionHandle::state, strdup, Transfer(), TRUE, and UrlState::used_interface.
Referenced by curl_easy_perform().
| CURLcode Curl_posttransfer | ( | struct SessionHandle * | data | ) |
Definition at line 1930 of file transfer.c.
References Progress::callback, CURLE_OK, UserDefined::err, Progress::flags, UserDefined::no_signal, PGRS_HIDE, SessionHandle::progress, SessionHandle::set, and SessionHandle::state.
Referenced by Curl_perform(), and multi_runsingle().
| void Curl_pre_readwrite | ( | struct connectdata * | conn | ) |
Definition at line 1725 of file transfer.c.
References connectdata::bits, ConnectBits::chunk, FALSE, and ConnectBits::trailerHdrPresent.
Referenced by multi_runsingle(), and Transfer().
| CURLcode Curl_pretransfer | ( | struct SessionHandle * | data | ) |
Definition at line 1879 of file transfer.c.
References UrlState::allow_port, UrlState::authhost, UrlState::authproblem, UrlState::authproxy, SessionHandle::change, DynamicStatic::cookielist, Curl_cookie_loadfiles(), Curl_initinfo(), Curl_pgrsStartNow(), Curl_ssl_initsessions(), CURLE_OK, CURLE_URL_MALFORMAT, UrlState::errorbuf, failf, FALSE, UserDefined::followlocation, UserDefined::httpauth, UserDefined::no_signal, ssl_config_data::numsessions, UserDefined::proxyauth, SessionHandle::set, UserDefined::ssl, SessionHandle::state, UrlState::this_is_a_follow, TRUE, DynamicStatic::url, and auth::want.
Referenced by Curl_perform(), and multi_runsingle().
| CURLcode Curl_readrewind | ( | struct connectdata * | conn | ) |
Definition at line 227 of file transfer.c.
References connectdata::bits, CURLE_OK, CURLE_SEND_FAIL_REWIND, CURLIOCMD_RESTARTREAD, connectdata::data, failf, FALSE, fread(), UserDefined::fread, UserDefined::httpreq, HTTPREQ_POST_FORM, UserDefined::in, infof, UserDefined::ioctl, UserDefined::ioctl_client, UserDefined::postfields, ConnectBits::rewindaftersend, SEEK_SET, and SessionHandle::set.
Referenced by Curl_readwrite(), and perhapsrewind().
| CURLcode Curl_readwrite | ( | struct connectdata * | conn, | |
| bool * | done | |||
| ) |
Definition at line 314 of file transfer.c.
References connectdata::allocptr, Curl_transfer_keeper::badheader, connectdata::bits, Curl_transfer_keeper::bodywrites, Curl_transfer_keeper::buf, UserDefined::buffer_size, BUFSIZE, Curl_transfer_keeper::bytecount, Curl_transfer_keeper::bytecountp, checkhttpprefix(), checkprefix, HTTP::chunk, ConnectBits::chunk, CHUNK_STOP, CHUNKE_OK, CHUNKE_STOP, CHUNKE_WRITE_ERROR, CLIENTWRITE_BODY, CLIENTWRITE_HEADER, ConnectBits::close, COMPRESS, Curl_transfer_keeper::content_encoding, Curl_transfer_keeper::content_range, PureInfo::contenttype, connectdata::dynamically_allocated_data::cookiehost, SessionHandle::cookies, UserDefined::crlf, UrlState::crlf_conversions, connectdata::cselect_bits, Curl_client_write(), Curl_compareheader(), Curl_convert_from_network(), Curl_cookie_add(), CURL_CSELECT_ERR, CURL_CSELECT_IN, CURL_CSELECT_OUT, Curl_debug(), CURL_DO_LINEEND_CONV, Curl_fillreadbuffer(), curl_getdate(), Curl_http_auth_act(), Curl_http_input_auth(), Curl_http_should_fail(), Curl_httpchunk_init(), Curl_httpchunk_read(), CURL_LOCK_ACCESS_SINGLE, CURL_LOCK_DATA_COOKIE, Curl_pgrsSetDownloadCounter(), Curl_pgrsSetDownloadSize(), Curl_pgrsSetUploadCounter(), Curl_pgrsTime(), Curl_pgrsUpdate(), Curl_read(), Curl_readrewind(), Curl_safefree(), Curl_share_lock(), Curl_share_unlock(), CURL_SOCKET_BAD, Curl_socket_ready(), Curl_speedcheck(), CURL_TIMECOND_IFMODSINCE, CURL_TIMECOND_IFUNMODSINCE, CURL_TIMEOUT_EXPECT_100, Curl_tvdiff, Curl_tvnow, Curl_unencode_deflate_write(), Curl_unencode_gzip_write(), Curl_write(), CURLE_ABORTED_BY_CALLBACK, CURLE_BAD_CONTENT_ENCODING, CURLE_FILESIZE_EXCEEDED, CURLE_HTTP_RANGE_ERROR, CURLE_HTTP_RETURNED_ERROR, CURLE_OK, CURLE_OPERATION_TIMEOUTED, CURLE_OUT_OF_MEMORY, CURLE_PARTIAL_FILE, CURLE_RECV_ERROR, CURLE_SEND_ERROR, CURLE_WRITE_ERROR, CURLINFO_DATA_IN, CURLINFO_DATA_OUT, CURLINFO_HEADER_IN, CURLMAX, curlx_strtoofft, connectdata::data, data_pending(), Curl_chunker::dataleft, DEBUGF, Curl_transfer_keeper::deductheadercount, DEFLATE, UserDefined::encoding, Curl_transfer_keeper::end_ptr, failf, FALSE, PureInfo::filetime, FORMAT_OFF_T, UserDefined::get_filetime, GZIP, Curl_transfer_keeper::hbuflen, Curl_transfer_keeper::hbufp, Curl_transfer_keeper::header, HEADER1, Curl_transfer_keeper::HEADER_ALLBAD, Curl_transfer_keeper::HEADER_NORMAL, Curl_transfer_keeper::HEADER_PARTHEADER, PureInfo::header_size, UrlState::headerbuff, Curl_transfer_keeper::headerbytecount, Curl_transfer_keeper::headerline, UrlState::headersize, connectdata::host, HandleData::http, UserDefined::http_ce_skip, UserDefined::http_fail_on_error, UserDefined::http_follow_location, PureInfo::httpcode, Curl_transfer_keeper::httpcode, ConnectBits::httpproxy, UserDefined::httpreq, HTTPREQ_GET, PureInfo::httpversion, Curl_transfer_keeper::httpversion, IDENTITY, if(), Curl_transfer_keeper::ignorebody, UserDefined::ignorecl, Curl_transfer_keeper::ignorecl, UserDefined::include_header, UserDefined::infilesize, SessionHandle::info, infof, ISDIGIT, ISSPACE, HandleData::keep, KEEP_READ, KEEP_READ_HOLD, KEEP_WRITE, KEEP_WRITE_HOLD, Curl_transfer_keeper::keepon, malloc, UserDefined::max_filesize, Curl_transfer_keeper::maxdownload, hostname::name, HandleData::newurl, ConnectBits::no_body, Curl_transfer_keeper::now, NULL, Curl_transfer_keeper::offset, Curl_transfer_keeper::p, HandleData::path, UserDefined::prefer_ascii, PROT_HTTP, HandleData::proto, connectdata::protocol, ConnectBits::proxy_user_passwd, HandleData::range, read_rewind(), realloc, SessionHandle::reqdata, HandleData::resume_from, ConnectBits::rewindaftersend, UrlState::scratch, HTTP::sending, SessionHandle::set, Curl_transfer_keeper::size, connectdata::sockfd, ssize_t, Curl_transfer_keeper::start, Curl_transfer_keeper::start100, Curl_chunker::state, SessionHandle::state, Curl_transfer_keeper::str, Curl_transfer_keeper::str_start, strdup, ConnectBits::stream_was_rewound, UserDefined::timecondition, Curl_transfer_keeper::timeofdoc, UserDefined::timeout, TIMER_STARTTRANSFER, UserDefined::timevalue, ConnectBits::trailerHdrPresent, TRUE, Curl_transfer_keeper::upload_done, HandleData::upload_fromhere, HandleData::upload_present, Curl_transfer_keeper::uploadbuf, ConnectBits::user_passwd, UserDefined::verbose, Curl_transfer_keeper::wait100_after_headers, Curl_transfer_keeper::write_after_100_header, Curl_transfer_keeper::writebytecount, Curl_transfer_keeper::writebytecountp, and connectdata::writesockfd.
Referenced by multi_runsingle(), and Transfer().
| CURLcode Curl_readwrite_init | ( | struct connectdata * | conn | ) |
Definition at line 1641 of file transfer.c.
References connectdata::bits, Curl_transfer_keeper::buf, UrlState::buffer, Curl_transfer_keeper::bytecount, HandleData::bytecountp, Curl_transfer_keeper::bytecountp, Curl_pgrsSetDownloadCounter(), Curl_pgrsSetDownloadSize(), Curl_pgrsSetUploadCounter(), Curl_pgrsTime(), CURL_SOCKET_BAD, Curl_speedinit(), Curl_tvnow, CURLE_OK, connectdata::data, UrlState::expect100header, FALSE, ConnectBits::getheader, Curl_transfer_keeper::hbufp, Curl_transfer_keeper::header, UrlState::headerbuff, HandleData::http, Curl_transfer_keeper::httpversion, Curl_transfer_keeper::ignorebody, HandleData::keep, KEEP_READ, KEEP_WRITE, Curl_transfer_keeper::keepon, HandleData::maxdownload, Curl_transfer_keeper::maxdownload, Curl_transfer_keeper::maxfd, ConnectBits::no_body, Curl_transfer_keeper::now, HandleData::proto, SessionHandle::reqdata, HTTP::sending, HandleData::size, Curl_transfer_keeper::size, connectdata::sockfd, Curl_transfer_keeper::start, Curl_transfer_keeper::start100, SessionHandle::state, TIMER_PRETRANSFER, TRUE, Curl_transfer_keeper::uploadbuf, UrlState::uploadbuffer, Curl_transfer_keeper::wait100_after_headers, Curl_transfer_keeper::write_after_100_header, HandleData::writebytecountp, Curl_transfer_keeper::writebytecountp, and connectdata::writesockfd.
Referenced by Curl_file(), Curl_tftp(), multi_runsingle(), and Transfer().
| bool Curl_retry_request | ( | struct connectdata * | conn, | |
| char ** | url | |||
| ) |
Definition at line 2355 of file transfer.c.
References connectdata::bits, Curl_transfer_keeper::bytecount, SessionHandle::change, ConnectBits::close, connectdata::data, FALSE, Curl_transfer_keeper::headerbytecount, infof, HandleData::keep, ConnectBits::no_body, SessionHandle::reqdata, ConnectBits::retry, ConnectBits::reuse, strdup, TRUE, and DynamicStatic::url.
Referenced by Curl_perform(), and multi_runsingle().
| CURLcode Curl_setup_transfer | ( | struct connectdata * | c_conn, | |
| int | sockindex, | |||
| curl_off_t | size, | |||
| bool | getheader, | |||
| curl_off_t * | bytecountp, | |||
| int | writesockindex, | |||
| curl_off_t * | writecountp | |||
| ) |
Definition at line 2507 of file transfer.c.
References connectdata::bits, HandleData::bytecountp, CURL_SOCKET_BAD, CURLE_BAD_FUNCTION_ARGUMENT, CURLE_OK, connectdata::data, DEBUGASSERT, ConnectBits::getheader, SessionHandle::reqdata, HandleData::size, connectdata::sock, connectdata::sockfd, HandleData::writebytecountp, and connectdata::writesockfd.
Referenced by CreateConnection(), Curl_dict(), Curl_ftp_nextconnect(), Curl_http(), Curl_ldap(), Curl_telnet(), Curl_tftp(), ftp_dophase_done(), ftp_state_get_resp(), ftp_state_post_retr_size(), ftp_state_stor_resp(), and ftp_state_ul_setup().
| int Curl_single_getsock | ( | struct connectdata * | conn, | |
| curl_socket_t * | sock, | |||
| int | numsocks | |||
| ) |
Definition at line 1738 of file transfer.c.
References connectdata::data, GETSOCK_BLANK, GETSOCK_READSOCK, GETSOCK_WRITESOCK, index, HandleData::keep, KEEP_READ, KEEP_WRITE, Curl_transfer_keeper::keepon, SessionHandle::reqdata, connectdata::sockfd, and connectdata::writesockfd.
Referenced by multi_getsock().
| static int data_pending | ( | struct connectdata * | conn | ) | [static] |
Definition at line 271 of file transfer.c.
References Curl_ssl_data_pending(), FIRSTSOCKET, PROT_SCP, PROT_SFTP, and connectdata::protocol.
Referenced by Curl_readwrite().
| static void read_rewind | ( | struct connectdata * | conn, | |
| size_t | thismuch | |||
| ) | [static] |
Definition at line 283 of file transfer.c.
References connectdata::bits, connectdata::buf_len, connectdata::data, DEBUGF, infof, connectdata::master_buffer, MIN, connectdata::read_pos, ConnectBits::stream_was_rewound, and TRUE.
Referenced by Curl_readwrite().
| static void strcpy_url | ( | char * | output, | |
| char * | url | |||
| ) | [static] |
| static int strlen_url | ( | char * | url | ) | [static] |
| static CURLcode Transfer | ( | struct connectdata * | conn | ) | [static] |
Definition at line 1789 of file transfer.c.
References connectdata::bits, Curl_pre_readwrite(), Curl_readwrite(), Curl_readwrite_init(), CURL_SOCKET_BAD, Curl_socket_ready(), CURLE_OK, connectdata::data, Progress::dlspeed, EINTR, FALSE, ConnectBits::getheader, HandleData::keep, KEEP_READ, KEEP_READ_HOLD, KEEP_WRITE, KEEP_WRITE_HOLD, Curl_transfer_keeper::keepon, UserDefined::max_recv_speed, UserDefined::max_send_speed, ConnectBits::no_body, SessionHandle::progress, PROT_FILE, PROT_TFTP, connectdata::protocol, SessionHandle::reqdata, SessionHandle::set, SOCKERRNO, connectdata::sockfd, TRUE, Progress::ulspeed, and connectdata::writesockfd.
Referenced by Curl_perform().
1.5.6