Apache Week
   
   Issue 111, 17th April 1998:  

Copyright 1996-2005
Red Hat, Inc.

In this issue


New Beta Expected Soon

A new beta release of Apache 1.3 is expected very soon. This will be version 1.3b6, which replaces the current beta 1.3b5. This beta is in fact the fourth public beta, not the sixth, because two versions we never publicly released. This beta contains bug fixes for the previous betas, and the following new features:

  • A new way of configuring and installing Apache that looks like many other free software projects. It can be done from the command line without editing the Configuration file.
  • All public functions and variables have been renamed, and a compatibility header file included to support existing module (see later in this issue).
  • Much better support for dynamic modules on most Unix operating systems, and a tool for building modules for dynamic loading based on an installed Apache configuration.

Users of 1.3b5 should upgrade to 1.3b6 when it is released.


Apache Status

Apache Site: www.apache.org
Release: 1.2.6 (Released 24th March 1998) (local download sites)
Beta: 1.3b5 (Released 19th February 1998) (local download sites)

Apache 1.2.6 is the current stable release. Users of Apache 1.2.5 and earlier should upgrade to this version since it fixes a number of bugs and potential security problems.

Bugs in 1.3b5

These bugs have been reported in 1.3b5 and are either not fixed, or have not been reproduced by the Apache developers.

  • On windows, the HSA_REQ_SEND_RESPONSE_HEADER ISAPI callback function must be passed a string that ends with a carriage-return linefeed pair. If not, Apache gives an error. This is as given in the specification of ISAPI, however the IIS server allows data without a trailing CRLF, so this could cause some ISAPI extensions which work with IIS (even though they do not meet the ISAPI specification) to fail on Apache.


Patches for bugs in Apache 1.2.6 may be made available in the apply_to_1.2.6 subdirectory of the patches directory on the Apache site (this directory may not exist if no patches are available). Some new features and other unofficial patches are available in the 1.2 patches directory (these may not apply cleanly to 1.2.6). For details of all previously reported bugs, see the Apache bug database and known bugs pages. Many common configuration questions are answered in the Apache FAQ.

Development has slowed down to prepare for the release of Apache 1.3. During the beta release cycle Apache is in a "feature freeze" where no major new features will be added.

Symbol Hiding Complete: API Changes

After a long discussion, all the public functions and variables provided by the Apache API have been renamed. This was needed to prevent conflicts between function names in Apache and functions in third-party libraries linked in via modules. Currently many public Apache functions have generic names, such as palloc() and new_connection(). These were going to be optionally hidden by prefixing all functions with AP_, but that would have allowed people (and modules) to continue to use the old names, leading to possible compatibility problems.

The new solution, which will be in the next beta, is to prefix all public symbols with ap_. This means, for example, palloc becomes ap_palloc. All existing modules will need updating and recompiling in order to work with the new names. To make this easier, a compatibility file will be provided, called compat.h. This file uses #define's to map the old names onto the new ones. Modules can just include this file and will not need to change all the function names within the module code itself. So it should be sufficient to place this line near the start of the module

  #include "compat.h"

and re-compile (in practise, the module should use the value of MODULE_MAGIC_NUMBER (MMN) to decide whether to include this file or not -- see the list of MMN values).

However if you want to write a module that uses a function from a third-party library that has the same name as a function in Apache from before this renaming, you have two choices: you could rename all the Apache functions to start with ap_ and not include compat.h. Alternatively you could include compat.h but then undefine the definition for the function in question and use the new Apache API name for just this function.

As part of this renaming, some functions which provide OS-specific functions (such as checking whether a filename is absolute or relative) have also been renamed. This sort of function now starts with ap_os_ to indicate that it is necessary to provide an OS abstraction, not to provide an Apache-related function. Functions like this include ap_os_canonical_filaname() and ap_os_is_path_absolute(). These functions are also renamed from their original names in compat.h.

Dynamic Modules on HP/UX

Dynamic loadable modules are now supported on HP/UX systems. This now brings support for loading modules at start or restart to Linux, FreeBSD, Solaris, SunOS, IRIX, OSF1, UnixWare, HPUX and Windows. Systems which are unlikely to be supported because they do not provide working dymanic loading function calls are Ultrix and AIX.


Apache in the News

Network Magazine has named Apache as the Web Server product of 1998, in 1998 Products of the Year: Web Server. They summarise the rise of Apache: "The initial cooperative seed quickly sprouted into a consortium of contributors who share in the development and management of the project. The result? A robust, stable, extremely inexpensive, and constantly upgraded product that dominated the web server".

Meanwhile, C|Net have named one Apache group member as a "web innovator" in The 1st Annual Web Innovator Awards: Brian Behlendorf, Apache. Once again the volunteer nature of the Apache group has confused the author, since there is no such thing as a "leader" of the Apache group (unlike many other free software projects, which do have a primary person driving the effort).


Comments or criticisms? Please email us at editors@apacheweek.com