Bug fix release : otp_src_R10B-7
Build date      : 2005-08-31

This is a bug fix release 7 for the R10B release.
You can download the full source distribution from
 
  http://www.erlang.org/download/otp_src_R10B-7.tar.gz
  http://www.erlang.org/download/otp_src_R10B-7.readme (this file)

Note: To unpack the TAR archive you need a GNU TAR compatible
program. For instance, on MacOS X before 10.3 you must use the 'gnutar' command;
you can't use the 'tar' command or StuffIt to unpack the sources.


For installation instructions please read the README that is part of
the distribution.

The Windows binary distribution can be downloaded from

  http://www.erlang.org/download/otp_win32_R10B-7.exe

The documentation at http://www.erlang.org will be updated. You can
also download the complete HTML documentation or the Unix manual files

  http://www.erlang.org/download/otp_doc_html_R10B-7.tar.gz
  http://www.erlang.org/download/otp_doc_man_R10B-7.tar.gz

For some OTP applications there are more detailed release notes in the
HTML documentation.

We also want to thank those that sent us patches, suggestions and bug
reports,

The OTP Team

--- appmon --------------------------------------------------------------

    OTP-5633  Replaced some tuple funs with the new fun M:F/A construct.

	      The high-order functions in the lists module no longer accept
	      bad funs under any circumstances. 'lists:map(bad_fun, [])'
	      used to return '[]' but now causes an exception.

	      Unused, broken compatibility code in the ets module was
	      removed. (Thanks to Dialyzer.)

	      Eliminated 5 discrepancies found by Dialyzer in the appmon
	      application.

