In practice, "wget http://host.com/" always uses port 80.
People explicitly set non-standard ports via options or parameters
("telnet 1.2.3.4 567" or "telnet 1.2.3.4 ftp") instead of modifying
/etc/services.
function old new delta
telnet_main 1466 1464 -2
rdate_main 215 198 -17
fakeidentd_main 269 252 -17
parse_url 459 392 -67
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/4 up/down: 0/-103) Total: -103 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
int bb_getsockname(int sockfd, void *addr, socklen_t addrlen) FAST_FUNC;
/* NB: returns port in host byte order */
unsigned bb_lookup_port(const char *port, const char *protocol, unsigned default_port) FAST_FUNC;
+#if ENABLE_FEATURE_ETC_SERVICES
+# define bb_lookup_std_port(portstr, protocol, portnum) bb_lookup_port(portstr, protocol, portnum)
+#else
+# define bb_lookup_std_port(portstr, protocol, portnum) (portnum)
+#endif
typedef struct len_and_sockaddr {
socklen_t len;
union {
a rarely used feature which allows you to use names
instead of IP/mask pairs in route command.
+config FEATURE_ETC_SERVICES
+ bool "Consult /etc/services even for well-known ports"
+ default n
+ help
+ Look up e.g. "telnet" and "http" in /etc/services file
+ instead of assuming ports 23 and 80.
+ This is almost never necessary (everybody uses standard ports),
+ and it makes sense to avoid reading this file.
+ If you disable this option, in the cases where port is explicitly
+ specified as a service name (e.g. "telnet HOST PORTNAME"),
+ it will still be looked up in /etc/services.
+
config FEATURE_EDITING
bool "Command line editing"
default y
fd = 0;
if (!(opt & OPT_inetdwait)) {
fd = create_and_bind_stream_or_die(bind_address,
- bb_lookup_port("identd", "tcp", 113));
+ bb_lookup_std_port("identd", "tcp", 113));
xlisten(fd, 5);
}
if (!*argv)
bb_show_usage();
host = *argv++;
- port = bb_lookup_port(*argv ? *argv++ : "telnet", "tcp", 23);
+ port = *argv ? bb_lookup_port(*argv++, "tcp", 23)
+ : bb_lookup_std_port("telnet", "tcp", 23);
if (*argv) /* extra params?? */
bb_show_usage();
*p = '\0';
h->host = p + 3;
if (strcmp(url, P_FTP) == 0) {
- h->port = bb_lookup_port(P_FTP, "tcp", 21);
+ h->port = bb_lookup_std_port(P_FTP, "tcp", 21);
} else
#if SSL_SUPPORTED
# if ENABLE_FEATURE_WGET_HTTPS
if (strcmp(url, P_FTPS) == 0) {
- h->port = bb_lookup_port(P_FTPS, "tcp", 990);
+ h->port = bb_lookup_std_port(P_FTPS, "tcp", 990);
h->protocol = P_FTPS;
} else
# endif
if (strcmp(url, P_HTTPS) == 0) {
- h->port = bb_lookup_port(P_HTTPS, "tcp", 443);
+ h->port = bb_lookup_std_port(P_HTTPS, "tcp", 443);
h->protocol = P_HTTPS;
} else
#endif
if (strcmp(url, P_HTTP) == 0) {
http:
- h->port = bb_lookup_port(P_HTTP, "tcp", 80);
+ h->port = bb_lookup_std_port(P_HTTP, "tcp", 80);
h->protocol = P_HTTP;
} else {
*p = ':';
alarm(10);
signal(SIGALRM, socket_timeout);
- fd = create_and_connect_stream_or_die(host, bb_lookup_port("time", "tcp", 37));
+ fd = create_and_connect_stream_or_die(host, bb_lookup_std_port("time", "tcp", 37));
if (safe_read(fd, &nett, 4) != 4) /* read time from server */
bb_error_msg_and_die("%s: %s", host, "short read");