Merge branch 'bug/schemebug'

This commit is contained in:
Tatsuya Kinoshita
2013-10-14 23:04:23 +09:00

31
url.c
View File

@@ -121,6 +121,7 @@ static struct table2 DefaultGuess[] = {
}; };
static void add_index_file(ParsedURL *pu, URLFile *uf); static void add_index_file(ParsedURL *pu, URLFile *uf);
static char * schemeNumToName(int scheme);
/* #define HTTP_DEFAULT_FILE "/index.html" */ /* #define HTTP_DEFAULT_FILE "/index.html" */
@@ -1284,6 +1285,18 @@ getURLScheme(char **url)
return scheme; return scheme;
} }
static char *
schemeNumToName(int scheme)
{
int i;
for (i = 0; schemetable[i].cmdname != NULL; i++) {
if (schemetable[i].cmd == scheme)
return schemetable[i].cmdname;
}
return NULL;
}
static char * static char *
otherinfo(ParsedURL *target, ParsedURL *current, char *referer) otherinfo(ParsedURL *target, ParsedURL *current, char *referer)
{ {
@@ -1616,7 +1629,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current,
pu->host != NULL && !check_no_proxy(pu->host)) { pu->host != NULL && !check_no_proxy(pu->host)) {
hr->flag |= HR_FLAG_PROXY; hr->flag |= HR_FLAG_PROXY;
sock = openSocket(FTP_proxy_parsed.host, sock = openSocket(FTP_proxy_parsed.host,
schemetable[FTP_proxy_parsed.scheme].cmdname, schemeNumToName(FTP_proxy_parsed.scheme),
FTP_proxy_parsed.port); FTP_proxy_parsed.port);
if (sock < 0) if (sock < 0)
return uf; return uf;
@@ -1658,15 +1671,15 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current,
} }
else if (pu->scheme == SCM_HTTPS) { else if (pu->scheme == SCM_HTTPS) {
sock = openSocket(HTTPS_proxy_parsed.host, sock = openSocket(HTTPS_proxy_parsed.host,
schemetable[HTTPS_proxy_parsed.scheme]. schemeNumToName(HTTPS_proxy_parsed.scheme),
cmdname, HTTPS_proxy_parsed.port); HTTPS_proxy_parsed.port);
sslh = NULL; sslh = NULL;
} }
else { else {
#endif /* USE_SSL */ #endif /* USE_SSL */
sock = openSocket(HTTP_proxy_parsed.host, sock = openSocket(HTTP_proxy_parsed.host,
schemetable[HTTP_proxy_parsed.scheme]. schemeNumToName(HTTP_proxy_parsed.scheme),
cmdname, HTTP_proxy_parsed.port); HTTP_proxy_parsed.port);
#ifdef USE_SSL #ifdef USE_SSL
sslh = NULL; sslh = NULL;
} }
@@ -1698,8 +1711,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current,
} }
} }
else { else {
sock = openSocket(pu->host, sock = openSocket(pu->host, schemeNumToName(pu->scheme), pu->port);
schemetable[pu->scheme].cmdname, pu->port);
if (sock < 0) { if (sock < 0) {
*status = HTST_MISSING; *status = HTST_MISSING;
return uf; return uf;
@@ -1763,7 +1775,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current,
pu->host != NULL && !check_no_proxy(pu->host)) { pu->host != NULL && !check_no_proxy(pu->host)) {
hr->flag |= HR_FLAG_PROXY; hr->flag |= HR_FLAG_PROXY;
sock = openSocket(GOPHER_proxy_parsed.host, sock = openSocket(GOPHER_proxy_parsed.host,
schemetable[GOPHER_proxy_parsed.scheme].cmdname, schemeNumToName(GOPHER_proxy_parsed.scheme),
GOPHER_proxy_parsed.port); GOPHER_proxy_parsed.port);
if (sock < 0) if (sock < 0)
return uf; return uf;
@@ -1771,8 +1783,7 @@ openURL(char *url, ParsedURL *pu, ParsedURL *current,
tmp = HTTPrequest(pu, current, hr, extra_header); tmp = HTTPrequest(pu, current, hr, extra_header);
} }
else { else {
sock = openSocket(pu->host, sock = openSocket(pu->host, schemeNumToName(pu->scheme), pu->port);
schemetable[pu->scheme].cmdname, pu->port);
if (sock < 0) if (sock < 0)
return uf; return uf;
if (pu->file == NULL) if (pu->file == NULL)