| |
| Apache 2.0alpha8 Released |
| ------------------------- |
| |
| The Apache Group is pleased to announce the release of the seventh public |
| alpha release of Apache 2.0. |
| |
| Apache 2.0 offers numerous enhancements, improvements and performance |
| boosts over the 1.3 codebase. The most visible and noteworthy addition |
| is the ability to run Apache in a hybrid thread/process mode on any |
| platform that supports both threads and processes. This has shown to |
| improve the scalability of the Apache HTTPD server significantly in |
| our early testing, on some versions of Unix. With this version of Apache, |
| we have also added support for filtered I/O. This allows modules to modify |
| the output of other modules before it is sent to the client. This release also |
| greatly improves the performance and robustness of Apache on the |
| Microsoft Windows Operating Systems. Lastly we are proud to announce |
| support for BeOS in this version of the server. |
| |
| Included in this alpha is a pre-alpha version of mod_proxy. Mod_proxy |
| is not at the same level as the rest of the server, and should be enabled |
| only by people who are very interested in working with the code. |
| |
| Apache 2.0a8 under UNIX has undergone some testing, but there are some |
| known issues in the current release (hey, it is an "alpha" for a |
| reason!). It is intended for developers and experienced Apache HTTPD |
| administrators to play around with and work on. It is not a production |
| release. If you do not feel comfortable compiling and working with |
| code, the Apache Group strongly recommends that you wait for a more |
| stable beta release before you try this version. |
| |
| Apache 2.0a8 under Windows has undergone some testing as well. There |
| are known issues in the current release with regards to Apache on windows |
| 95 and 98. We are working through those problems, and hope to have them |
| fixed for future releases of the 2.0 alpha. |
| |
| There are new snapshots of the Apache httpd source available every 6 |
| hours from http://dev.apache.org/from-cvs/apache-2.0/ - please |
| download and test if you feel brave. We don't guarantee anything |
| except that it will take up disk space, but if you have the time and |
| skills, please give it a spin on your platforms. |
| |
| Apache has been the most popular web server on the Internet since |
| April of 1996. The May 2000 WWW server site survey by Netcraft (see: |
| http://www.netcraft.co.uk/Survey/) found that more web servers were |
| using Apache than any other software running on more than 60% of the |
| Internet web servers. |
| |
| For more information, please check out http://www.apache.org/httpd.html |
| |
| Changes with Apache 2.0a8 |
| *) Add a directive to mod_mime so that filters can be associated with |
| a given mime-type. |
| [Ryan Bloom] |
| |
| *) Get multi-views working again. We were setting the path_info |
| field incorrectly if we couldn't find the specified file. |
| [Ryan Bloom] |
| |
| *) Fix 304 processing. The core should never try to send the headers |
| down the filter stack. Always, just setup the table in the request |
| record, and let the header filter convert it to data that is ready |
| for the network. |
| [Ryan Bloom] |
| |
| *) More fixes for the proxy. There are still bugs in the proxy code, |
| but this has now proxied www.yahoo.com and www.ntrnet.net (my ISP) |
| successfully. |
| [Ryan Bloom] |
| |
| *) Fix params for apr_getaddrinfo() call in connect proxy handler. |
| [Chuck Murcko] |
| |
| *) APR: Add new apr_getopt_long function to handle long options. |
| [B. W. Fitzpatrick <fitz@red-bean.com>] |
| |
| *) APR: Change apr_connect() to take apr_sockaddr_t instead of hostname. |
| Add generic apr_create_socket(). Add apr_getaddrinfo() for doing |
| hostname resolution/address string parsing and building |
| apr_sockaddr_t. Add apr_get_sockaddr() for getting the address |
| of one of the apr_sockaddr_t structures for a socket. Change |
| apr_bind() to take apr_sockaddr_t. [David Reid and Jeff Trawick] |
| |
| *) Remove the BUFF from the HTTP proxy. This is still a bit ugly, but |
| I have proxied pages with it, cleanup will commence soon. |
| [Ryan Bloom] |
| |
| *) Make the proxy work with filters. This isn't perfect, because we |
| aren't dealing with the headers properly. [Ryan Bloom] |
| |
| *) Do not send a content-length iff the C-L is 0 and this is a head |
| request. [Ryan Bloom] |
| |
| *) Make cgi-bin work as a regular directory when using mod_vhost_alias |
| with no VirtualScriptAlias directives. PR#6829 [Tony Finch] |
| |
| *) Remove BUFF from the PROXY connect handling. [Ryan Bloom] |
| |
| *) Get the default_handler to stop trying to deal with HEAD requests. |
| The idea is to let the content-length filter compute the C-L before |
| we try to send the data. If we can get the C-L correctly, then we |
| should send it in the HEAD response. |
| [Ryan Bloom] |
| |
| *) The Header filter can now determine if a body should be sent based |
| on r->header_only. The general idea of this is that if we delay |
| deciding to send the body, then we might be able to compute the |
| content-length correctly, which will help caching proxies to cache |
| our data better. Any handler that doesn't want to try to compute |
| the content-length can just send an EOS bucket without data and |
| everything will just work. |
| [Ryan Bloom] |
| |
| *) Add the referer to the error log if one is available. |
| [Markus Gyger <mgyger@itr.ch>] |
| |
| *) Mod_info.c has now been ported to Apache 2.0. As a part of this |
| change, the root of the configuration tree has been exposed to modules |
| as ap_conftree. |
| [Ryan Morgan <rmorgan@covalent.net>] |
| |
| *) Get the core_output_filter to use the bucket interface directly. |
| This keeps us from calling the content-length filter multiple times |
| for a simple static request. |
| [Ryan Bloom] |
| |
| *) We are sending the content-type correctly now. |
| [Ryan Bloom and Will Rowe] |
| |
| *) APR on FreeBSD: Fix a bug in apr_sendfile() which caused us to report |
| a bogus bytes-sent value when the only thing being sent was trailers |
| and writev() returned an error (or EAGAIN). [Jeff Trawick] |
| |
| *) Get SINGLE_LISTEN_UNSERIALIZED_ACCEPT working again. This uses the |
| hints file to determine which platforms define |
| SINGLE_LISTEN_UNSERIALIZED_ACCEPT. |
| [Ryan Bloom] |
| |
| *) APR: add apr_get_home_directory() [Jeff Trawick] |
| |
| *) Initial import of 1.3-current mod_proxy. [Chuck Murcko] |
| |
| *) Not all platforms have INADDR_NONE defined by default. Apache |
| used to make this check and define INADDR_NONE if appropriate, |
| but APR needs the check too, and I suspect other applications will |
| as well. APR now defines APR_INADDR_NONE, which is always a valid |
| value on all platforms. |
| [Branko Èibej <brane@xbc.nu>] |
| |
| *) Destroy the pthread mutex in lock_intra_cleanup() for PR#6824. |
| [Shuichi Kitaguchi <ki@hh.iij4u.or.jp>] |
| |
| *) Relax the syntax checking of Host: headers in order to support |
| iDNS. PR#6635 [Tony Finch] |
| |
| *) When reading from file buckets we convert to an MMAP if it makes |
| sense. This also simplifies the default handler because the |
| default handler no longer needs to try to create MMAPs. |
| [Ryan Bloom] |
| |
| *) BUFF has been removed from the main server. The BUFF code will remain |
| in the code until it has been purged from the proxy module as well. |
| [Ryan Bloom] |
| |
| *) Byteranges have been completely re-written to be a filter. This |
| has been tested, and I believe it is working correctly, but it could |
| doesn't work for the Adobe Acrobat plug-in. The output almost matches |
| the output from 1.3, the only difference being that 1.3 includes |
| a content-length in the response, and this does not. |
| [Ryan Bloom] |
| |
| *) APR read/write functions and bucket read functions now operate |
| on unsigned integers, instead of signed ones. It doesn't make |
| any sense to use signed ints, because we return the error codes, |
| so if we have an error we should report 0 bytes read or written. |
| [Ryan Bloom] |
| |
| *) Always compute the content length, whether it is sent or not. |
| The reason for this, is that it allows us to correctly report |
| the bytes_sent when logging the request. This also simplifies |
| content-length filter a bit, and fixes the actual byte-reporing |
| code in mod_log_config.c |
| [Ryan Bloom] |
| |
| *) Remove AP_END_OF_BRIGADE definition. This does not signify what |
| it says, because it was only used by EOS and FLUSH buckets. Since |
| neither of those are required at the end of a brigade, this was |
| really signifying FLUSH_THE_DATA, but that can be determined better |
| by checking AP_BUCKET_IS_EOS() or AP_BUCKET_IS_FLUSH. EOS and FLUSH |
| buckets now return a length of 0, which is actually the amount of data |
| read, so they make more sense. |
| [Ryan Bloom] |
| |
| *) Allow the core_output_filter to save some data past the end of a |
| request. If we get an EOS bucket, we only send the data if it |
| makes sense to send it. This allows us to pipeline request |
| responses. As a part of this, we also need to allocate mmap |
| buckets out of the connection pool, not the request pool. This |
| allows the mmap to outlive the request. |
| [Ryan Bloom] |
| |
| *) Make blocking and non-blocking bucket reads work correctly for |
| sockets and pipes. These are the only bucket types that should |
| have non-blocking reads, because the other bucket types should |
| ALWAYS be able to return something immediately. |
| [Ryan Bloom] |
| |
| *) In the Apache/Win32 console window, accept Ctrl+C to stop the |
| server, but use Ctrl+Break to initiate a graceful restart |
| instead of duplicating behavior. [John Sterling] |
| |
| *) Patch mod_autoindex to set the Last-Modified header based on |
| the directory's mtime, and add the ETag header. [William Rowe] |
| |
| *) Merge the 1.3 patch to add support for logging query string in |
| such a way that "%m %U%q %H" is the same as "%r". |
| [Bill Stoddard] |
| |
| *) Port three log methods from mod_log_config 1.3 to 2.0: |
| CLF compliant '-' byte count, method and protocol. |
| [Bill Stoddard] |
| |
| *) Add a new LogFormat directive, %c, that will log connection |
| status at the end of the response as follows: |
| 'X' - connection aborted before the response completed. |
| '+' - connection may be kept-alive by the server. |
| '-' - connection will be closed by the server. |
| [Bill Stoddard] |
| |
| *) Expand APR for WinNT to fully accept and return utf-8 encoded |
| Unicode file names and paths for Win32, and tag the Content-Type |
| from mod_autoindex to reflect that charset if the the feature |
| macro APR_HAS_UNICODE_FS is true. [William Rowe] |
| |
| *) Compute the content length (and add appropriate header field) for |
| the response when no content length is available and we can't use |
| chunked encoding. [Jeff Trawick] |
| |
| *) Changed ap_discard_request_body() to use REQUEST_CHUNKED_DECHUNK, |
| so that content input filters get dechunked data when using |
| the default handler. Also removed REQUEST_CHUNKED_PASS. |
| [Sascha Schumann] |
| |
| *) Add mod_ext_filter as an experimental module. This module allows |
| the administrator to use external programs as filters. Currently, |
| only filtering of output is supported. [Jeff Trawick] |
| |
| *) Most Apache functions work on EBCDIC machines again, as protocol |
| data is now translated (again). [Jeff Trawick] |
| |
| *) Introduce ap_xlate_proto_{to|from}_ascii() to clean up some of |
| the EBCDIC support. They are noops on ASCII machines, so this |
| type of translation doesn't have to be surrounded by #ifdef |
| CHARSET_EBCDIC. [Jeff Trawick] |
| |
| *) Fix mod_include. tag commands work again, and the server will |
| send the FAQ again. This also allows mod_include to set aside |
| buckets that include partial buckets. |
| [Ryan Bloom and David Reid] |
| |
| *) Add suexec support back. [Manoj Kasichainula] |
| |
| *) Lingering close now uses the socket directly instead of using |
| BUFF. This has been tested, but since all we can tell is that it |
| doesn't fail, this needs to be really hacked on. |
| [Ryan Bloom] |
| |
| *) Allow filters to modify headers and have those headers be sent to |
| the client. The idea is that we have an http_header filter that |
| actually sends the headers to the network. This removes the need |
| for the BUFF to send headers. |
| [Ryan Bloom] |
| |
| *) Charset translation: mod_charset_lite handles translation of |
| request bodies. Get rid of the xlate version of ap_md5_digest() |
| since we don't compute digests of filtered (e.g., translated) |
| response bodies this way anymore. (Note that we don't do it at |
| all at the present; somebody needs to write a filter to do so.) |
| [Jeff Trawick] |
| |
| *) Input filters and ap_get_brigade() now have a input mode parameter |
| (blocking, non-blocking, peek) instead of a length parameter. |
| [hackathon] |
| |
| *) Update the mime.types file to the registered media types as |
| of 2000-10-19. PR#6613 [Carsten Klapp <carsten.klapp@home.net>, |
| Tony Finch] |
| |
| *) Namespace protect some macros declared in ap_config.h |
| [Ryan Bloom] |
| |
| *) Support HTTP header line folding with input filtering. |
| [Greg Ames] |
| |
| *) Mod_include works again. This should still be re-written, but at |
| least now we can serve an SHTML page again. |
| [Ryan Bloom] |
| |
| *) Begin to remove BUFF from the core. Currently, we keep a pointer |
| to both the BUFF and the socket in the conn_rec. Functions that |
| want to use the BUFF can, functions that want to use the socket, |
| can. They point to the same place. |
| [Ryan Bloom] |
| |
| *) apr_psprintf doesn't understand %lld as a format. Make it %ld. |
| [Tomas "Ögren" <stric@ing.umu.se>] |
| |
| *) APR pipes on Unix and Win32 are now cleaned up automatically when the |
| associated pool goes away. (APR pipes on OS/2 were already had this |
| logic.) This resolvs a fatal file descriptor leak with CGIs. |
| [Jeff Trawick] |
| |
| *) The final line of the config file was not being read if there was |
| no \n at the end of it. This was caused by apr_fgets returning |
| APR_EOF even though we had read valid data. This is solved by |
| making cfg_getline check the buff that was returned from apr_fgets. |
| If apr_fgets return APR_EOF, but there was data in the buf, then we |
| return the buf, otherwise we return NULL. |
| [Ryan Bloom] |
| |
| *) Piped logs work again in the 2.0 series. |
| [Ryan Bloom] |
| |
| *) Restore functionality broken by the mod_rewrite security fix: |
| rewrite map lookup keys and default values are now expanded |
| so that the lookup can depend on the requested URI etc. |
| PR #6671 [Tony Finch] |
| |
| *) Tighten up the syntax checking of Host: headers to fix a |
| security bug in some mass virtual hosting configurations |
| that can allow a remote attacker to retrieve some files |
| on the system that should be inaccessible. [Tony Finch] |
| |
| *) Add a pool bucket type. This bucket is used for data allocated out |
| of a pool. If the pool is cleaned before the bucket is destroyed, then |
| the data is converted to a heap bucket, allowing it to survive the |
| death of the pool. |
| [Ryan Bloom] |
| |
| *) Add a flush bucket. This allows modules to signal that the filters |
| should all flush whatever data they currently have. There is no way |
| to actually force them to do this, so if a filter ignores this bucket, |
| that's life, but at least we can try with this. |
| [Ryan Bloom] |
| |
| *) Add an output filter for sub-requests. This filter just strips the |
| EOS bucket so that we don't confuse the main request's core output |
| filter by sending multiple EOS buckets. This change also makes sub |
| requests start to send EOS buckets when they are finished. |
| [Ryan Bloom] |
| |
| *) Make ap_bucket_(read|destroy|split|setaside) into macros. Also |
| makes ap_bucket_destroy a return void, which is okay because it |
| used to always return APR_SUCCESS, and nobody ever checked its |
| return value anyway. |
| [Cliff Woolley <cliffwoolley@yahoo.com>] |
| |
| *) Remove the index into the bucket-type table from the buckets |
| structure. This has now been replaced with a pointer to the |
| bucket_type. Also add some macros to test the bucket-type. |
| [Ryan Bloom] |
| |
| *) Renamed all MODULE_EXPORT symbols to AP_MODULE_DECLARE and all symbols |
| for CORE_EXPORT to AP_CORE_DECLARE (namespace protecting the wrapper) |
| and retitled API_EXPORT as AP_DECLARE and APR_EXPORT as APR_DECLARE. |
| All _VAR_ flavors changes to _DATA to be absolutely clear. |
| [William Rowe] |
| |
| *) Add support for /, //, //servername and //server/sharename |
| parsing of <Directory> blocks under Win32 and OS2. |
| [Tim Costello, William Rowe, Brian Harvard] |
| |
| *) Remove the function pointers from the ap_bucket type. They have been |
| replaced with a global table. Modules are allowed to register bucket |
| types and use then use those buckets. |
| [Ryan Bloom] |
| |
| *) mod_cgid: In the handler, shut down the Unix socket (only for write) |
| once we finish writing the request body to the cgi child process; |
| otherwise, the client doesn't hit EOF on stdin. Small request bodies |
| worked without this change (for reasons I don't understand), but large |
| ones didn't. [Jeff Trawick] |
| |
| *) Remove file bucket specific information from the ap_bucket type. |
| This has been moved to a file_bucket specific type that hangs off |
| the data pointer in the ap_bucket type. |
| [Ryan Bloom] |
| |
| *) Input filtering now has a third argument. This is the amount of data |
| to read from lower filters. This argument can be -1, 0, or a positive |
| number. -1 means give me all the data you have, I'll deal with it and |
| let you know if I need more. 0 means give me one line and one line |
| only. A positive number means I want no more than this much data. |
| |
| Currently, only 0 and a positive number are implemented. This allows |
| us to remove the remaining field from the conn_rec structure, which |
| has also been done. |
| [Ryan Bloom] |
| |
| *) Big cleanup of the input filtering. The goal is that http_filter |
| understands two conditions, headers and body. It knows where it is |
| based on c->remaining. If c->remaining is 0, then we are in headers, |
| and http_filter returns a line at a time. If it is not 0, then we are |
| in body, and http_filter returns raw data, but only up to c->remaining |
| bytes. It can return less, but never more. |
| [Greg Ames, Ryan Bloom, Jeff Trawick] |
| |
| *) mod_cgi: Write all of the request body to the child, not just what |
| the kernel would accept on the first write. [Jeff Trawick] |
| |
| *) Back out the change that moved the brigade from the core_output_filters |
| ctx to the conn_rec. Since all requests over a given connection |
| go through the same core_output_filter, the ctx pointer has the |
| correct lifetime. |
| [Ryan Bloom] |
| |
| *) Fix another bug in the send_the_file() read/write loop. A partial |
| send by apr_send would cause unsent data in the read buffer to |
| get clobbered. Complete making send_the_file handle partial |
| writes to the network. |
| [Bill Stoddard] |
| |
| *) Fix a couple of type fixes to allow compilation on AIX again |
| [Victor J. Orlikowski <v.j.orlikowski@gte.net>] |
| |
| *) Fix bug in send_the_file() which causes offset to be ignored |
| if there are no headers to send. |
| [Bill Stoddard] |
| |
| *) Handle APR_ENOTIMPL returned from apr_sendfile in the core |
| filter. Useful for supporting Windows 9* with a binary |
| compiled on Windows NT. |
| [Bill Stoddard] |
| |