You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by dg...@hyperreal.org on 1998/06/09 06:36:47 UTC

cvs commit: apache-1.3/src/modules/standard mod_log_config.c

dgaudet     98/06/08 21:36:47

  Modified:    src      CHANGES
               src/modules/standard mod_log_config.c
  Log:
  fix the inheritance of log formats from main server to vhosts
  
  Submitted by:	Christof Damian <da...@mediaconsult.com>
  
  Revision  Changes    Path
  1.898     +3 -0      apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.897
  retrieving revision 1.898
  diff -u -r1.897 -r1.898
  --- CHANGES	1998/06/08 06:26:14	1.897
  +++ CHANGES	1998/06/09 04:36:44	1.898
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.1
   
  +  *) mod_log_config wouldn't let vhosts use log formats defined in the
  +     main server.  [Christof Damian <da...@mediaconsult.com>]
  +
     *) mod_usertrack was corrupting the client hostname.  As part of the
        fix, the cookie values were slightly extended to include the
        fully qualified hostname of the client.  [Dean Gaudet] PR#2229, 2366
  
  
  
  1.60      +33 -13    apache-1.3/src/modules/standard/mod_log_config.c
  
  Index: mod_log_config.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_log_config.c,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- mod_log_config.c	1998/05/29 08:18:51	1.59
  +++ mod_log_config.c	1998/06/09 04:36:47	1.60
  @@ -215,6 +215,7 @@
    */
   
   typedef struct {
  +    char *default_format_string;
       array_header *default_format;
       array_header *config_logs;
       array_header *server_config_logs;
  @@ -232,6 +233,7 @@
   
   typedef struct {
       char *fname;
  +    char *format_string;
       array_header *format;
       int log_fd;
   #ifdef BUFFERED_LOGS
  @@ -782,6 +784,7 @@
       multi_log_state *mls = (multi_log_state *) ap_palloc(p, sizeof(multi_log_state));
   
       mls->config_logs = ap_make_array(p, 1, sizeof(config_log_state));
  +    mls->default_format_string = NULL;
       mls->default_format = NULL;
       mls->server_config_logs = NULL;
       mls->formats = ap_make_table(p, 4);
  @@ -800,13 +803,39 @@
   {
       multi_log_state *base = (multi_log_state *) basev;
       multi_log_state *add = (multi_log_state *) addv;
  +    char *format;
  +    const char *dummy;
   
       add->server_config_logs = base->config_logs;
       if (!add->default_format) {
  +        add->default_format_string = base->default_format_string;
           add->default_format = base->default_format;
       }
       add->formats = ap_overlay_tables(p, base->formats, add->formats);
   
  +    if (add->default_format_string) {
  +	format = ap_table_get(add->formats, add->default_format_string);
  +	if (format) {
  +	    add->default_format = parse_log_string(p, format, &dummy);
  +	}
  +    }    
  +
  +    if (add->config_logs) {
  +	config_log_state *clsarray = (config_log_state *) add->config_logs->elts;
  +	int i;
  +
  +	for (i = 0; i < add->config_logs->nelts; ++i) {
  +	    config_log_state *cls = &clsarray[i];
  +
  +	    if (cls->format_string) {
  +		format = ap_table_get(add->formats, cls->format_string);
  +		if (format) {
  +		    cls->format = parse_log_string(p, format, &dummy);
  +		}
  +	    }
  +	}
  +    }
  +
       return add;
   }
   
  @@ -817,7 +846,6 @@
                                 char *name)
   {
       const char *err_string = NULL;
  -    char *format;
       multi_log_state *mls = ap_get_module_config(cmd->server->module_config,
                                                &config_log_module);
   
  @@ -833,14 +861,8 @@
           }
       }
       else {
  -        /*
  -         * See if we were given a name rather than a format string.
  -         */
  -        format = ap_table_get(mls->formats, fmt);
  -        if (format == NULL) {
  -            format = fmt;
  -        }
  -        mls->default_format = parse_log_string(cmd->pool, format, &err_string);
  +        mls->default_format_string = fmt;
  +        mls->default_format = parse_log_string(cmd->pool, fmt, &err_string);
       }
       return err_string;
   }
  @@ -852,17 +874,15 @@
       multi_log_state *mls = ap_get_module_config(cmd->server->module_config,
                                                &config_log_module);
       config_log_state *cls;
  -    char *format;
   
       cls = (config_log_state *) ap_push_array(mls->config_logs);
       cls->fname = fn;
  +    cls->format_string = fmt;
       if (!fmt) {
           cls->format = NULL;
       }
       else {
  -        format = ap_table_get(mls->formats, fmt);
  -        format = (format != NULL) ? format : fmt;
  -        cls->format = parse_log_string(cmd->pool, format, &err_string);
  +        cls->format = parse_log_string(cmd->pool, fmt, &err_string);
       }
       cls->log_fd = -1;