void Curl_conn_forget_socket(struct Curl_easy *data, int sockindex)
{
- if(data->conn && CONN_SOCK_IDX_VALID(sockindex)) {
- struct Curl_cfilter *cf = data->conn->cfilter[sockindex];
+ struct connectdata *conn = data->conn;
+ if(conn && CONN_SOCK_IDX_VALID(sockindex)) {
+ struct Curl_cfilter *cf = conn->cfilter[sockindex];
if(cf)
(void)Curl_conn_cf_cntrl(cf, data, TRUE,
CF_CTRL_FORGET_SOCKET, 0, NULL);
- fake_sclose(data->conn->sock[sockindex]);
- data->conn->sock[sockindex] = CURL_SOCKET_BAD;
+ fake_sclose(conn->sock[sockindex]);
+ conn->sock[sockindex] = CURL_SOCKET_BAD;
}
}
int timeout_ms, struct curltime *nowp)
{
struct curltime now;
+ struct connectdata *conn = data->conn;
- DEBUGASSERT(data->conn);
+ DEBUGASSERT(conn);
if(!nowp) {
now = curlx_now();
nowp = &now;
}
- data->conn->shutdown.start[sockindex] = *nowp;
- data->conn->shutdown.timeout_ms = (timeout_ms > 0) ?
+ conn->shutdown.start[sockindex] = *nowp;
+ conn->shutdown.timeout_ms = (timeout_ms > 0) ?
(timediff_t)timeout_ms :
((data->set.shutdowntimeout > 0) ?
data->set.shutdowntimeout : DEFAULT_SHUTDOWN_TIMEOUT_MS);
/* Set a timer, unless we operate on the admin handle */
- if(data->mid && (data->conn->shutdown.timeout_ms > 0))
- Curl_expire_ex(data, nowp, data->conn->shutdown.timeout_ms,
+ if(data->mid && (conn->shutdown.timeout_ms > 0))
+ Curl_expire_ex(data, nowp, conn->shutdown.timeout_ms,
EXPIRE_SHUTDOWN);
}
CURLcode result = CURLE_OK;
const char *path = data->state.up.path;
const char *query = data->state.up.query;
+#ifndef CURL_DISABLE_PROXY
+ struct connectdata *conn = data->conn;
+#endif
if(data->set.str[STRING_TARGET]) {
path = data->set.str[STRING_TARGET];
}
#ifndef CURL_DISABLE_PROXY
- if(data->conn->bits.httpproxy && !data->conn->bits.tunnel_proxy) {
+ if(conn->bits.httpproxy && !conn->bits.tunnel_proxy) {
/* Using a proxy but does not tunnel through it */
/* The path sent to the proxy is in fact the entire URL. But if the remote
if(!h)
return CURLE_OUT_OF_MEMORY;
- if(data->conn->host.dispname != data->conn->host.name) {
- uc = curl_url_set(h, CURLUPART_HOST, data->conn->host.name, 0);
+ if(conn->host.dispname != conn->host.name) {
+ uc = curl_url_set(h, CURLUPART_HOST, conn->host.name, 0);
if(uc) {
curl_url_cleanup(h);
return CURLE_OUT_OF_MEMORY;
Curl_HttpReq httpreq)
{
CURLcode result = CURLE_OK;
+ struct connectdata *conn = data->conn;
switch(id) {
case H1_HD_REQUEST:
/* add the main request stuff */
#ifndef CURL_DISABLE_PROXY
case H1_HD_PROXY_CONNECTION:
- if(data->conn->bits.httpproxy &&
- !data->conn->bits.tunnel_proxy &&
+ if(conn->bits.httpproxy &&
+ !conn->bits.tunnel_proxy &&
!Curl_checkheaders(data, STRCONST("Proxy-Connection")) &&
!Curl_checkProxyheaders(data, data->conn, STRCONST("Proxy-Connection")))
result = curlx_dyn_add(req, "Proxy-Connection: Keep-Alive\r\n");
#ifndef CURL_DISABLE_ALTSVC
case H1_HD_ALT_USED:
- if(data->conn->bits.altused &&
- !Curl_checkheaders(data, STRCONST("Alt-Used")))
+ if(conn->bits.altused && !Curl_checkheaders(data, STRCONST("Alt-Used")))
result = curlx_dyn_addf(req, "Alt-Used: %s:%d\r\n",
- data->conn->conn_to_host.name,
- data->conn->conn_to_port);
+ conn->conn_to_host.name,
+ conn->conn_to_port);
break;
#endif
result = Curl_http2_request_upgrade(req, data);
}
#ifndef CURL_DISABLE_WEBSOCKETS
- if(!result && data->conn->handler->protocol&(CURLPROTO_WS|CURLPROTO_WSS))
+ if(!result && conn->handler->protocol&(CURLPROTO_WS|CURLPROTO_WSS))
result = Curl_ws_request(data, req);
#endif
break;
static CURLcode mstate_protocol_pollset(struct Curl_easy *data,
struct easy_pollset *ps)
{
- if(data->conn) {
+ struct connectdata *conn = data->conn;
+ if(conn) {
curl_socket_t sockfd;
- if(data->conn->handler->proto_pollset)
- return data->conn->handler->proto_pollset(data, ps);
- sockfd = data->conn->sock[FIRSTSOCKET];
+ if(conn->handler->proto_pollset)
+ return conn->handler->proto_pollset(data, ps);
+ sockfd = conn->sock[FIRSTSOCKET];
if(sockfd != CURL_SOCKET_BAD) {
/* Default is to wait to something from the server */
return Curl_pollset_change(data, ps, sockfd, CURL_POLL_IN, 0);
static CURLcode mstate_do_pollset(struct Curl_easy *data,
struct easy_pollset *ps)
{
- if(data->conn) {
- if(data->conn->handler->doing_pollset)
- return data->conn->handler->doing_pollset(data, ps);
- else if(CONN_SOCK_IDX_VALID(data->conn->send_idx)) {
+ struct connectdata *conn = data->conn;
+ if(conn) {
+ if(conn->handler->doing_pollset)
+ return conn->handler->doing_pollset(data, ps);
+ else if(CONN_SOCK_IDX_VALID(conn->send_idx)) {
/* Default is that we want to send something to the server */
return Curl_pollset_add_out(
- data, ps, data->conn->sock[data->conn->send_idx]);
+ data, ps, conn->sock[conn->send_idx]);
}
}
return CURLE_OK;
static CURLcode mstate_domore_pollset(struct Curl_easy *data,
struct easy_pollset *ps)
{
- if(data->conn) {
- if(data->conn->handler->domore_pollset)
- return data->conn->handler->domore_pollset(data, ps);
- else if(CONN_SOCK_IDX_VALID(data->conn->send_idx)) {
+ struct connectdata *conn = data->conn;
+ if(conn) {
+ if(conn->handler->domore_pollset)
+ return conn->handler->domore_pollset(data, ps);
+ else if(CONN_SOCK_IDX_VALID(conn->send_idx)) {
/* Default is that we want to send something to the server */
return Curl_pollset_add_out(
- data, ps, data->conn->sock[data->conn->send_idx]);
+ data, ps, conn->sock[conn->send_idx]);
}
}
return CURLE_OK;
static CURLcode mstate_perform_pollset(struct Curl_easy *data,
struct easy_pollset *ps)
{
- if(!data->conn)
+ struct connectdata *conn = data->conn;
+ if(!conn)
return CURLE_OK;
- else if(data->conn->handler->perform_pollset)
- return data->conn->handler->perform_pollset(data, ps);
+ else if(conn->handler->perform_pollset)
+ return conn->handler->perform_pollset(data, ps);
else {
/* Default is to obey the data->req.keepon flags for send/recv */
CURLcode result = CURLE_OK;
- if(CURL_WANT_RECV(data) && CONN_SOCK_IDX_VALID(data->conn->recv_idx)) {
+ if(CURL_WANT_RECV(data) && CONN_SOCK_IDX_VALID(conn->recv_idx)) {
result = Curl_pollset_add_in(
- data, ps, data->conn->sock[data->conn->recv_idx]);
+ data, ps, conn->sock[conn->recv_idx]);
}
if(!result && Curl_req_want_send(data) &&
- CONN_SOCK_IDX_VALID(data->conn->send_idx)) {
+ CONN_SOCK_IDX_VALID(conn->send_idx)) {
result = Curl_pollset_add_out(
- data, ps, data->conn->sock[data->conn->send_idx]);
+ data, ps, conn->sock[conn->send_idx]);
}
return result;
}
static int myssh_in_AUTH_DONE(struct Curl_easy *data,
struct ssh_conn *sshc)
{
+ struct connectdata *conn = data->conn;
if(!sshc->authed) {
failf(data, "Authentication failure");
return myssh_to_ERROR(data, sshc, CURLE_LOGIN_DENIED);
/* At this point we have an authenticated ssh session. */
infof(data, "Authentication complete");
Curl_pgrsTime(data, TIMER_APPCONNECT); /* SSH is connected */
- data->conn->recv_idx = FIRSTSOCKET;
- data->conn->send_idx = -1;
+ conn->recv_idx = FIRSTSOCKET;
+ conn->send_idx = -1;
- if(data->conn->handler->protocol == CURLPROTO_SFTP) {
+ if(conn->handler->protocol == CURLPROTO_SFTP) {
myssh_to(data, sshc, SSH_SFTP_INIT);
return SSH_NO_ERROR;
}
struct easy_pollset *ps)
{
int flags = 0;
- if(data->conn->waitfor & KEEP_RECV)
+ struct connectdata *conn = data->conn;
+ if(conn->waitfor & KEEP_RECV)
flags |= CURL_POLL_IN;
- if(data->conn->waitfor & KEEP_SEND)
+ if(conn->waitfor & KEEP_SEND)
flags |= CURL_POLL_OUT;
- if(!data->conn->waitfor)
+ if(!conn->waitfor)
flags |= CURL_POLL_OUT;
return flags ?
- Curl_pollset_change(data, ps, data->conn->sock[FIRSTSOCKET], flags, 0) :
+ Curl_pollset_change(data, ps, conn->sock[FIRSTSOCKET], flags, 0) :
CURLE_OK;
}
struct easy_pollset *ps)
{
int flags = 0;
- if(data->conn->waitfor & KEEP_RECV)
+ struct connectdata *conn = data->conn;
+ if(conn->waitfor & KEEP_RECV)
flags |= CURL_POLL_IN;
- if(data->conn->waitfor & KEEP_SEND)
+ if(conn->waitfor & KEEP_SEND)
flags |= CURL_POLL_OUT;
return flags ?
- Curl_pollset_change(data, ps, data->conn->sock[FIRSTSOCKET], flags, 0) :
+ Curl_pollset_change(data, ps, conn->sock[FIRSTSOCKET], flags, 0) :
CURLE_OK;
}