## Inets Release Notes

## Inets 2.5.4

### Improvements and new features

- Support for choosing port number when opening FTP connection.
  It is now possible to open a connection using a user specified port number.
  Default is still 21.
  Own Id: OTP-3751

### Fixed errors and malfunctions

- Wrong return value from FTP function recv_bin.
  The function actually returned: {ok,{ok,binary()}} instead of {ok,binary()}
  Own Id: OTP-3755
  Aux Id: Seq 4958
- The HTTP server hangs due to unhandled info: {'EXIT',<0.12542.6>,badsig}
  Crash of the listener process for this reason not handled.
  Own Id: OTP-3793
  Aux Id: Seq 5020

### Known bugs and problems

- ftp:open(Host,Port) does not work. Use ftp:open(Host,Port,[]) instead.

## Inets 2.5.3

### Improvements and new features

- It's now possible to perform runtime upgrade/downgrade
of the HTTPD server from/to 2.5.1.
The upgrade/downgrade is rather crude: An application restart!
- Further improvment of handling of lack-of-resources situations.

### Fixed errors and malfunctions

- CGI related problem with executable files on win32.
A problem related to the win32 platform and cgi caused HTTPD to fail to
detect executable files if the file name (of the retrieved file)
contained a "executanle" extension (i.e. '.exe', '.com' or '.bat').
Own Id: OTP-3627
- Heavy load state incorrect.
A special heavy load listener process was created when HTTPD reaches
the heavy load state. The next request was be rejected, regardless of
the actual state at that time.
Own Id: OTP-3528

### Known bugs and problems

No known problems.

## Inets 2.5.2

### Improvements and new features

- Now possible to run more then one HTTP server in a node listening to the same port number but different addresses.
Own Id: OTP-3493

### Fixed errors and malfunctions

- Status code 404 incorrectly used instead of 500.
Own Id: OTP-3402
- Handling of lack of resources (to many open files, ...) improved.
Own Id: OTP-3403, OTP-3461
- Use of obsolete and not recommended functions removed.
Functions httpd_conf:is_directory/1 and httpd_conf:is_file/1 has changed so that when they are called with a path which is not a directory (in the first case) or file (in the second case) then the return value will be {error,FileInfo}, where FileInfo is now a file_info record according to kernel/include/file.hrl.
Own Id: OTP-3405
- Call of non-existing function 'inet:getaddr/1' in httpd_conf:load/2 Corrected.
Own Id: OTP-3457
- Call to non-existing module 'http_conf' in mod_auth:load/2. Corrected.
Own Id: OTP-3459
- An error (module mod_include) in the parsing of SHTML files could cause the handling process to crash. The reason was the reading of files was done in chunks. If a directive or comment starts at the end of a chunk but ends in the next chunk, this was taken as EOF and an exception was thrown. This exception was not handled which caused the process to crash.
Own Id: OTP-3527
- The FTP failure 'File system full' during file transfer is not handled properly.
Own Id: OTP-3268, OTP-3503

### Known bugs and problems

- It is not possible to perform runtime upgrade from older versions. This is temporary and will be fixed in the next release

## Inets 2.5.1

### Improvements and new features

- New option added to httpd_core: BindAddress. BindAddress defines which address the server will listen to.
Bugs reported since R5 has been fixed.
Own Id: OTP-3295

## Inets 2.5

### Fixed errors and malfunctions

- Possible error codes from http_socket were not handled. Corrected.
Own Id: OTP-3214
Aux Id: Seq 3752

### Improvements and new features

- Errors in the examples and documentation were corrected.
Own Id: OTP-3263
Aux Id: seq 3921

## Inets 2.3

### Fixed errors and malfunctions

- ftp:open crashed if connection was closed before a complete welcome message was received, this is now fixed.
Own Id: OTP-2723
Aux Id: HA98434, seq 1151

### Improvements and new features

- The authentication modules have been rewritten with support for dets, plain and mnesia authentication databases. There is also a new module called 'mod_secrity', which implements security event logging and notification. Both the mod_auth and mod_security modules have an API for the programmer that implements functions they will require to have full control over access restricted parts of a site. NOTE: The mod_auth_mnesia module does not implement the API previously found there, please see the mod_auth documentation.
Own Id: OTP-2281
Aux Id: seq 740,OTP-2273
- Support for the sockets application has been removed from INETS, use SocketType ssl or ip_comm instead.
Own Id: OTP-2848
- The HTTP server has got improved efficiency through recognition of the 'If-Modified-Since' header field.
Own Id: OTP-2870
- CGI scripts are now supported on Windows aswell as UNIX platforms.
Own Id: OTP-2915
- mod_auth now supports the 'deny from' directive.
Own Id: OTP-2982
- The HTTP server now experimentaly supports persistent connections (as defined in RFC2068). This is the first step towards HTTP/1.1 support. Enabling this feature may greatly improve performance, as the server then uses the same TCP connection for more than one HTTP request. Two new configuration directives are defined for httpd_core: KeepAlive max-requests KeepAliveTimeout seconds
Own Id: OTP-3032

