Add Visual Studio macros to erl_driver.h and ei.h
Fix efile_openfile() to handle stat() failure

If the initial stat() fails then efile_openfile() will still proceed
to open() the file.  If that succeeds and the caller passed a non-NULL
pSize, then it will copy bogus data from the statbuf into *pSize.  This
has been observed to cause file:read_file/1 to return truncated file
data with no error indication.

The use case involved a large file system mounted via NFS, with some
directories containing large number of files, and NFS mount options
that allow the NFS client to return EIO if the NFS server does not
respond quickly enough.  Depending on the caching state of the client
and server machines, a few stat() calls (fewer than 1 per 10 million)
would take long enough to trigger EIO errors, but subsequent open()
calls would succeed, and read_file/1 would return truncated data.  This
sequence of events has been observed via "strace" on beam.smp.

Signed-off-by: Mikael Pettersson <mikpelinux@gmail.com>
inets: Fix HTTP 1.0 body end on closed connection

Receiving HTTP response with no Content-length header and
with body ending on closed connection should give the complete
response body contents up to the last byte received.
inets: httpd - Reject incorrect large request lines early
inets: httpc - update test suite framwork to adopt to change in httpd
inets: httpd - Behave well on not so long but wrong request lines
inets: Prepare for release

Do application restart as old soft upgrade was not correct
ssl: Move init
Replace traffic-related log reports with no-op function calls

The former were a little over-enthusiastic and could cause a node to be
logged to death if a peer Diameter node was sufficiently ill-willed.
The function calls are to diameter_lib:log/4, the arguments of which
identify the happening in question, and which does nothing but provide a
function to trace on. Many existing log calls have been shrunk.

The only remaining traffic-related report (hopefully) is that resulting
from {answer_errors, report} config, and this has been slimmed.
Don't count messages on arbitrary keys

That is, don't use a key constructed from an incoming Diameter header
unless the message is known to the dictionary in question.  Otherwise
there are 2^32 application ids, 2^24 command codes, and 2 R-bits for an
ill-willed peer to choose from, each resulting in new keys in the
counter table (diameter_stats).

The usual {ApplicationId, CommandCode, Rbit} in a key is replaced by the
atom 'unknown' if the message in question is unknown to the decoding
dictionary.

Counters for messages sent and received by a relay are (still) not
implemented.
Make example code quiet

The output could make it impossible to use the shell. Counters returned
diameter:service_info/2 can be used to check for expected happenings.
Make example server answer unsupported requests with 3001

As it should. The previous discard (surely) pre-dated being able to
return {answer_message, 3001} from a handle_request callback.
Simplify example server

In particular, remove the unnecessary list-or-record answer.
ssl: Add ssl options to listen options tracker
inets: Correct httpc_SUITE
ssh: Add max_session parameter to ssh:daemon
ssh: Use correct timeout value for the connection timeout
ssh: Prepare for release
crypto: Fix memory leak in hmac stream functions

The context was never deallocated.
crypto: Fix memory leak in some error cases

sign(dss,) and compute_key(dh,)