You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Alexei Kosut <ak...@hyperreal.com> on 1996/03/30 08:16:45 UTC
cvs commit: apache/src CHANGES http_config.c http_config.h http_core.c http_main.c http_protocol.c httpd.h
akosut 96/03/29 23:16:45
Modified: src CHANGES http_config.c http_config.h http_core.c
http_main.c http_protocol.c httpd.h
Log:
Take the <HostAlias> functionality added earlier, and fold it back
into <VirtualHost>. This hopefully makes for a config file that makes
more sense, plus it allows for easier transition, since the conf files
do not have to be changed. A ServerAlias directive has been added,
which goes inside the <VirtualHost> and can provide additional names
which that host will recognize itself as. These can include wildcards,
e.g. "ServerAlias *.foo.com foo.bar.net foo.com". The canonical name
is given by the <VirtualHost> directive or a ServerName.
Revision Changes Path
1.17 +6 -4 apache/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache/src/CHANGES,v
retrieving revision 1.16
retrieving revision 1.17
diff -C3 -r1.16 -r1.17
*** CHANGES 1996/03/28 07:59:29 1.16
--- CHANGES 1996/03/30 07:16:39 1.17
***************
*** 1,7 ****
! *) Add <HostAlias> directive, similar to <VirtualHost>, but does not
! require additional IP addresses - instead uses the Host: header sent
! by some (but not all) clients - those that do not will get the normal
! set of documents. Use as: <HostAlias foo.bar.net *.foo.com foo.com>
*) Added Status module with preliminary documentation available
http://www.apache.org/docs/1.1/mod_status.html
--- 1,9 ----
! *) Modify <VirtualHost> directive to work without the system supporting
! multiple IP addresses. It can now take advantage of the Host: header
! sent by some (but not all) new web browsers (e.g. Netscape 2.0). Those
! that do not support it will get the default documents. More names or
! name patters can be added using the ScriptAlias directive, e.g.
! "ScriptAlias foo.bar.net *.foo.com foo.com"
*) Added Status module with preliminary documentation available
http://www.apache.org/docs/1.1/mod_status.html
1.9 +2 -32 apache/src/http_config.c
Index: http_config.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_config.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C3 -r1.8 -r1.9
*** http_config.c 1996/03/28 07:59:30 1.8
--- http_config.c 1996/03/30 07:16:39 1.9
***************
*** 657,694 ****
s->next = NULL;
s->is_virtual = 1;
!
! s->module_config = create_empty_config (p);
! s->lookup_defaults = create_per_dir_config (p);
!
! return s;
! }
!
! server_rec *init_host_alias (pool *p, char *hostnames)
! {
! server_rec *s = (server_rec *)pcalloc (p, sizeof (server_rec));
!
! #ifdef RLIMIT_NOFILE
! struct rlimit limits;
!
! getrlimit ( RLIMIT_NOFILE, &limits );
! if ( limits.rlim_cur < limits.rlim_max ) {
! limits.rlim_cur += 2;
! if ( setrlimit ( RLIMIT_NOFILE, &limits ) < 0 )
! fprintf (stderr, "Cannot exceed hard limit for open files");
! }
! #endif
!
! s->server_admin = NULL;
! s->server_hostname = NULL;
! s->error_fname = NULL;
! s->srm_confname = NULL;
! s->access_confname = NULL;
! s->timeout = 0;
! s->names = pstrdup(p, hostnames);
! s->next = NULL;
!
! s->is_virtual = 2;
s->module_config = create_empty_config (p);
s->lookup_defaults = create_per_dir_config (p);
--- 657,664 ----
s->next = NULL;
s->is_virtual = 1;
! s->virthost = pstrdup(p, hostname);
! s->names = NULL;
s->module_config = create_empty_config (p);
s->lookup_defaults = create_per_dir_config (p);
1.4 +0 -1 apache/src/http_config.h
Index: http_config.h
===================================================================
RCS file: /export/home/cvs/apache/src/http_config.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C3 -r1.3 -r1.4
*** http_config.h 1996/03/28 07:59:30 1.3
--- http_config.h 1996/03/30 07:16:40 1.4
***************
*** 242,248 ****
char *srm_command_loop (cmd_parms *parms, void *config);
server_rec *init_virtual_host (pool *p, char *hostname);
- server_rec *init_host_alias (pool *p, char *hostnames);
int is_virtual_server (server_rec *);
void process_resource_config(server_rec *s, char *fname, pool *p, pool *ptemp);
--- 242,247 ----
1.8 +3 -41 apache/src/http_core.c
Index: http_core.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_core.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C3 -r1.7 -r1.8
*** http_core.c 1996/03/28 07:59:30 1.7
--- http_core.c 1996/03/30 07:16:40 1.8
***************
*** 550,594 ****
return errmsg;
}
- char *end_hostalias_magic = "</HostAlias> out of place";
-
- char *end_hostalias_section (cmd_parms *cmd, void *dummy) {
- return end_hostalias_magic;
- }
-
- char *hostalias_section (cmd_parms *cmd, void *dummy, char *arg)
- {
- server_rec *main_server = cmd->server, *s;
- char *errmsg, *endp = strrchr (arg, '>');
- pool *p = cmd->pool, *ptemp = cmd->temp_pool;
-
- if (endp) *endp = '\0';
-
- if (main_server->is_virtual)
- return "<HostAlias> doesn't nest!";
-
- s = init_host_alias (p, arg);
- s->next = main_server->next;
- main_server->next = s;
-
- cmd->server = s;
- errmsg = srm_command_loop (cmd, s->lookup_defaults);
- cmd->server = main_server;
-
- if (s->srm_confname)
- process_resource_config (s, s->srm_confname, p, ptemp);
-
- if (s->access_confname)
- process_resource_config (s, s->access_confname, p, ptemp);
-
- if (errmsg == end_hostalias_magic) {
- if (!s->server_hostname)
- return "ServerName must be specified in a <HostAlias>";
- return NULL;
- }
- return errmsg;
- }
-
char *set_server_string_slot (cmd_parms *cmd, void *dummy, char *arg)
{
/* This one's pretty generic... */
--- 550,555 ----
***************
*** 793,798 ****
--- 754,762 ----
{ "ResourceConfig", set_server_string_slot,
(void *)XtOffsetOf (server_rec, srm_confname), RSRC_CONF, TAKE1,
"the filename of the resource config file" },
+ { "ServerAlias", set_server_string_slot,
+ (void *)XtOffsetOf (server_rec, names), RSRC_CONF, RAW_ARGS,
+ "a name or names alternately used to access the server" },
{ "Timeout", set_timeout, NULL, RSRC_CONF, TAKE1, "timeout duration (sec)"},
{ "KeepAliveTimeout", set_keep_alive_timeout, NULL, RSRC_CONF, TAKE1, "Keep-Alive timeout duration (sec)"},
{ "KeepAlive", set_keep_alive, NULL, RSRC_CONF, TAKE1, "Maximum Keep-Alive requests per connection (0 to disable)" },
***************
*** 812,819 ****
"a port number or a numeric IP address and a port number"},
{ "<VirtualHost", virtualhost_section, NULL, RSRC_CONF, RAW_ARGS, NULL },
{ "</VirtualHost>", end_virtualhost_section, NULL, RSRC_CONF, NO_ARGS, NULL },
- { "<HostAlias", hostalias_section, NULL, RSRC_CONF, RAW_ARGS, NULL },
- { "</HostAlias>", end_hostalias_section, NULL, RSRC_CONF, NO_ARGS, NULL },
{ NULL },
};
--- 776,781 ----
1.16 +17 -4 apache/src/http_main.c
Index: http_main.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_main.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C3 -r1.15 -r1.16
*** http_main.c 1996/03/29 15:44:32 1.15
--- http_main.c 1996/03/30 07:16:41 1.16
***************
*** 976,995 ****
void default_server_hostnames(server_rec *s)
{
! struct hostent *h;
char *def_hostname;
/* Main host first */
if (!s->server_hostname)
s->server_hostname = get_local_host(pconf);
def_hostname = s->server_hostname;
/* Then virtual hosts */
! for (s = s->next; s; s = s->next)
! if (!s->server_hostname) {
! if (s->host_addr.s_addr == htonl(INADDR_ANY))
s->server_hostname = def_hostname;
else
{
--- 976,1007 ----
void default_server_hostnames(server_rec *s)
{
! struct hostent *h, *main;
char *def_hostname;
+ int n;
+
/* Main host first */
if (!s->server_hostname)
s->server_hostname = get_local_host(pconf);
def_hostname = s->server_hostname;
+ main = gethostbyname(def_hostname);
/* Then virtual hosts */
! for (s = s->next; s; s = s->next) {
! /* Check to see if we might be a HTTP/1.1 virtual host - same IP */
! for (n = 0; main->h_addr_list[n] != NULL; n++) {
! if (s->host_addr.s_addr ==
! (((struct in_addr *)(main->h_addr_list[n]))->s_addr))
! s->is_virtual = 2;
! }
!
! if (!s->server_hostname) {
! if (s->is_virtual == 2)
! s->server_hostname = s->virthost;
! else if (s->host_addr.s_addr == htonl(INADDR_ANY))
s->server_hostname = def_hostname;
else
{
***************
*** 999,1004 ****
--- 1011,1017 ----
s->server_hostname = pstrdup (pconf, (char *)h->h_name);
}
}
+ }
}
void abort_connection (conn_rec *c)
1.14 +9 -1 apache/src/http_protocol.c
Index: http_protocol.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_protocol.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C3 -r1.13 -r1.14
*** http_protocol.c 1996/03/28 07:59:31 1.13
--- http_protocol.c 1996/03/30 07:16:41 1.14
***************
*** 361,367 ****
for (s = r->server->next; s; s = s->next) {
char *names = s->names;
! if (s->is_virtual != 2) continue; /* No a HostAlias */
while (*names) {
char *name = getword_conf (r->pool, &names);
--- 361,375 ----
for (s = r->server->next; s; s = s->next) {
char *names = s->names;
! if (!strcasecmp(host, s->server_hostname)) {
! r->server = r->connection->server = s;
! if (r->hostlen && !strncmp(r->uri, "http://", 7)) {
! r->uri += r->hostlen;
! parse_uri(r, r->uri);
! }
! }
!
! if (!names) continue;
while (*names) {
char *name = getword_conf (r->pool, &names);
1.13 +1 -0 apache/src/httpd.h
Index: httpd.h
===================================================================
RCS file: /export/home/cvs/apache/src/httpd.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -C3 -r1.12 -r1.13
*** httpd.h 1996/03/28 07:59:32 1.12
--- httpd.h 1996/03/30 07:16:42 1.13
***************
*** 462,467 ****
--- 462,468 ----
int keep_alive; /* Maximum requests per connection */
char *names; /* Wildcarded names for HostAlias servers */
+ char *virthost; /* The name given in <VirtualHost> */
};
/* These are more like real hosts than virtual hosts */