### 1.1 INETS 2.2.5

#### 1.1.1 Fixed Bugs and Malfunctions

- The server-side include parsing (`mod_include(3)`) no longer has problems with big HTML files. These problems previously resulted in a memory intensive emulator and lingering processes.
  Own Id: OTP-2507
- HTTP-1.1 requests are now accepted; even though the server is HTTP-1.0 compliant. HTTP-1.1 uses the same external protocol as HTTP-1.0 anyway; as defined in RFC 1945.
  Own Id: OTP-2679

#### 1.1.2 Known bugs and problems

- If a Web browser connect itself to an SSL enabled server using a URL not starting with `https://` the server will hang due to an ugly bug in the SSLeay package!

### 1.2 INETS 2.2.2

#### 1.2.1 Fixed Bugs and Malfunctions

- "unknown" is not always put into the remotehost field of access logs when the obsolote sockets type is used. The remotehost field is furthermore always a numerical IP address even if the new ip_comm socket type is used.
  Own Id: OTP-2225, seq 682
- The server does a complete cleanup even though httpd:stop/1 wasn't used to terminate the server.
  Own Id: OTP-2229
- The server now uses the new inet(3) distribution mechanism as default if the `SocketType` directive not is used in the server configuration, i.e. as stated in `httpd_core(3)`.
  Own Id: OTP-2554
- The `ErrorLog` and `ErrorDiskLog` directives now handles absolute file paths on Windows NT/95.
  Own Id: OTP-2504, seq885

#### 1.2.2 Known bugs and problems

- If a Web browser connect itself to an SSL enabled server using a URL not starting with `https://` the server will hang due to an ugly bug in the SSLeay package!

### 1.3 INETS 2.2.1.1

#### 1.3.1 Fixed Bugs and Malfunctions

- TCP errors is now taken care of.
  Own Id: OTP-2389
- Passwords are now encoded before storage in Mnesia.
  Own Id: OTP-2278,seq737
- httpd_socket:peername problem solved.
  Own Id: OTP-2225,seq682
- "ErlScriptAlias all" makes the server accept client access to all modules in the Erlang node.
  Own Id: OTP-2285,seq743

#### 1.3.2 Known bugs and problems

- If a Web browser connect itself to an SSL enabled server using a URL not starting with `https://` the server will hang due to an ugly bug in the SSLeay package!

### 1.4 INETS 2.2.1

#### 1.4.1 Improvements and New Features

- The module mod_ecgi is now called mod_esi and the "Module" config directive has to be updated accordingly.
  (*** INCOMPATIBILITY with INETS 2.1 **)
- The config directives "ServerName", "Port", "ServerRoot" and "DocumentRoot" are now mandatory.
  (*** INCOMPATIBILITY with INETS 2.1 **)
