httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ben Laurie <...@hyperreal.com>
Subject cvs commit: apache/src conf.h http_config.c http_config.h http_core.c http_core.h
Date Sat, 27 Jul 1996 13:08:32 GMT
ben         96/07/27 06:08:31

  Modified:    src       conf.h http_config.c http_config.h http_core.c
                        http_core.h
  Log:
  Major rehash of setrlimit stuff, for two reasons, first, to make it compile,
  and second, to remove much redundant code.
  
  Revision  Changes    Path
  1.26      +1 -0      apache/src/conf.h
  
  Index: conf.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/conf.h,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -C3 -r1.25 -r1.26
  *** conf.h	1996/07/25 19:49:03	1.25
  --- conf.h	1996/07/27 13:08:27	1.26
  ***************
  *** 217,222 ****
  --- 217,223 ----
    #define HAVE_SYS_SELECT_H
    #define USE_FCNTL_SERIALIZED_ACCEPT
    #define HAVE_MMAP
  + #define NEED_SYS_RESOURCE_H
    #define SecureWare
    
    /* Although SCO 5 defines these in <strings.h> (note the "s") they don't have
  
  
  
  1.15      +1 -0      apache/src/http_config.c
  
  Index: http_config.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_config.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -C3 -r1.14 -r1.15
  *** http_config.c	1996/07/16 19:39:12	1.14
  --- http_config.c	1996/07/27 13:08:28	1.15
  ***************
  *** 395,400 ****
  --- 395,401 ----
            return pstrcat (parms->pool, cmd->name, " not allowed here", NULL);
        
        parms->info = cmd->cmd_data;
  +     parms->cmd = cmd;
        
        switch (cmd->args_how) {
        case RAW_ARGS:
  
  
  
  1.8       +1 -0      apache/src/http_config.h
  
  Index: http_config.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_config.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -C3 -r1.7 -r1.8
  *** http_config.h	1996/07/16 19:39:12	1.7
  --- http_config.h	1996/07/27 13:08:28	1.8
  ***************
  *** 123,128 ****
  --- 123,129 ----
        char *path;			/* If configuring for a directory,
    				 * pathname of that directory.
    				 */
  +     command_rec *cmd;		/* configuration command */
    } cmd_parms;
    
    /* This structure records the existence of handlers in a module... */
  
  
  
  1.21      +50 -83    apache/src/http_core.c
  
  Index: http_core.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_core.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -C3 -r1.20 -r1.21
  *** http_core.c	1996/07/27 02:49:34	1.20
  --- http_core.c	1996/07/27 13:08:29	1.21
  ***************
  *** 839,859 ****
        return NULL;
    }
    
  ! char *set_limit_cpu (cmd_parms *cmd, core_dir_config *conf, char *arg)
    {
  - #ifdef RLIMIT_CPU
        char *str;
  !     quad_t cur = 0;
  !     quad_t max = 0;
    
        if ((str = getword_conf(cmd->pool, &arg)))
    	if (!strcasecmp(str, "max"))
  ! 	    cur = conf->limit_cpu->rlim_max;
    	else
    	    cur = atol(str);
        else {
  ! 	log_error("Invalid parameters for RLimitCPU", cmd->server);
  ! 	return NULL;
        }
        
        if ((str = getword_conf(cmd->pool, &arg)))
  --- 839,859 ----
        return NULL;
    }
    
  ! static void set_rlimit(cmd_parms *cmd, struct rlimit *limit, char *arg)
    {
        char *str;
  !     /* If your platform doesn't define rlim_t then typedef it in conf.h */
  !     rlim_t cur = 0;
  !     rlim_t max = 0;
    
        if ((str = getword_conf(cmd->pool, &arg)))
    	if (!strcasecmp(str, "max"))
  ! 	    cur = limit->rlim_max;
    	else
    	    cur = atol(str);
        else {
  ! 	log_printf(cmd->server, "Invalid parameters for %s", cmd->cmd->name);
  ! 	return;
        }
        
        if ((str = getword_conf(cmd->pool, &arg)))
  ***************
  *** 861,957 ****
    
        /* if we aren't running as root, cannot increase max */
        if (geteuid()) {
  ! 	conf->limit_cpu->rlim_cur = cur;
    	if (max)
  ! 	    log_error("Must be uid 0 to raise maximum RLIMIT_CPU", cmd->server);
        }
        else {
    	if (cur)
  ! 	    conf->limit_cpu->rlim_cur = cur;
    	if (max)
  ! 	    conf->limit_cpu->rlim_max = max;
        }
  - #else
  -     log_error("RLimitCPU not supported on this platform", cmd->server);
  - #endif
  -     return NULL;
    }
    
  ! char *set_limit_mem (cmd_parms *cmd, core_dir_config *conf, char *arg)
    {
  ! #if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM)
  !     char *str;
  !     quad_t cur = 0;
  !     quad_t max = 0;
  ! 
  !     if ((str = getword_conf(cmd->pool, &arg)))
  ! 	if (!strcasecmp(str, "max"))
  ! 	    cur = conf->limit_mem->rlim_max;
  ! 	else
  ! 	    cur = atol(str);
  !     else {
  ! 	log_error("Invalid parameters for RLimitMEM", cmd->server);
  ! 	return NULL;
  !     }
  !     
  !     if ((str = getword_conf(cmd->pool, &arg)))
  ! 	max = atol(str);
    
  !     /* if we aren't running as root, cannot increase max */
  !     if (geteuid()) {
  ! 	conf->limit_mem->rlim_cur = cur;
  ! 	if (max)
  ! 	    log_error("Must be uid 0 to change maximum RLIMIT_MEM", cmd->server);
  !     }
  !     else {
  ! 	if (cur)
  ! 	    conf->limit_mem->rlim_cur = cur;
  ! 	if (max)
  ! 	    conf->limit_mem->rlim_max = max;
  !     }
  ! #else
  !     log_error("RLimitMEM not supported on this platform", cmd->server);
    #endif
        return NULL;
    }
    
    char *set_limit_nproc (cmd_parms *cmd, core_dir_config *conf, char *arg)
    {
  ! #ifdef RLIMIT_NPROC
  !     char *str;
  !     quad_t cur = 0;
  !     quad_t max = 0;
  ! 
  !     if ((str = getword_conf(cmd->pool, &arg)))
  ! 	if (!strcasecmp(str, "max"))
  ! 	    cur = conf->limit_nproc->rlim_max;
  ! 	else
  ! 	    cur = atol(str);
  !     else {
  ! 	log_error("Invalid parameters for RLimitNPROC", cmd->server);
  ! 	return NULL;
  !     }
  !     
  !     if ((str = getword_conf(cmd->pool, &arg)))
  ! 	max = atol(str);
  ! 
  !     /* if we aren't running as root, cannot increase max */
  !     if (geteuid()) {
  ! 	conf->limit_nproc->rlim_cur = cur;
  ! 	if (max)
  ! 	    log_error("Must be uid 0 to raise maximum RLIMIT_NPROC", cmd->server);
  !     }
  !     else {
  ! 	if (cur)
  ! 	    conf->limit_nproc->rlim_cur = cur;
  ! 	if (max)
  ! 	    conf->limit_nproc->rlim_max = max;
  !     }
  ! #else
  !     log_error("RLimitNPROC not supported on this platform", cmd->server);
  ! #endif
        return NULL;
    }
    
    char *set_bind_address (cmd_parms *cmd, void *dummy, char *arg) {
        bind_address.s_addr = get_virthost_addr (arg, NULL);
  --- 861,909 ----
    
        /* if we aren't running as root, cannot increase max */
        if (geteuid()) {
  ! 	limit->rlim_cur = cur;
    	if (max)
  ! 	    log_printf(cmd->server, "Must be uid 0 to raise maximum %s",
  ! 		      cmd->cmd->name);
        }
        else {
    	if (cur)
  ! 	    limit->rlim_cur = cur;
    	if (max)
  ! 	    limit->rlim_max = max;
        }
    }
    
  ! static char *no_set_limit (cmd_parms *cmd, core_dir_config *conf, char *arg)
    {
  !     log_printf(cmd->server, "%s not supported on this platform",
  ! 	       cmd->cmd->name);
  !     return NULL;
  ! }
    
  ! #ifdef RLIMIT_CPU
  ! char *set_limit_cpu (cmd_parms *cmd, core_dir_config *conf, char *arg)
  ! {
  !     set_rlimit(cmd,conf->limit_cpu,arg);
  !     return NULL;
  ! }
    #endif
  + 
  + #if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM)
  + char *set_limit_mem (cmd_parms *cmd, core_dir_config *conf, char *arg)
  + {
  +     set_rlimit(cmd,conf->limit_mem,arg);
        return NULL;
    }
  + #endif
    
  + #ifdef RLIMIT_NPROC
    char *set_limit_nproc (cmd_parms *cmd, core_dir_config *conf, char *arg)
    {
  !     set_rlimit(cmd,conf->limit_nproc,arg);
        return NULL;
    }
  + #endif
    
    char *set_bind_address (cmd_parms *cmd, void *dummy, char *arg) {
        bind_address.s_addr = get_virthost_addr (arg, NULL);
  ***************
  *** 1064,1074 ****
    { "ServersSafetyLimit", set_server_limit, NULL, RSRC_CONF, TAKE1, NULL },
    { "MaxClients", set_server_limit, NULL, RSRC_CONF, TAKE1, NULL },
    { "MaxRequestsPerChild", set_max_requests, NULL, RSRC_CONF, TAKE1, NULL },
  ! { "RLimitCPU", set_limit_cpu, (void*)XtOffsetOf(core_dir_config, limit_cpu),
          OR_ALL, RAW_ARGS, "soft/hard limits for max CPU usage in seconds" },
  ! { "RLimitMEM", set_limit_mem, (void*)XtOffsetOf(core_dir_config, limit_mem),
          OR_ALL, RAW_ARGS, "soft/hard limits for max memory usage per process" },
  ! { "RLimitNPROC", set_limit_nproc, (void*)XtOffsetOf(core_dir_config, limit_nproc),
          OR_ALL, RAW_ARGS, "soft/hard limits for max number of processes per uid" },
    { "BindAddress", set_bind_address, NULL, RSRC_CONF, TAKE1,
      "'*', a numeric IP address, or the name of a host with a unique IP address"},
  --- 1016,1041 ----
    { "ServersSafetyLimit", set_server_limit, NULL, RSRC_CONF, TAKE1, NULL },
    { "MaxClients", set_server_limit, NULL, RSRC_CONF, TAKE1, NULL },
    { "MaxRequestsPerChild", set_max_requests, NULL, RSRC_CONF, TAKE1, NULL },
  ! { "RLimitCPU",
  ! #ifdef RMLIMIT_CPU
  !  set_limit_cpu, (void*)XtOffsetOf(core_dir_config, limit_cpu),
  ! #else
  !  no_set_limit, NULL,
  ! #endif
          OR_ALL, RAW_ARGS, "soft/hard limits for max CPU usage in seconds" },
  ! { "RLimitMEM",
  ! #if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM)
  !  set_limit_mem, (void*)XtOffsetOf(core_dir_config, limit_mem),
  ! #else
  !  no_set_limit, NULL,
  ! #endif
          OR_ALL, RAW_ARGS, "soft/hard limits for max memory usage per process" },
  ! { "RLimitNPROC",
  ! #ifdef RLIMIT_NPROC
  !  set_limit_nproc, (void*)XtOffsetOf(core_dir_config, limit_nproc),
  ! #else
  !  no_set_limit, NULL,
  ! #endif
          OR_ALL, RAW_ARGS, "soft/hard limits for max number of processes per uid" },
    { "BindAddress", set_bind_address, NULL, RSRC_CONF, TAKE1,
      "'*', a numeric IP address, or the name of a host with a unique IP address"},
  
  
  
  1.9       +5 -2      apache/src/http_core.h
  
  Index: http_core.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_core.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -C3 -r1.8 -r1.9
  *** http_core.h	1996/07/27 02:49:35	1.8
  --- http_core.h	1996/07/27 13:08:29	1.9
  ***************
  *** 108,113 ****
  --- 108,116 ----
    
    #ifdef CORE_PRIVATE
    
  + #ifdef NEED_SYS_RESOURCE_H
  +  #include <sys/resource.h>
  + #endif
    /*
     * Core is also unlike other modules in being implemented in more than
     * one file... so, data structures are declared here, even though most of
  ***************
  *** 156,165 ****
    #ifdef RLIMIT_CPU
        struct rlimit *limit_cpu;
    #endif
  ! #if defined(RLIMIT_DATA) || defined(RLIMIT_VMEM)
        struct rlimit *limit_mem;
    #endif
  ! #ifdef RLIMIT_NPROC    
        struct rlimit *limit_nproc;
    #endif
    
  --- 159,168 ----
    #ifdef RLIMIT_CPU
        struct rlimit *limit_cpu;
    #endif
  ! #if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM)
        struct rlimit *limit_mem;
    #endif
  ! #ifdef RLIMIT_NPROC
        struct rlimit *limit_nproc;
    #endif
    
  
  
  

Mime
View raw message