Home | History | Annotate | Download | only in lib

Lines Matching refs:conn

50 static CURLcode https_proxy_connect(struct connectdata *conn, int sockindex)
54 DEBUGASSERT(conn->http_proxy.proxytype == CURLPROXY_HTTPS);
55 if(!conn->bits.proxy_ssl_connected[sockindex]) {
58 Curl_ssl_connect_nonblocking(conn, sockindex,
59 &conn->bits.proxy_ssl_connected[sockindex]);
61 conn->bits.close = TRUE; /* a failed connection is marked for closure to
66 (void) conn;
72 CURLcode Curl_proxy_connect(struct connectdata *conn, int sockindex)
74 if(conn->http_proxy.proxytype == CURLPROXY_HTTPS) {
75 const CURLcode result = https_proxy_connect(conn, sockindex);
78 if(!conn->bits.proxy_ssl_connected[sockindex])
82 if(conn->bits.tunnel_proxy && conn->bits.httpproxy) {
95 * member conn->proto.http; we want [protocol] through HTTP and we have
103 prot_save = conn->data->req.protop;
105 conn->data->req.protop = &http_proxy;
106 connkeep(conn, "HTTP proxy CONNECT");
112 if(conn->bits.conn_to_host)
113 hostname = conn->conn_to_host.name;
115 hostname = conn->secondaryhostname;
117 hostname = conn->host.name;
120 remote_port = conn->secondary_port;
121 else if(conn->bits.conn_to_port)
122 remote_port = conn->conn_to_port;
124 remote_port = conn->remote_port;
125 result = Curl_proxyCONNECT(conn, sockindex, hostname, remote_port);
126 conn->data->req.protop = prot_save;
129 Curl_safefree(conn->allocptr.proxyuserpwd);
138 bool Curl_connect_complete(struct connectdata *conn)
140 return !conn->connect_state ||
141 (conn->connect_state->tunnel_state == TUNNEL_COMPLETE);
144 bool Curl_connect_ongoing(struct connectdata *conn)
146 return conn->connect_state &&
147 (conn->connect_state->tunnel_state != TUNNEL_COMPLETE);
150 static CURLcode connect_init(struct connectdata *conn, bool reinit)
154 DEBUGASSERT(!conn->connect_state);
158 infof(conn->data, "allocate connect buffer!\n");
159 conn->connect_state = s;
162 DEBUGASSERT(conn->connect_state);
163 s = conn->connect_state;
174 static void connect_done(struct connectdata *conn)
176 struct http_connect_state *s = conn->connect_state;
178 infof(conn->data, "CONNECT phase completed!\n");
181 static CURLcode CONNECT(struct connectdata *conn,
187 struct Curl_easy *data = conn->data;
190 curl_socket_t tunnelsocket = conn->sock[sockindex];
192 struct http_connect_state *s = conn->connect_state;
198 if(Curl_connect_complete(conn))
201 conn->bits.proxy_connect_closed = FALSE;
231 result = Curl_http_output_auth(conn, "CONNECT", host_port, TRUE);
239 const char *http = (conn->http_proxy.proxytype == CURLPROXY_HTTP_1_0) ?
241 bool ipv6_ip = conn->bits.ipv6_ip;
245 if(hostname != conn->host.name)
255 if(!Curl_checkProxyheaders(conn, "Host:")) {
263 if(!Curl_checkProxyheaders(conn, "Proxy-Connection:"))
266 if(!Curl_checkProxyheaders(conn, "User-Agent:") &&
268 useragent = conn->allocptr.uagent;
280 conn->allocptr.proxyuserpwd?
281 conn->allocptr.proxyuserpwd:"",
290 result = Curl_add_custom_headers(conn, TRUE, req_buffer);
300 Curl_add_buffer_send(req_buffer, conn,
322 if(!Curl_conn_data_pending(conn, sockindex))
342 result = Curl_read(conn, tunnelsocket, s->ptr, 1, &gotbytes);
347 if(Curl_pgrsUpdate(conn))
358 conn->bits.proxy_connect_closed = TRUE;
392 r = Curl_httpchunk_read(conn, s->ptr, 1, &tookcareof);
422 s->line_start, (size_t)s->perline, conn);
430 result = Curl_client_write(conn, writetype,
476 r = Curl_httpchunk_read(conn, s->line_start + 1, 1, &gotbytes);
511 result = Curl_http_input_auth(conn, proxy, auth);
546 Curl_httpchunk_init(conn);
564 if(Curl_pgrsUpdate(conn))
573 result = Curl_http_auth_act(conn);
577 if(conn->bits.close)
586 Curl_closesocket(conn, conn->sock[sockindex]);
587 conn->sock[sockindex] = CURL_SOCKET_BAD;
596 connect_init(conn, TRUE); /* reinit */
603 conn->bits.proxy_connect_closed = TRUE;
605 connect_done(conn);
611 streamclose(conn, "proxy CONNECT failure");
612 Curl_closesocket(conn, conn->sock[sockindex]);
613 conn->sock[sockindex] = CURL_SOCKET_BAD;
619 if(conn->bits.proxy_connect_closed)
632 Curl_safefree(conn->allocptr.proxyuserpwd);
633 conn->allocptr.proxyuserpwd = NULL;
640 conn->bits.rewindaftersend = FALSE; /* make sure this isn't set for the
647 struct connectdata *conn = data->easy_conn;
648 struct http_connect_state *s = conn->connect_state;
651 conn->connect_state = NULL;
661 CURLcode Curl_proxyCONNECT(struct connectdata *conn,
667 if(!conn->connect_state) {
668 result = connect_init(conn, FALSE);
672 result = CONNECT(conn, sockindex, hostname, remote_port);
674 if(result || Curl_connect_complete(conn))
675 connect_done(conn);