# HG changeset patch # User gthomas # Date 1077793928 0 # Node ID fc4fa5d81cbac319c3c45c79d09204d3400c37d7 # Parent 9f0d02327506cf525b4e91eb1dce0a718e1492a3 Allow port for HTTP connections to be overridden - from Jani Monoses diff --git a/packages/redboot/current/ChangeLog b/packages/redboot/current/ChangeLog --- a/packages/redboot/current/ChangeLog +++ b/packages/redboot/current/ChangeLog @@ -1,3 +1,8 @@ +2004-02-26 Jani Monoses + + * src/load.c: + * src/net/http_client.c: Allow overriding the default HTTP port. + 2004-02-25 Gratian Crisan * src/xyzModem.c: Do not read an information header for XModem diff --git a/packages/redboot/current/src/load.c b/packages/redboot/current/src/load.c --- a/packages/redboot/current/src/load.c +++ b/packages/redboot/current/src/load.c @@ -584,7 +584,7 @@ do_load(int argc, char *argv[]) char *mode_str; #ifdef CYGPKG_REDBOOT_NETWORKING struct sockaddr_in host; - bool hostname_set; + bool hostname_set, port_set; char *hostname; #endif bool decompress = false; @@ -600,6 +600,7 @@ do_load(int argc, char *argv[]) connection_info_t info; getc_io_funcs_t *io = NULL; struct load_io_entry *io_tab; + unsigned int port; //int because it's an OPTION_ARG_TYPE_NUM, but will be cast to short #ifdef CYGSEM_REDBOOT_VALIDATE_USER_RAM_LOADS bool spillover_ok = false; #endif @@ -630,6 +631,9 @@ do_load(int argc, char *argv[]) init_opts(&opts[num_options], 'h', true, OPTION_ARG_TYPE_STR, (void *)&hostname, (bool *)&hostname_set, "host name or IP address"); num_options++; + init_opts(&opts[num_options], 'p', true, OPTION_ARG_TYPE_NUM, + (void *)&port, (bool *)&port_set, "TCP port"); + num_options++; #endif #ifdef CYGBLD_BUILD_REDBOOT_WITH_ZLIB init_opts(&opts[num_options], 'd', false, OPTION_ARG_TYPE_FLG, @@ -655,6 +659,8 @@ do_load(int argc, char *argv[]) return; } } + if (port_set) + host.sin_port = port; #endif if (chan >= CYGNUM_HAL_VIRTUAL_VECTOR_NUM_CHANNELS) { diag_printf("Invalid I/O channel: %d\n", chan); diff --git a/packages/redboot/current/src/net/http_client.c b/packages/redboot/current/src/net/http_client.c --- a/packages/redboot/current/src/net/http_client.c +++ b/packages/redboot/current/src/net/http_client.c @@ -85,7 +85,8 @@ http_stream_open(connection_info_t *info int res; struct _stream *s = &http_stream; - info->server->sin_port = 80; // HTTP port + if (!info->server->sin_port) + info->server->sin_port = 80; // HTTP port if ((res = __tcp_open(&s->sock, info->server, get_port++, 5000, err)) < 0) { *err = HTTP_OPEN; return -1;