--- compiler ------------------------------------------------------------

    OTP-5632  Updating at least two fields of a record with a literal
	      string could cause the compiler to generate dangerous code
	      that could cause a crash at run-time (e.g. R#r{a="abc",b=1}).
	      (Thanks to Mikael Karlsson.)

	      Unecessary tests (such as a 'case' with two case branches
	      that were identical) could cause the compiler to crash.
	      (Thanks to Fredrik Thulin.)

	      The validation pass of the compiler could generate an error
	      for correct code when floating point operations were used in
	      try/catch statements.

	      In bit syntax construction, any field following a binary
	      field would always be marked as "aligned" (which may or may
	      not be correct). That would cause the hipe native compiler to
	      generate incorrect code if the field was in fact unaligned.
	      (Thanks to Per Gustafsson.)

	      Some complex guard expressions (such as A#a.b=="";
	      A#a.b==undefined) would crash the compiler. (Thanks to Sean
	      Hinde.)

	      Compilation speed has been increased for modules with many
	      functions and/or atoms (such as modules generated by the asn1
	      application or other code generators).

--- erts ----------------------------------------------------------------

    OTP-5621  Timezone data is now initialized better. (was a problem at
	      least on NetBSD 2.0.2) Thanks to Rich Neswold.

    OTP-5634  The hybrid-heap emulator ('erl -hybrid') is much more stable.
	      We have corrected all known bugs that caused it to dump core
	      while running our test suites.

    OTP-5645  The c:i/0 function will now run in a paged mode if there are
	      more than 100 processes in the system. (Thanks to Ulf Wiger.)

	      erlang:system_info(process_count) has been optimized and does
	      now return exactly the same value as length(processes()).
	      Previously erlang:system_info(process_count) did not include
	      exiting processes which are included in length(processes()).

	      The +P flag for 'erl', which sets the maximum number of
	      processes allowed to exist at the same, no longer accepts
	      values higher than 134217727. (You will still probably run
	      out of memory before you'll be able to reach that limit.)

    OTP-5674  The term-building driver functions driver_output_term() and
	      driver_send_term() have been updated:

	      The ERL_DRV_FLOAT type has been added.

	      For the ERL_DRV_BINARY type, the length and offset are now
	      validated against the length of the driver binary.

	      The ERL_DRV_PID type is now implemented (it was documented,
	      but not implemented).

    OTP-5692  Fixed rare memory leaks in erlang:demonitor/1 when
	      distributed monitors were removed.

    OTP-5693  Processes were sometimes unnecessarily garbage collected when
	      terminating. These unnecessary garbage collections have now
	      been eliminated.

--- inets ------------------------------------------------------------

    OTP-5635  Some data doesn't pass through http_base_64:decode/1
	      correctly. The decoding routine fails whenever a 4-character
	      group of the encoding ends with "9" or "99". If it ends with
	      99, two bytes will be lost in the decode routine. If it ends
	      with a single 9, one byte will be lost in the decode.

    OTP-5642  [server] The server did not handle the config directive
	      BindAddress value "*" properly. When creating the option list
	      for the listen call, everything beside the atom undefined (if
	      BindAddress was never given) and an 4-tuple (e.g. BindAddress
	      value is 192.168.0.30) was incorrectly assumed to be an ipv6
	      address. For undefined (no BindAddress), inets attempts to
	      figure out if it is running on a ipv6-machine, and if so, add
	      the inet6 option when calling listen. The same approach
	      should be used when BindAddress is assigned the value "*".

    OTP-5648  [server,esi] Web server does not handle status-code returned
	      by an esi function. I.e. the esi-function can no longer
	      control the status code.

    OTP-5649  [server,esi] Corrected header format. First character was
	      lower case, and there where no space after the ":" character,
	      example: content-length:0. Now, first character was upper
	      case, and a space after the ":" character, example:
	      Content-Length: 0

    OTP-5650  [server,cgi] Parsing of the status header field could cause a
	      crash.

    OTP-5662  [ftp, client] Calling ftp:recv/2 twice on the same connection
	      failed due to that the last message on the ctrl channel was
	      not appropriately taken care of. This could potentially cause
	      a problem for any operation performed on the same connection
	      where there had previously been an ftp:recv/2 call. Also, in
	      some cases, when the process tries to close the data
	      connection, it does not take into account that the data
	      connection may actually not have been established.

    OTP-5663  [ftp, client] Added open option: mode. Deprecates function
	      force_active/1

    OTP-5665  [ftp, client] Enhanced error handling, mainly so the ftp
	      client behaves gracefully when the user does strange things
	      such as violate the user API.

    OTP-5680  [ftp, client] - A new option {progress, {CBmodule,
	      CBFunction, InitProgressTerm} has been added to allow users
	      to create things such as progress bars in there GUI's. The
	      option affects ftp:send/[3,4] and ftp:recv/[3,4].

    OTP-5682  [ftp-client] - The FTP error code 550 was handled in an
	      unexpected way. Some earlier versions of inets had a
	      workaround for this in ftp:recv_bin/2 that was eliminated
	      during restructuring of the ftp module while implementing
	      ipv6 capabilities. The problem is now fixed.

    OTP-5686  [http, client] Post request with a body in binary format
	      failed as length was used instead of size.

    OTP-5690  [ftp, client] - For some FTP commands the FTP server will
	      send more than one reply on the FTP control channel. In the
	      case of a fast FTP server the client would sometimes wrongly
	      disregard the second answer as trailing garbage attached to
	      the first reply.

    OTP-5691  [http, client] - Added new API function http:request/1

    OTP-5694  [httpd, server] - mod_cgi is implemented according to CGI-1.1
	      RFC 3875, an early implementation was based on some draft
	      that is not totally compliant to the RFC. Documentation was
	      updated. Also some code was restructured to facilitate
	      testing and maintenance of the server.

--- kernel --------------------------------------------------------------

    OTP-5360  The manual pages for most of the Kernel and some of the
	      STDLIB modules have been updated, in particular regarding
	      type definitions.

	      The documentation of the return value for erts:info/1 has
	      been corrected.

	      The documentation for erlang:statistics/1 now lists all
	      possible arguments.

    OTP-5598  When the native resolver fails a gethostbyaddr lookup,
	      nxdomain should be returned. There should be no attempt to
	      fallback on a routine that succeeds if only the syntax of the
	      IP address is valid. This has been fixed.

    OTP-5606  If several processes (at the same node) simultaneously tried
	      to start the same distributed application, this could lead to
	      application:start returning an erroneous value, or even hang.

    OTP-5633  Replaced some tuple funs with the new fun M:F/A construct.

	      The high-order functions in the lists module no longer accept
	      bad funs under any circumstances. 'lists:map(bad_fun, [])'
	      used to return '[]' but now causes an exception.

	      Unused, broken compatibility code in the ets module was
	      removed. (Thanks to Dialyzer.)

	      Eliminated 5 discrepancies found by Dialyzer in the appmon
	      application.

    OTP-5661  The possibility to have comments following the list of tuples
	      in a config file (file specified with the -config flag) has
	      been added.

--- orber ------------------------------------------------------------

    OTP-5658  The documentation referred to two different context 
	      definitions, the incorrect ServiceContext and the
	      correct IOP_ServiceContext. The hrl file
	      PATH/include/corba.hrl also contained the incorrect
	      record definition. This has now been updated so that
	      only IOP_ServiceContext is used and referred to.

    OTP-5659  Reduced overhead when using outgoing ACL with a local interface
	      defined.

    OTP-5660  Added guards to ensure that, when so required, a list
	      of IOP_ServiceContext's is passed instead of, for example,
	      just the context record.

    OTP-5671  Native interceptors may now export new_in_connection
	      and new_out_connection operations with arity 5.
	      If this is the case, information about the local
	      interface and port is passed to the interceptor.
	      Orber's built in interceptors have been changed
	      to include this information as well.

    OTP-5672  In some cases, e.g. incorrect GIOP headers or a
	      CancelRequest containing a non-existing RequestId,
	      the incoming connection would be terminated. 

    OTP-5673  If combining the 'Use Current Interface in IOR' and
	      'Use IPv6' flags, exported IOR:s conatined an incorrect
	      host address. 

--- stdlib --------------------------------------------------------------

    OTP-5360  The manual pages for most of the Kernel and some of the
	      STDLIB modules have been updated, in particular regarding
	      type definitions.

	      The documentation of the return value for erts:info/1 has
	      been corrected.

	      The documentation for erlang:statistics/1 now lists all
	      possible arguments.

    OTP-5633  Replaced some tuple funs with the new fun M:F/A construct.

	      The high-order functions in the lists module no longer accept
	      bad funs under any circumstances. 'lists:map(bad_fun, [])'
	      used to return '[]' but now causes an exception.

	      Unused, broken compatibility code in the ets module was
	      removed. (Thanks to Dialyzer.)

	      Eliminated 5 discrepancies found by Dialyzer in the appmon
	      application.

    OTP-5644  The linter, QLC and the module erl_pp did not handle the new
	      'fun M:F/A' construct in all situations. This problem has
	      been fixed.

    OTP-5645  The c:i/0 function will now run in a paged mode if there are
	      more than 100 processes in the system. (Thanks to Ulf Wiger.)

	      erlang:system_info(process_count) has been optimized and does
	      now return exactly the same value as length(processes()).
	      Previously erlang:system_info(process_count) did not include
	      exiting processes which are included in length(processes()).

	      The +P flag for 'erl', which sets the maximum number of
	      processes allowed to exist at the same, no longer accepts
	      values higher than 134217727. (You will still probably run
	      out of memory before you'll be able to reach that limit.)

--- snmp ------------------------------------------------------------

    OTP-5490  Added support for The Advanced Encryption Standard (AES)
	      Cipher Algorithm in the SNMP User-based Security Model (RFC
	      3826).

    OTP-5636  [manager] Reset of USM-cache when unregister agent.

    OTP-5637  [manager] Improved asynch error reporting.

--- tools ---------------------------------------------------------------

    OTP-5653  The cross reference tool Xref did not handle the new 'fun
	      M:F/A' construct properly. This problem has been fixed.