Release: 1.1.3 (Released 14th January 1997)
      Beta: 1.2b4 (Released 31st December 1996)
    
    Bugs reported in 1.2b4: 
    
      - 
        If MinSpareServers is not given it defaults to
        5, even if MaxSpareServers is set to less than
        5.
      
 
      - 
        The RLimit* directives are ignoring any second
        argument.
      
 
      - 
        On some recent operating systems, the error_log will
        contain messages about "accept" failing which are not
        errors.
      
 
      - 
        If a child process cannot be created, Apache does not
        notice and the scoreboard slot will stay in "Server
        Starting" status.
      
 
      - 
        PATH_INFO not available to server-side included scripts.
      
 
      - 
        Proxy module can send headers as part of the message body
        for nph scripts.
      
 
    
    Bugs in 1.2b4 fixed in next release: 
    
      - 
        POST to a directory index CGI (e.g. index.cgi) did not
        work.
      
 
      - 
        If ErrorDocument was given a string ending
        with a double-quote, the trailing quote was not displayed.
      
 
      - 
        Configuration updates for OSF, SCO3.
      
 
    
    
    
      Last issue, we said that users of 1.1.2 do not have to
      upgrade if they managed to get 1.1.2 to compile in their
      system. This is not correct. Apache 1.1.2 causes problems
      when the URL refers to a CGI script and includes some
      PATH_INFO. You should upgrade to 1.1.3.
    
    
    
      Apache is currently in a 'beta release' cycle. This is where
      it is made available prior to full release for testing by
      anyone interested. Normally during the beta cycle no new
      major features will be added. The full release of Apache 1.2
      is expected in February.
    
    
    
      The fastCGI module (mod_fastcgi.c) will no longer be
      distributed with Apache. The latest versions of this module
      are available from the fastCGI site.
    
    
    
      Recently Apache 1.1.3 was released to address a couple of
      security-related bugs. While the most important bug (the
      cookies one) is very difficult to exploit (and there is no
      evidence that any has managed to exploit it), it is possible
      that other similar bugs could exist in the code. Because of
      these, the entire code is being updated to prevent this sort
      of bug from ever producing a potential security hole again.
    
    
      The problem in the cookies bug was that Apache used a fixed
      length string to hold data which it received from the network
      (in the case of the cookies module, the data was an Internet
      hostname). It is possible to write text longer than the
      buffer allows, which would cause extra data to get corrupted.
      Normally the only affect this would have is possible
      corruption of the Apache program in memory (no security
      risk). However if a cracker knows what system the server is
      running on and knows a lot about the internal structure of
      Apache and the data structures on the operating system, they
      might be able to overwrite the data with executable code, and
      manage to get this code executed. In the worst case, this may
      give them access to the server system as the user that Apache
      runs as (normally 'nobody' or a normal user, not the
      root user). This whole sequence is very difficult, but not
      impossible, to exploit. In the case of the cookies module,
      the cracker would have to arrange to be connecting from a
      hostname containing exactly the right combination of data and
      executable code.
    
    
      Even through the risk posed by this bug and other similar
      ones is small, Apache will be updated to prevent any
      potential security holes of this sort occurring in future.
      This will be done by never allowing more data than a string
      can contain being written to that string, using special
      functions which limit string sizes.
    
    
    
      There seem to be a couple of problems related to closing
      connections in the Apache 1.2 betas. Neither seem to be
      directly related to Apache, but are caused a combination of
      operating system bugs, client software bugs and changes to
      Apache which have made the existing problems more noticeable.
    
    
      The problems are:
    
    
      - 
        Connections can fall into a FIN_WAIT_2 state, where
        they stay forever until they use of all the connection
        resources of the server.
      
 
      - 
        The last part of the response can be lost
      
 
    
    These problems, while related to specific operating systems and
    clients, have prompted a detailed analysis of the way Apache
    handles closing connections. Some minor bugs in this code have
    been fixed. The next beta release of Apache will address both
    these problems. Below is a more detailed explanation of both
    
    
      FIN_WAIT_2 is the final stage of closing a TCP connection.
      Any connections in this state (as seen by
      netstat command) are almost completely closed:
      they are just waiting for the final acknowledgment of the
      close from the client. If this never arrives, the connection
      will probably stay in this state forever. Unlike most other
      TCP connection states, the TCP specifications do not
      recommend a timeout for this state, although some recent
      operating systems do implement a timeout. Note that it is
      normal to see connections in FIN_WAIT_2 state, and it is not
      unreasonable to expect some connections to stay in this state
      forever (e.g. if the client was switched off at the wrong
      time). The problem is when the number of connections in this
      state keeps increasing.
    
    
      It is thought that this state is being seem more now due to a
      particular combination of client operating system and
      browser, probably Windows on a PC.
    
    
    
      It has also been noticed that the last part of the response
      can get lost (i.e. the client never shows it). This is seen
      when the server is running on certain operating systems, or
      when the client is sending a large request (e.g. a POST or
      PUT) which the server has refused.
    
    
    
      The cause (and fix) for both of these problems relates to how
      Apache closes connections. In the 1.1.1 and 1.1.3 servers,
      Apache closes the connection as soon as it has finished
      sending data. This can cause two problems: firstly, some
      (buggy) operating systems did not flush out any unsent data
      on that connection before doing the close, and secondly if
      the client is still sending the request (for example, PUT
      data or when using a persistent connection) it would cause an
      immediate connection closedown which means the client might
      not receive the last set of data sent. So both of these can
      cause the lost data problem.
    
    
      To get around the lost data problem, the code was updated to
      close the connection for sending only, while still reading
      (and ignoring) any more received data until the client closed
      the connection at its end. This relies on the client actually
      closing its end of the connection properly - on clients which
      don't, the FIN_WAIT_2 problem is seen. The way that Apache
      holds the connection open like this is referred to as a
      "lingering close". This should be done by simply setting an
      operating system option for that connection, and letting the
      OS take care of it. However many OSes have problems with
      lingering close, so Apache 1.2 includes its own code to do
      this.
    
    
      A possible work around is to remove this additional
      code. This can be done by adding -DNO_LINGCLOSE to the
      EXTRA_CFLAGS in Configuration and rebuilding
      Apache. Some users have noticed that this considerably
      reduces the number of connections falling into FIN_WAIT_2
      state.
    
    
      During the analysis of the way TCP connections close, it was
      noticed that this lingering close code was being called more
      times than necessary, on already closed or aborted
      connections or after a timeout. This has been fixed.