You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Dean Gaudet <dg...@hyperreal.com> on 1997/06/29 20:08:43 UTC

cvs commit: apache/src CHANGES conf.h http_conf_globals.h http_config.c http_core.c http_main.c httpd.h

dgaudet     97/06/29 11:08:42

  Modified:    src       Tag: APACHE_1_2_X  CHANGES conf.h
                        http_conf_globals.h http_config.c http_core.c 
                        http_main.c httpd.h
  Log:
  LockFile directive and USE_FLOCK changes.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.286.2.18 +7 -0      apache/src/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /export/home/cvs/apache/src/CHANGES,v
  retrieving revision 1.286.2.17
  retrieving revision 1.286.2.18
  diff -C3 -r1.286.2.17 -r1.286.2.18
  *** CHANGES	1997/06/28 22:06:22	1.286.2.17
  --- CHANGES	1997/06/29 18:08:34	1.286.2.18
  ***************
  *** 25,30 ****
  --- 25,34 ----
         to the rule that symlink permissions are tested with the symlink
         options of the parent directory.  [Dean Gaudet] PR#353
    
  +   *) CONFIG: The LockFile directive can be used to place the serializing
  +      lockfile in any location.  It previously defaulted to /usr/tmp/htlock.
  +      [Somehow it took three of us: Jim Jaglieski, Dean Gaudet, Marc Slemko]
  + 
      *) QUERY_STRING was unescaped in mod_include, it shouldn't be.
         [Dean Gaudet] PR#644
    
  ***************
  *** 47,52 ****
  --- 51,59 ----
         problems is under Solaris with many virtualhosts and many Listen
         directives.  But using -DHIGH_SLACK_LINE=256 described above will
         work around this problem.  [Dean Gaudet]
  + 
  +   *) USE_FLOCK_SERIALIZED_ACCEPT is now default for FreeBSD, A/UX, and
  +      SunOS 4.
    
      *) Improved unix error response logging.  [Marc Slemko]
    
  
  
  
  1.99.2.3  +5 -3      apache/src/conf.h
  
  Index: conf.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/conf.h,v
  retrieving revision 1.99.2.2
  retrieving revision 1.99.2.3
  diff -C3 -r1.99.2.2 -r1.99.2.3
  *** conf.h	1997/06/28 22:20:06	1.99.2.2
  --- conf.h	1997/06/29 18:08:35	1.99.2.3
  ***************
  *** 89,94 ****
  --- 89,95 ----
    typedef int rlim_t;
    #define memmove(a,b,c) bcopy(b,a,c)
    #define NO_LINGCLOSE
  + #define USE_FLOCK_SERIALIZED_ACCEPT
    
    #elif defined(SOLARIS2)
    #undef HAVE_GMTOFF
  ***************
  *** 317,332 ****
    #define NEED_STRDUP
    #define JMP_BUF sigjmp_buf
    /* fcntl() locking is expensive with NFS */
  ! #undef USE_FLOCK_SERIALIZED_ACCEPT
    #define HAVE_SHMGET
  - #define MOVEBREAK		0x4000000
    /*
     * NOTE: If when you run Apache under A/UX and you get a warning
  !  * that httpd couldn't move break, then the above value for
     * MOVEBREAK (64megs) is too large for your setup. Try reducing
     * to 0x2000000 which is still PLENTY of space. I doubt if
     * even on heavy systems sbrk() would be called at all...
     */
    #define NO_LINGCLOSE
    #define NO_SLACK
    
  --- 318,333 ----
    #define NEED_STRDUP
    #define JMP_BUF sigjmp_buf
    /* fcntl() locking is expensive with NFS */
  ! #define USE_FLOCK_SERIALIZED_ACCEPT
    #define HAVE_SHMGET
    /*
     * NOTE: If when you run Apache under A/UX and you get a warning
  !  * that httpd couldn't move break, then the below value for
     * MOVEBREAK (64megs) is too large for your setup. Try reducing
     * to 0x2000000 which is still PLENTY of space. I doubt if
     * even on heavy systems sbrk() would be called at all...
     */
  + #define MOVEBREAK		0x4000000
    #define NO_LINGCLOSE
    #define NO_SLACK
    
  ***************
  *** 411,416 ****
  --- 412,418 ----
    (defined(__FreeBSD_version) && (__FreeBSD_version < 220000))
    typedef quad_t rlim_t;
    #endif
  + #define USE_FLOCK_SERIALIZED_ACCEPT
    
    #elif defined(QNX)
    #ifndef crypt
  
  
  
  1.9.2.1   +1 -0      apache/src/http_conf_globals.h
  
  Index: http_conf_globals.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_conf_globals.h,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -C3 -r1.9 -r1.9.2.1
  *** http_conf_globals.h	1997/01/01 18:10:16	1.9
  --- http_conf_globals.h	1997/06/29 18:08:35	1.9.2.1
  ***************
  *** 72,77 ****
  --- 72,78 ----
    
    extern char *pid_fname;
    extern char *scoreboard_fname;
  + extern char *lock_fname;
    extern char *server_argv0;
    
    /* Trying to allocate these in the config pool gets us into some *nasty*
  
  
  
  1.49.2.2  +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.49.2.1
  retrieving revision 1.49.2.2
  diff -C3 -r1.49.2.1 -r1.49.2.2
  *** http_config.c	1997/06/27 01:47:45	1.49.2.1
  --- http_config.c	1997/06/29 18:08:36	1.49.2.2
  ***************
  *** 1040,1045 ****
  --- 1040,1046 ----
        daemons_limit = HARD_SERVER_LIMIT;
        pid_fname = DEFAULT_PIDLOG;
        scoreboard_fname = DEFAULT_SCOREBOARD;
  +     lock_fname = DEFAULT_LOCKFILE;
        max_requests_per_child = DEFAULT_MAX_REQUESTS_PER_CHILD;
        bind_address.s_addr = htonl(INADDR_ANY);
        listeners = NULL;
  
  
  
  1.81.2.2  +7 -0      apache/src/http_core.c
  
  Index: http_core.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_core.c,v
  retrieving revision 1.81.2.1
  retrieving revision 1.81.2.2
  diff -C3 -r1.81.2.1 -r1.81.2.2
  *** http_core.c	1997/06/28 22:00:16	1.81.2.1
  --- http_core.c	1997/06/29 18:08:36	1.81.2.2
  ***************
  *** 967,972 ****
  --- 967,977 ----
        return NULL;
    }
    
  + const char *set_lockfile (cmd_parms *cmd, void *dummy, char *arg) {
  +     lock_fname = pstrdup (cmd->pool, arg);
  +     return NULL;
  + }
  + 
    const char *set_idcheck (cmd_parms *cmd, core_dir_config *d, int arg) {
        d->do_rfc1413 = arg;
        return NULL;
  ***************
  *** 1216,1221 ****
  --- 1221,1228 ----
        "A file for logging the server process ID"},
    { "ScoreBoardFile", set_scoreboard, NULL, RSRC_CONF, TAKE1,
        "A file for Apache to maintain runtime process management information"},
  + { "LockFile", set_lockfile, NULL, RSRC_CONF, TAKE1,
  +     "The lockfile used when Apache needs to lock the accept() call"},
    { "AccessConfig", set_server_string_slot,
      (void *)XtOffsetOf (server_rec, access_confname), RSRC_CONF, TAKE1,
      "The filename of the access config file" },
  
  
  
  1.149.2.4 +14 -25    apache/src/http_main.c
  
  Index: http_main.c
  ===================================================================
  RCS file: /export/home/cvs/apache/src/http_main.c,v
  retrieving revision 1.149.2.3
  retrieving revision 1.149.2.4
  diff -C3 -r1.149.2.3 -r1.149.2.4
  *** http_main.c	1997/06/27 02:31:14	1.149.2.3
  --- http_main.c	1997/06/29 18:08:37	1.149.2.4
  ***************
  *** 138,143 ****
  --- 138,144 ----
    int max_requests_per_child;
    char *pid_fname;
    char *scoreboard_fname;
  + char *lock_fname;
    char *server_argv0;
    struct in_addr bind_address;
    listen_rec *listeners;
  ***************
  *** 181,186 ****
  --- 182,197 ----
    #define ap_killpg(x, y)		(killpg ((x), (y)))
    #endif
    
  + #if defined(USE_FCNTL_SERIALIZED_ACCEPT) || defined(USE_FLOCK_SERIALIZED_ACCEPT)
  + static void expand_lock_fname(pool *p)
  + {
  +     char buf[20];
  + 
  +     ap_snprintf( buf, sizeof(buf), ".%u", getpid() );
  +     lock_fname = pstrcat (p, server_root_relative (p, lock_fname), buf, NULL);
  + }
  + #endif
  + 
    #if defined(USE_FCNTL_SERIALIZED_ACCEPT)
    static struct flock lock_it;
    static struct flock unlock_it;
  ***************
  *** 193,200 ****
     */
    void
    accept_mutex_init(pool *p)
  !     {
  !     char lock_fname[256];
    
        lock_it.l_whence = SEEK_SET;   /* from current point */
        lock_it.l_start  = 0;          /* -"- */
  --- 204,210 ----
     */
    void
    accept_mutex_init(pool *p)
  ! {
    
        lock_it.l_whence = SEEK_SET;   /* from current point */
        lock_it.l_start  = 0;          /* -"- */
  ***************
  *** 207,225 ****
        unlock_it.l_type   = F_UNLCK;  /* set exclusive/write lock */
        unlock_it.l_pid    = 0;        /* pid not actually interesting */
    
  ! #ifdef __MACHTEN__
  !     strncpy(lock_fname, "/var/tmp/htlock.XXXXXX", sizeof(lock_fname)-1);
  ! #else
  !     strncpy(lock_fname, "/usr/tmp/htlock.XXXXXX", sizeof(lock_fname)-1);
  ! #endif
  !     lock_fname[sizeof(lock_fname)-1] = '\0';
  ! 
  !     if (mktemp(lock_fname) == NULL || lock_fname[0] == '\0')
  !     {
  ! 	fprintf (stderr, "Cannot assign name to lock file!\n");
  ! 	exit (1);
  !     }
  ! 
        lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
        if (lock_fd == -1)
        {
  --- 217,223 ----
        unlock_it.l_type   = F_UNLCK;  /* set exclusive/write lock */
        unlock_it.l_pid    = 0;        /* pid not actually interesting */
    
  !     expand_lock_fname (p);
        lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
        if (lock_fd == -1)
        {
  ***************
  *** 264,280 ****
    void
    accept_mutex_init(pool *p)
    {
  -     char lock_fname[256];
  - 
  -     strncpy(lock_fname, "/usr/tmp/htlock.XXXXXX", sizeof(lock_fname)-1);
  -     lock_fname[sizeof(lock_fname)-1] = '\0';
  -     
  -     if (mktemp(lock_fname) == NULL || lock_fname[0] == '\0')
  -     {
  - 	fprintf (stderr, "Cannot assign name to lock file!\n");
  - 	exit (1);
  -     }
    
        lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
        if (lock_fd == -1)
        {
  --- 262,269 ----
    void
    accept_mutex_init(pool *p)
    {
    
  +     expand_lock_fname (p);
        lock_fd = popenf(p, lock_fname, O_CREAT | O_WRONLY | O_EXCL, 0644);
        if (lock_fd == -1)
        {
  
  
  
  1.111.2.2 +1 -0      apache/src/httpd.h
  
  Index: httpd.h
  ===================================================================
  RCS file: /export/home/cvs/apache/src/httpd.h,v
  retrieving revision 1.111.2.1
  retrieving revision 1.111.2.2
  diff -C3 -r1.111.2.1 -r1.111.2.2
  *** httpd.h	1997/06/27 01:47:47	1.111.2.1
  --- httpd.h	1997/06/29 18:08:38	1.111.2.2
  ***************
  *** 126,131 ****
  --- 126,132 ----
    #endif
    #define DEFAULT_PIDLOG "logs/httpd.pid"
    #define DEFAULT_SCOREBOARD "logs/apache_runtime_status"
  + #define DEFAULT_LOCKFILE "logs/accept.lock"
    
    /* Define this to be what your HTML directory content files are called */
    #define DEFAULT_INDEX "index.html"