About  |  Contact  |  Site Map  |  Search

NetForge History

This is the history of all changes that were made to NetForge since the
first public release (0.14). The versions are listed latest to earliest.
The changes are marked as either BUG (bug fixed), SEC (security bug fixed),
FEA (new feature) or MIS (miscellaneous).

  [FEA]  Date headers are now parsed with
         instead of java.util.Date's parse() method (which is buggy,
         deprecated and much slower).

*********************************************** RELEASE 1.0.3 (Jun/22/1999)

  [FEA]  Added configuration actions to ServletFrontend for manually
         removing and reloading Servlets.

  [FEA]  Added class MetaFilesysBackend.

  [BUG]  HttpServletRequest.getPathInfo() returned an empty string for
         the virtual path "/".

  [BUG]  ServletFrontend: Session cookies are now refreshed only when
         required (i.e. when a cookie has a maximum age, is new or
         needs to be deleted).

  [MIS]  NetForge is now using the open source version of the Novocode

************************************************* RELEASE 1.0 (Feb/18/1999)

  [BUG]  ServletFrontend: The Servlet loader couldn't load referenced
         classes in packages because the package separator '.' was not
         translated to the NFile path separator '/'.

  [BUG]  HTTP core: Error response messages now include a stack trace
         for all Throwables instead of only Exceptions.

  [BUG]  HTTP core: Writer auto-flushing did not work in all cases.

  [BUG]  HTTP core: A bug caused Writer buffering to fail with an
         ArrayIndexOutOfBoundsException under certain circumstances.

  [MIS]  The bin/netforge script now adds the "classes" directory to
         the class path before the NetForge JARs to allow placing
         NetForge patches into the "classes" directory.

  [FEA]  Added the bin/applypatch script to simplify the installation
         of patches.

  [MIS]  Wrote the last missing chapter for the NetForge 1.0 manual
         and included the latest version of "Servlet Essentials".

************************************************ RELEASE 0.48 (Dec/24/1998)

  [FEA]  ServletFrontend: Servlets in named packages can now be
         accessed directly by their fully qualified class name without
         needing to define an alias.

  [BUG]  ServletFrontend: Under certain circumstances when writing to
         a ServletOutputStream, the response header was sent after the

  [FEA]  DirectFrontend: Added support for methods DELETE and MOVE.

  [FEA]  The startup options are now set via simple command line
         arguments instead of system properties.

  [BUG]  CounterResponder was broken.

  [BUG]  ServletFrontend: PrintWriter character encoding support did not
         work for most encodings.

  [MIS]  HTTP core: Moved Cookie handling from the Servlet interface
         implementation to classes novocode.netforge.http.Request and

  [FEA]  HTTP core: Added optional buffering with commit/rollback
         operations for response bodies to the Response class.

  [FEA]  HTTP core: Added ResponseWriter for writing character data to
         a response with automatic character encoding conversion.

  [FEA]  ServletFrontend: Responses can optionally be buffered at the char-
         and byte-level to determine a suitable character encoding and
         content length.

************************************************ RELEASE 0.46 (Nov/23/1998)

  [FEA]  ServletFrontend supports version 2.1 of the Servlet API.
         Deprecated methods like ServletContext.getServlet() which
         are not supposed to work in a 2.1 environment can be
         reactivated with a configuration option for compatibility
         with API versions 1.0 and 2.0.

  [FEA]  Added HTTP response filtering mechanisms.

  [FEA]  Added SSIFilter for Server-Side Includes.

  [MIS]  Added chapters "Filters" and "Backends" and more details on
         ServletFrontend to the NetForge manual

  [SEC]  CgiFrontend: "Pass 'Authorization' headers to CGI programs"
         caused all headers *except* the authorization headers to
         be suppressed.

  [BUG]  Removed incorrect content length header from CounterResponder
         image/gif responses.

  [BUG]  ServletFrontend: Servlet aliasing was broken.

  [BUG]  ServletFrontend: "Load all Servlets on init" was broken.

  [MIS]  Major rework and optimization of class
         novocode.netforge.http.responder.Response and all dependent

************************************************ RELEASE 0.42 (Oct/24/1998)

  [SEC]  DirectResponder could be used to get access to parent
         directories of the Backend + offset by manually requesting URIs
         with ".." paths.

  [BUG]  Servlet response headers which were set with
         ServletResponse.setHeader() were sent as "name: name" instead
         of "name: value".

  [BUG]  Dates in headers and log files used localized month names from
         the default locale instead of a proper English locale.

  [FEA]  The Servlet ClassLoader supports getResource() (for NFiles which
         are local files) and getResourceAsStream().

  [FEA]  A Servlet(Context)'s directory is available as an NFile or
         absolute path in the local filesystem (where available) through
         the new ServletContext attributes
         "novocode.netforge.http.servlet.dir.nfile" and

  [FEA]  Added "Prefer requested host" option to HTTPServer.

  [FEA]  Servlet sessions are removed from the server when they time
         out. The time-to-live for the client and the server side is

