#include "setup.h"#include <stdio.h>#include <errno.h>#include <string.h>#include "urldata.h"#include "sendf.h"#include "if2ip.h"#include "strerror.h"#include "connect.h"#include "memory.h"#include "select.h"#include "url.h"#include "multiif.h"#include "sockaddr.h"#include "inet_ntop.h"#include "inet_pton.h"#include "memdebug.h"Go to the source code of this file.
Defines | |
| #define | SETBLOCK 0 |
| #define | WAITCONN_CONNECTED 0 |
| #define | WAITCONN_SELECT_ERROR -1 |
| #define | WAITCONN_TIMEOUT 1 |
| #define | WAITCONN_FDSET_ERROR 2 |
| #define | nosigpipe(x, y) |
Functions | |
| static bool | verifyconnect (curl_socket_t sockfd, int *error) |
| static curl_socket_t | singleipconnect (struct connectdata *conn, const Curl_addrinfo *ai, long timeout_ms, bool *connected) |
| int | Curl_nonblock (curl_socket_t sockfd, int nonblock) |
| static int | waitconnect (curl_socket_t sockfd, long timeout_msec) |
| static CURLcode | bindlocal (struct connectdata *conn, curl_socket_t sockfd) |
| CURLcode | Curl_store_ip_addr (struct connectdata *conn) |
| static bool | trynextip (struct connectdata *conn, int sockindex, bool *connected) |
| CURLcode | Curl_is_connected (struct connectdata *conn, int sockindex, bool *connected) |
| static void | tcpnodelay (struct connectdata *conn, curl_socket_t sockfd) |
| CURLcode | Curl_connecthost (struct connectdata *conn, const struct Curl_dns_entry *remotehost, curl_socket_t *sockconn, Curl_addrinfo **addr, bool *connected) |
| #define nosigpipe | ( | x, | |||
| y | ) |
| #define SETBLOCK 0 |
| #define WAITCONN_CONNECTED 0 |
| #define WAITCONN_FDSET_ERROR 2 |
| #define WAITCONN_SELECT_ERROR -1 |
| #define WAITCONN_TIMEOUT 1 |
Definition at line 187 of file connect.c.
Referenced by Curl_is_connected(), singleipconnect(), and waitconnect().
| static CURLcode bindlocal | ( | struct connectdata * | conn, | |
| curl_socket_t | sockfd | |||
| ) | [static] |
Definition at line 220 of file connect.c.
References Curl_dns_entry::addr, Curl_addrinfo::ai_addr, Curl_addrinfo::ai_addrlen, asio::detail::socket_ops::bind(), Curl_if2ip(), CURL_INADDR_NONE, Curl_inet_ntop(), Curl_inet_pton(), Curl_resolv(), Curl_resolv_unlock(), Curl_strerror(), Curl_wait_for_resolv(), CURLE_HTTP_PORT_FAILED, CURLE_OK, CURLRESOLV_PENDING, connectdata::data, UserDefined::device, failf, FALSE, asio::detail::socket_ops::getsockname(), simple_client::h, in_addr_t, infof, UserDefined::localport, UserDefined::localportrange, NULL, UrlState::os_errno, SessionHandle::set, asio::detail::socket_ops::setsockopt(), SOCKERRNO, socklen_t, SessionHandle::state, and TRUE.
Referenced by singleipconnect().
| CURLcode Curl_connecthost | ( | struct connectdata * | conn, | |
| const struct Curl_dns_entry * | remotehost, | |||
| curl_socket_t * | sockconn, | |||
| Curl_addrinfo ** | addr, | |||
| bool * | connected | |||
| ) |
Definition at line 775 of file connect.c.
References Curl_dns_entry::addr, Curl_addrinfo::ai_next, UserDefined::connecttimeout, Curl_expire(), Curl_num_addresses(), CURL_SOCKET_BAD, Curl_tvdiff, Curl_tvnow, CURLE_COULDNT_CONNECT, CURLE_OK, CURLE_OPERATION_TIMEOUTED, connectdata::data, DEFAULT_CONNECT_TIMEOUT, failf, FALSE, SessionHandle::info, PureInfo::numconnects, SessionHandle::progress, SessionHandle::set, singleipconnect(), SessionHandle::state, Progress::t_startsingle, UserDefined::timeout, and UrlState::used_interface.
Referenced by ConnectPlease(), and ftp_state_pasv_resp().
| CURLcode Curl_is_connected | ( | struct connectdata * | conn, | |
| int | sockindex, | |||
| bool * | connected | |||
| ) |
Definition at line 522 of file connect.c.
References connectdata::bits, UserDefined::connecttimeout, Curl_expire(), Curl_strerror(), Curl_tvdiff, Curl_tvnow, CURLE_COULDNT_CONNECT, CURLE_OK, CURLE_OPERATION_TIMEOUTED, connectdata::data, DEBUGASSERT, DEFAULT_CONNECT_TIMEOUT, libtorrent::dht::messages::error, failf, FALSE, FIRSTSOCKET, connectdata::host, infof, hostname::name, UrlState::os_errno, connectdata::port, SessionHandle::progress, SECONDARYSOCKET, SessionHandle::set, connectdata::sock, SOCKERRNO, SessionHandle::state, Progress::t_startsingle, ConnectBits::tcpconnect, UserDefined::timeout, TRUE, trynextip(), verifyconnect(), WAITCONN_CONNECTED, WAITCONN_FDSET_ERROR, WAITCONN_TIMEOUT, and waitconnect().
Referenced by multi_runsingle().
| int Curl_nonblock | ( | curl_socket_t | sockfd, | |
| int | nonblock | |||
| ) |
Definition at line 112 of file connect.c.
References b, FALSE, asio::detail::socket_ops::ioctl(), and asio::detail::socket_ops::setsockopt().
Referenced by AllowServerConnect(), Curl_SOCKS4(), Curl_SOCKS5(), and singleipconnect().
| CURLcode Curl_store_ip_addr | ( | struct connectdata * | conn | ) |
Definition at line 463 of file connect.c.
References Curl_addrinfo::ai_family, connectdata::bits, Curl_printable_address(), Curl_safefree(), CURLE_OK, CURLE_OUT_OF_MEMORY, connectdata::ip_addr, connectdata::ip_addr_str, ConnectBits::ipv6, strdup, and TRUE.
Referenced by ConnectPlease(), and trynextip().
| static curl_socket_t singleipconnect | ( | struct connectdata * | conn, | |
| const Curl_addrinfo * | ai, | |||
| long | timeout_ms, | |||
| bool * | connected | |||
| ) | [static] |
Definition at line 662 of file connect.c.
References Curl_addrinfo::ai_addr, Curl_addrinfo::ai_addrlen, Curl_addrinfo::ai_family, Curl_addrinfo::ai_protocol, bindlocal(), asio::detail::socket_ops::connect(), Curl_nonblock(), Curl_printable_address(), CURL_SOCKET_BAD, Curl_strerror(), CURLSOCKTYPE_IPCXN, connectdata::data, EAGAIN, libtorrent::dht::messages::error, failf, FALSE, UserDefined::fsockopt, infof, nosigpipe, UrlState::os_errno, sclose, SessionHandle::set, SOCKERRNO, asio::detail::socket_ops::socket(), UserDefined::sockopt_client, connectdata::socktype, SessionHandle::state, UserDefined::tcp_nodelay, tcpnodelay(), TRUE, UrlState::used_interface, verifyconnect(), WAITCONN_TIMEOUT, and waitconnect().
Referenced by Curl_connecthost(), and trynextip().
| static void tcpnodelay | ( | struct connectdata * | conn, | |
| curl_socket_t | sockfd | |||
| ) | [static] |
Definition at line 614 of file connect.c.
References Curl_strerror(), connectdata::data, HAVE_GETPROTOBYNAME, infof, SessionHandle::set, asio::detail::socket_ops::setsockopt(), SOCKERRNO, socklen_t, and UserDefined::tcp_nodelay.
Referenced by singleipconnect().
| static bool trynextip | ( | struct connectdata * | conn, | |
| int | sockindex, | |||
| bool * | connected | |||
| ) | [static] |
Definition at line 484 of file connect.c.
References Curl_addrinfo::ai_next, CURL_SOCKET_BAD, Curl_store_ip_addr(), FALSE, FIRSTSOCKET, connectdata::ip_addr, sclose, singleipconnect(), connectdata::sock, and TRUE.
Referenced by Curl_is_connected().
| static bool verifyconnect | ( | curl_socket_t | sockfd, | |
| int * | error | |||
| ) | [static] |
Definition at line 406 of file connect.c.
References FALSE, asio::detail::socket_ops::getsockopt(), SET_SOCKERRNO, SOCKERRNO, socklen_t, and TRUE.
Referenced by Curl_is_connected(), singleipconnect(), and waitconnect().
| static int waitconnect | ( | curl_socket_t | sockfd, | |
| long | timeout_msec | |||
| ) | [static] |
Definition at line 191 of file connect.c.
References CURL_CSELECT_ERR, CURL_SOCKET_BAD, Curl_socket_ready(), NULL, verifyconnect(), WAITCONN_CONNECTED, WAITCONN_FDSET_ERROR, WAITCONN_SELECT_ERROR, and WAITCONN_TIMEOUT.
Referenced by Curl_is_connected(), and singleipconnect().
1.5.6