- The default value for the config directive "SocketType" is "ip_comm" (Erlang's new communication mechanism) instead of the obsolete sockets dito.
  (*** INCOMPATIBILITY with INETS 2.1 **)

#### 1.4.2 Fixed Bugs and Malfunctions

- The access log format now uses a correct date format.
  Own Id: OTP-2068
- ftp:open/2 no longer hangs indefinitely.
  Own Id: OTP-2041, seq526

#### 1.4.3 Known bugs and problems

- If a Web browser connect itself to an SSL enabled server using a URL not starting with `https://` the server will hang due to an ugly bug in the SSLeay package!

### 1.5 INETS 2.2

#### 1.5.1 Improvements and New Features

- The server documentation has been thoroughly reviewed and enhanced. The documentation has been grouped into 18 manual pages and the Erlang Web Server API (EWSAPI) is described in detail.
  Own Id: OTP-1439
- Mnesia based management of authentication data is now supported. It is now possible to on-the-fly manage user and group information to be used for authentication. (Read more about this in the EWSAPI module `mod_auth_mnesia` description).
  Own Id: OTP-1591
  Own Id: OTP-1491
- An alternative mechanism for storage of log information is no supported. This mechanism uses `disk_log(3)` to enable the use of wrap logs etc. (Read more about this in the EWSAPI module `mod_disk_log` description).
  Own Id: OTP-1491
- A new config directive `SocketType` has been added making it possible to specify which communication mechanism to use, i.e. `ip_comm`, `sockets` or `ssl`. `ip_comm` is the default choice if nothing is specified in the server config file. (Read more about `SocketType` in `httpd_core(3)`.
  Own Id: OTP-1600
- A new mandatory config directive `ServerName` has been added telling the server about its actual host name. `ServerName` must be specified for the server to start. (Read more about `ServerName` in `httpd_core(3)`.
- Server-Side Includes is now supported. (Read more about this in the EWSAPI module `mod_include` description).
- Filetype/method-based script execution is now supported (Read more about this in the EWSAPI module `mod_actions` description).
- Basic directory indexing is now supported (Read more about this in the EWSAPI module `mod_dir` description).
- The `ftp` client has been extended with a set of new functions: `delete/2`, `recv_bin`, `rename`, `rmdir`, `send_bin`, and functions for sending file chunks.
  Own Id: OTP-1724, OTP-1803

#### 1.5.2 Fixed Bugs and Malfunctions

- It is now possible to start a server using `erl` command's `-s` option.
  Own Id: OTP-1444
- Erlang CGI-scripts now correctly handles %3A character sequences in the CGI `QUERY_STRING`
  Own Id: OTP-1459
  Aux Id: HA54106
- The `ftp` client now correctly receives a file in the current directory of the client
  Own Id: OTP-1809
- The `ftp` client is now linked to the owner.
  Own Id: OTP-1802

#### 1.5.3 Known bugs and problems

- If a Web browser connect itself to an SSL enabled server using a URL not starting with `https://` the server will hang due to an ugly bug in the SSLeay package!

### 1.6 INETS 2.1

#### 1.6.1 Improvements and New Features

Secure Sockets Layer (SSL) is now supported. Read more about SSL in the OTP SSL application.

- Erlang CGI-scripts now correctly handles colons (:) in the `QUERY_STRING`
  Own Id: OTP-1444
- httpd beam start-up configuration problems solved.
  Own Id: OTP-1467
  Aux Id: HA54102

#### 1.6.2 Known bugs and problems

- It is currently not possible to start a server using erl command's `-s` option!
- If a Web browser connect itself to an SSL enabled server using a URL not starting with `https://` the server will hang due to an ugly bug in the SSLeay package!
- That the ftp client did not check for eof in a file read, has been corrected.
  Own Id: OTP-1572

### 1.7 INETS 2.0

#### 1.7.1 Improvements and New Features

The Web server has been totally redesigned and now supports the Erlang Scripting Interface (ESI), CGI-1.1, User Authentication, Common Log Format , URL Aliasing, Mime Type Settings, Erlang Web Server API (EWSAPI) and External Config Files (Apache style) etc.

#### 1.7.2 Known bugs and problems

It seems that there is a problem starting the server using the `erl` command's `-s` option!

### 1.8 INETS 1.0.2

#### 1.8.1 Fixed Bugs and Malfunctions

- A file with a `.js` file suffix is now mime stamped with `application/x-javascript` (Ticket: OTP-1221).
- Output produced by an Erlang CGI script is now parsed before delivery, i.e. a valid response status code is generated, e.g. `Location: http://www.yahoo.com\n\n` generates the status code 302 to inform the client of the redirect declared in the `Location:` field (Ticket: OTP-1227).

### 1.9 INETS 1.0.1

#### 1.9.1 Improvements and New Features

- Addition of `httpd:parse_query/1` which parses input to eval and erl scripts.
- Examples in `httpd_example` + documentation has been updated and no longer use `flatten` and `++` as extensively. Cause: It is OK to return nested lists to a port, `term_to_binary/1` and `size/1`.
- It is now OK to use "/" instead of ":" in eval and erl scripts as `module:function` separator.

#### 1.9.2 Fixed Bugs and Malfunctions

- Manually started HTTP servers (`start/6`) no longer linked to the eshell (gosh!).
- Data transfer is now gracefully stopped if a HTTP client aborts a HTTP request.
- Input to erl and eval script no longer gets automatically (and wrongly) converted (+ made into space and %xx made into the appropriate character). Use the new `parse_query` function instead.

### 1.10 INETS 1.0

New application.