************************************************ RELEASE 0.40 (Jun/28/1998)

  [FEA]  Introduced the Frontend/Backend concept. FilesysResponder is
         replaced by DirectFrontend, CgiResponder by CgiFrontend and
         ServletResponder by ServletFrontend. The Backends FilesysBackend
         and JdbcBackend allow all Frontends to access the local
         file system and JDBC databases.

  [MIS]  Separated Realms and Protection Spaces. Realms implement
         HTTP authentication schemes; Protection Spaces decide in a
         protocol-independent way if a request with a certain user
         name, password and originating IP address is allowed.

  [MIS]  FilesysResponder: "Last modified" dates are now displayed in GMT.

  [BUG]  FilesysResponder: ReadMe files were not included properly in
         automatically generated file lists.

  [BUG]  CgiResponder: The PATH_INFO environemt variable used the host
         system's file separator character instead of '/'.

  [BUG]  MessageResponse: Arguments of GET requests were not linked to and
         displayed in message responses.

  [BUG]  FilesysResponder: References in file lists were not encoded as

************************************************ RELEASE 0.36 (May/11/1998)

  [BUG]  Servlets that implemented the SingleThreadModel interface could
         still be called concurrently. Now all calls are blocked until the
         Servlet is available for service again.

  [BUG]  Servlet reloading was broken.

************************************************* RELEASE 0.35 (May/6/1998)

  [FEA]  The servlet interface supports the full JSDK2.0 API,
         including Reader/Writer abstraction, Cookie handling and
         Session Tracking.

  [FEA]  Connection threads are now reused. This increases server
         performance by about 10% and prevents memory leaks on JVMs which
         do not garbage-collect terminated threads.

  [FEA]  Added new RedirectionResponder which works like ProxyResponder
         but redirects the client to a new location instead of directly
         performing a request.

  [FEA]  Removed all static dependencies. You can now run multiple
         instances of NetForge in one JVM.

  [BUG]  FormUploadResponder: The upload form was not returned correctly.

  [MIS]  Changed package structure.

  [MIS]  Metaconf classes separated from NetForge source tree. A complete
         Metaconf package, including the API documentation, can be
         downloaded from
         The new Metaconf system allows for remote-configuration of

  [BUG]  CgiResponder: The environment variable REMOTE_ADDR contained the
         host name plus address instead of only the address.

  [FEA]  Added "Require" option to BasicRealm.

  [FEA]  The servlet sandbox has a new option to prevent servlets from
         reading "Authorization" headers of HTTP requests, similar to
         the "Pass 'Authorization' headers to CGI programs" option of

  [MIS]  Changed the Logfile date creation system to avoid deprecated
         JDK1.0.2 java.util.Date methods.

************************************************* RELEASE 0.28 (Feb/2/1998)

  [MIS]  Added some user-level documentation.

  [FEA]  Configurable sandbox for untrusted servlets.

  [FEA]  Added NFTestServlet, a servlet counterpart to TestResponder.

  [FEA]  NetForge ships with Novocode Toolkit version 0.2 which includes
         the class that allows you to set the
         system properties required by NetForge with JVMs that do not
         support the "-Dproperty=value" option.

  [FEA]  The thread priority adjustment of PortServer threads which was
         previously hardcoded to +2 is now user-configurable.

  [FEA]  CgiResponder has a new option to prevent passing "Authorization"
         headers to CGI programs for better security on operating systems
         that allow users to read the environment of other users'

  [BUG]  Fixed a bug in the Metaconf HTML VarString peer class which
         caused variable strings to be expanded in configuration forms.

  [FEA]  Implemented true list-style bitfields for the Metaconf AWT peer.

************************************************ RELEASE 0.27 (Dec/29/1997)

  [BUG]  The server aborted with a NullPointerException in if a log file couldn't be opened
         for writing.

  [MIS]  Novocode Toolkit classes separated from NetForge source tree. A
         complete toolkit package, including the API documentation, can be
         downloaded from

************************************************ RELEASE 0.26 (Nov/24/1997)

  [FEA]  Multi-server support: NetForge can run any number of servers for
         arbitrary protocols.

  [FEA]  The new EchoServer is an example for a simple NetForge server.
         It reads lines of text from the client and echoes them back.

  [FEA]  Servers can be bound to local IP addresses to create IP-based
         virtual servers.

  [FEA]  The new HostMultiplexResponder makes it possible to create
         non-IP-based virtual servers.

  [FEA]  The new ProxyResponder is a simple non-caching HTTP proxy which
         can forward requests to a parent proxy or connect directly to a
         requested HTTP resource. A ProxyResponder can not only be mounted
         as area "http:" or "ftp:" but also as a local area in order to
         map resources from a different server into the local namespace.

  [FEA]  Improved ServletResponder: Servlet aliasing, init parameters and
         multi-class servlets are now supported.

************************************************ RELEASE 0.24 (Oct/26/1997)

  [FEA]  Administration GUI.
  [FEA]  FilesysResponder supports file uploads via PUT.

  [FEA]  FilesysResponder can compress uncompressed outgoing data on the
         fly with gzip.

  [FEA]  A new FormUploadResponder supports file upload via forms, as
         specified in RFC 1867, with all responders that understand the
         PUT method.

  [FEA]  The new CounterResponder implements a Web Counter which can
         create textual and image (GIF) counters. Custom fonts (in any
         image format that your JVM understands) can be used. Images can
         be remapped to a user-specified coloring scheme.

  [FEA]  Proper servlet shutdown.

*************************************************** RELEASE 0.14 (Sep/1997)

  [MIS]  First public release.