From: Ryan Bloom Date: Thu, 4 Oct 2001 20:00:53 +0000 (+0000) Subject: Remove the Port directive. In it's place, the Listen directive X-Git-Tag: 2.0.26~107 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b7bc1a03e7019db904db233cde224c851b931ebb;p=thirdparty%2Fapache%2Fhttpd.git Remove the Port directive. In it's place, the Listen directive is now a required directive, which tells Apache what port to listen on. The ServerName directive has also been extended to accept an optional port. If the port is specified to the ServerName, the server will report that port whenever it reports the port that it is listening on. This change was made to ease configuration errors that stem from having a Port directive, and a Listen directive. In that situation, the server would only listen to the port specified by the Listen command, which caused a lot of confusion to users. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91293 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index be2375067d5..5773195f50c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,16 @@ Changes with Apache 2.0.26-dev + *) Remove the Port directive. In it's place, the Listen directive + is now a required directive, which tells Apache what port to + listen on. The ServerName directive has also been extended + to accept an optional port. If the port is specified to the + ServerName, the server will report that port whenever it + reports the port that it is listening on. This change was + made to ease configuration errors that stem from having a Port + directive, and a Listen directive. In that situation, the server + would only listen to the port specified by the Listen command, + which caused a lot of confusion to users. [Ryan Bloom] + *) Added mod_mime_magic, mod_unique_id and mod_vhost_alias to the Win32 build, as loadable modules. [William Rowe] diff --git a/docs/conf/httpd-std.conf b/docs/conf/httpd-std.conf index cad4b438df5..f3cd0ca90fa 100644 --- a/docs/conf/httpd-std.conf +++ b/docs/conf/httpd-std.conf @@ -230,12 +230,6 @@ Listen @@Port@@ # virtual host being defined. # -# -# Port: The port to which the standalone server listens. For -# ports < 1023, you will need httpd to be run as root initially. -# -Port @@Port@@ - # # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. @@ -270,7 +264,7 @@ ServerAdmin you@your.address # You will have to access it by its address (e.g., http://123.45.67.89/) # anyway, and this will make redirections work in a sensible way. # -#ServerName new.host.name +#ServerName new.host.name:80 # # DocumentRoot: The directory out of which you will serve your diff --git a/docs/manual/mod/core.html b/docs/manual/mod/core.html index a38fa95c4c0..ac30ccc7210 100644 --- a/docs/manual/mod/core.html +++ b/docs/manual/mod/core.html @@ -100,8 +100,6 @@
  • Options
  • -
  • Port
  • -
  • Require
  • RLimitCPU
  • @@ -1907,72 +1905,6 @@ All.


    -

    Port directive

    - - Syntax: Port - number
    - Default: Port - 80
    - Context: server config
    - Status: core - -

    Number is a number from 0 to 65535; some port - numbers (especially below 1024) are reserved for particular - protocols. See /etc/services for a list of some - defined ports; the standard port for the http protocol is - 80.

    - -

    The Port directive has two behaviors, the first of which is - necessary for NCSA backwards compatibility (and which is - confusing in the context of Apache).

    - - - The primary behavior of Port should be considered to be similar - to that of the ServerName directive. - The ServerName and Port together specify what you consider to - be the canonical address of the server. (See also UseCanonicalName.) - -

    Port 80 is one of Unix's special ports. All ports numbered - below 1024 are reserved for system use, i.e., regular - (non-root) users cannot make use of them; instead they can only - use higher port numbers. To use port 80, you must start the - server from the root account. After binding to the port and - before accepting requests, Apache will change to a low - privileged user as set by the User directive.

    - -

    If you cannot use port 80, choose any other unused port. - Non-root users will have to choose a port number higher than - 1023, such as 8000.

    - -

    SECURITY: if you do start the server as root, be sure not to - set User to root. If you run - the server as root whilst handling connections, your site may - be open to a major security attack.

    -
    -

    Require directive

    Syntax: ServerName - fully-qualified-domain-name
    + fully-qualified-domain-name:port
    Context: server config, virtual host
    @@ -2288,7 +2220,7 @@ return the preferred hostname. For example:

    - ServerName www.example.com + ServerName www.example.com:80
    would be used if the canonical (main) name of the actual machine were simple.example.com. @@ -2300,6 +2232,12 @@ section specifies what hostname must appear in the request's Host: header to match this virtual host.

    +

    This directive now takes allows a port to be added to the + server name. This allows an admin to assign the canonical + port at the same time that the canonical name is assigned. + The Port directive, which used to perform this role, has also + been removed, easing configuration for all users. +

    See Also:
    DNS Issues
    Apache virtual host diff --git a/docs/manual/mod/mpm_common.html b/docs/manual/mod/mpm_common.html index bc414cee85b..c9465501454 100644 --- a/docs/manual/mod/mpm_common.html +++ b/docs/manual/mod/mpm_common.html @@ -208,9 +208,10 @@

    The Listen directive instructs Apache to listen to only specific IP addresses or ports; by default it responds to - requests on all IP interfaces, but only on the port given by - the Port - directive.

    + requests on all IP interfaces. The Listen directive is now + a required directive. If it is not in the config file, the + server will fail to start. This is a change from previous + versions of Apache.

    The Listen directive tells the server to accept incoming requests on the specified port or address-and-port combination. diff --git a/server/core.c b/server/core.c index c15bb173959..7bbe1d744e9 100644 --- a/server/core.c +++ b/server/core.c @@ -1603,15 +1603,27 @@ static const char *set_server_string_slot(cmd_parms *cmd, void *dummy, return NULL; } -static const char *server_port(cmd_parms *cmd, void *dummy, const char *arg) +static const char *server_hostname_port(cmd_parms *cmd, void *dummy, const char *arg) { const char *err = ap_check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT); + const char *portstr; + const char *server; int port; if (err != NULL) { return err; } - port = atoi(arg); + portstr = ap_strchr_c(arg, ':'); + if (portstr) { + cmd->server->server_hostname = apr_pstrndup(cmd->pool, arg, + portstr - arg); + portstr++; + port = atoi(portstr); + } + else { + cmd->server->server_hostname = apr_pstrdup(cmd->pool, arg); + port = 80; + } if (port <= 0 || port >= 65536) { /* 65536 == 1<<16 */ return apr_pstrcat(cmd->temp_pool, "The port number \"", arg, "\" is outside the appropriate range " @@ -2411,7 +2423,8 @@ AP_INIT_TAKE1("DefaultType", ap_set_string_slot, /* Old server config file commands */ -AP_INIT_TAKE1("Port", server_port, NULL, RSRC_CONF, "A TCP port number"), +AP_INIT_TAKE1("Port", ap_set_deprecated, NULL, RSRC_CONF, + "Port was replaced with Listen in Apache 2.0"), AP_INIT_TAKE1("HostnameLookups", set_hostname_lookups, NULL, ACCESS_CONF|RSRC_CONF, "\"on\" to enable, \"off\" to disable reverse DNS lookups, or \"double\" to " @@ -2419,9 +2432,8 @@ AP_INIT_TAKE1("HostnameLookups", set_hostname_lookups, NULL, AP_INIT_TAKE1("ServerAdmin", set_server_string_slot, (void *)APR_XtOffsetOf (server_rec, server_admin), RSRC_CONF, "The email address of the server administrator"), -AP_INIT_TAKE1("ServerName", set_server_string_slot, - (void *)APR_XtOffsetOf (server_rec, server_hostname), RSRC_CONF, - "The hostname of the server"), +AP_INIT_TAKE1("ServerName", server_hostname_port, NULL, RSRC_CONF, + "The hostname and port of the server"), AP_INIT_TAKE1("ServerSignature", set_signature_flag, NULL, OR_ALL, "En-/disable server signature (on|off|email)"), AP_INIT_TAKE1("ServerRoot", set_server_root, NULL, RSRC_CONF, diff --git a/server/listen.c b/server/listen.c index 8225efc9e97..8068dce659e 100644 --- a/server/listen.c +++ b/server/listen.c @@ -273,11 +273,10 @@ int ap_listen_open(process_rec *process, apr_port_t port) ap_listen_rec *next; int num_open; - /* allocate a default listener if necessary */ - if (ap_listeners == NULL) { - alloc_listener(process, NULL, (apr_port_t)(port ? port : DEFAULT_HTTP_PORT)); - } - + /* Don't allocate a default listener. If we need to listen to a + * port, then the user needs to have a Listen directive in their + * config file. + */ num_open = 0; for (lr = ap_listeners; lr; lr = lr->next) { if (lr->active) {