add ipv6 literal support to wget
This commit is contained in:
parent
1cb2622f9c
commit
cc20ebc11e
@ -589,6 +589,13 @@ config CONFIG_FEATURE_WGET_AUTHENTICATION
|
|||||||
help
|
help
|
||||||
Support authenticated HTTP transfers.
|
Support authenticated HTTP transfers.
|
||||||
|
|
||||||
|
config CONFIG_FEATURE_WGET_IP6_LITERAL
|
||||||
|
bool " Enable IPv6 literal addresses"
|
||||||
|
default y
|
||||||
|
depends on CONFIG_WGET
|
||||||
|
help
|
||||||
|
Support IPv6 address literal notation in URLs.
|
||||||
|
|
||||||
source networking/udhcp/Config.in
|
source networking/udhcp/Config.in
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@ -310,7 +310,12 @@ int wget_main(int argc, char **argv)
|
|||||||
* Send HTTP request.
|
* Send HTTP request.
|
||||||
*/
|
*/
|
||||||
if (proxy) {
|
if (proxy) {
|
||||||
fprintf(sfp, "GET %stp://%s:%d/%s HTTP/1.1\r\n",
|
const char *format = "GET %stp://%s:%d/%s HTTP/1.1\r\n";
|
||||||
|
#ifdef CONFIG_FEATURE_WGET_IP6_LITERAL
|
||||||
|
if (strchr (target.host, ':'))
|
||||||
|
format = "GET %stp://[%s]:%d/%s HTTP/1.1\r\n";
|
||||||
|
#endif
|
||||||
|
fprintf(sfp, format,
|
||||||
target.is_ftp ? "f" : "ht", target.host,
|
target.is_ftp ? "f" : "ht", target.host,
|
||||||
target.port, target.path);
|
target.port, target.path);
|
||||||
} else {
|
} else {
|
||||||
@ -525,7 +530,7 @@ read_response:
|
|||||||
|
|
||||||
void parse_url(char *url, struct host_info *h)
|
void parse_url(char *url, struct host_info *h)
|
||||||
{
|
{
|
||||||
char *cp, *sp, *up;
|
char *cp, *sp, *up, *pp;
|
||||||
|
|
||||||
if (strncmp(url, "http://", 7) == 0) {
|
if (strncmp(url, "http://", 7) == 0) {
|
||||||
h->port = 80;
|
h->port = 80;
|
||||||
@ -553,7 +558,24 @@ void parse_url(char *url, struct host_info *h)
|
|||||||
} else
|
} else
|
||||||
h->user = NULL;
|
h->user = NULL;
|
||||||
|
|
||||||
cp = strchr(h->host, ':');
|
pp = h->host;
|
||||||
|
|
||||||
|
#ifdef CONFIG_FEATURE_WGET_IP6_LITERAL
|
||||||
|
if (h->host[0] == '[') {
|
||||||
|
char *ep;
|
||||||
|
|
||||||
|
ep = h->host + 1;
|
||||||
|
while (*ep == ':' || isdigit (*ep))
|
||||||
|
ep++;
|
||||||
|
if (*ep == ']') {
|
||||||
|
h->host++;
|
||||||
|
*ep = '\0';
|
||||||
|
pp = ep + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
cp = strchr(pp, ':');
|
||||||
if (cp != NULL) {
|
if (cp != NULL) {
|
||||||
*cp++ = '\0';
|
*cp++ = '\0';
|
||||||
h->port = atoi(cp);
|
h->port = atoi(cp);
|
||||||
@ -819,7 +841,7 @@ progressmeter(int flag)
|
|||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* $Id: wget.c,v 1.57 2003/08/29 06:25:04 bug1 Exp $
|
* $Id: wget.c,v 1.58 2003/09/10 23:52:15 bug1 Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user