svn commit: r251001 - stable/9/lib/libfetch
Dag-Erling Smørgrav
des at FreeBSD.org
Sun May 26 16:48:51 UTC 2013
Author: des
Date: Sun May 26 16:48:51 2013
New Revision: 251001
URL: http://svnweb.freebsd.org/changeset/base/251001
Log:
MFH (r243149): fix indentation
MFH (r249431): use CONNECT to proxy HTTPS over HTTP
PR: bin/80176
Modified:
stable/9/lib/libfetch/http.c
Directory Properties:
stable/9/lib/libfetch/ (props changed)
Modified: stable/9/lib/libfetch/http.c
==============================================================================
--- stable/9/lib/libfetch/http.c Sun May 26 14:54:06 2013 (r251000)
+++ stable/9/lib/libfetch/http.c Sun May 26 16:48:51 2013 (r251001)
@@ -1373,6 +1373,7 @@ http_authorize(conn_t *conn, const char
static conn_t *
http_connect(struct url *URL, struct url *purl, const char *flags)
{
+ struct url *curl;
conn_t *conn;
int verbose;
int af, val;
@@ -1391,17 +1392,21 @@ http_connect(struct url *URL, struct url
af = AF_INET6;
#endif
- if (purl && strcasecmp(URL->scheme, SCHEME_HTTPS) != 0) {
- URL = purl;
- } else if (strcasecmp(URL->scheme, SCHEME_FTP) == 0) {
- /* can't talk http to an ftp server */
- /* XXX should set an error code */
- return (NULL);
- }
+ curl = (purl != NULL) ? purl : URL;
- if ((conn = fetch_connect(URL->host, URL->port, af, verbose)) == NULL)
+ if ((conn = fetch_connect(curl->host, curl->port, af, verbose)) == NULL)
/* fetch_connect() has already set an error code */
return (NULL);
+ if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0 && purl) {
+ http_cmd(conn, "CONNECT %s:%d HTTP/1.1",
+ URL->host, URL->port);
+ http_cmd(conn, "");
+ if (http_get_reply(conn) != HTTP_OK) {
+ fetch_close(conn);
+ return (NULL);
+ }
+ http_get_reply(conn);
+ }
if (strcasecmp(URL->scheme, SCHEME_HTTPS) == 0 &&
fetch_ssl(conn, verbose) == -1) {
fetch_close(conn);
@@ -1752,11 +1757,11 @@ http_request(struct url *URL, const char
/* get headers. http_next_header expects one line readahead */
if (fetch_getln(conn) == -1) {
- fetch_syserr();
- goto ouch;
+ fetch_syserr();
+ goto ouch;
}
do {
- switch ((h = http_next_header(conn, &headerbuf, &p))) {
+ switch ((h = http_next_header(conn, &headerbuf, &p))) {
case hdr_syserror:
fetch_syserr();
goto ouch;
@@ -1785,7 +1790,7 @@ http_request(struct url *URL, const char
conn->err != HTTP_USE_PROXY) {
n = 1;
break;
- }
+ }
if (new)
free(new);
if (verbose)
More information about the svn-src-stable-9
mailing list