- Changed behaviour of net_recv(), ssl_fetch_input() and ssl_read(). net_recv() now  returns 0 on EOF instead of POLARSSL_ERR_NET_CONN_RESET. ssl_fetch_input() returns POLARSSL_ERR_SSL_CONN_EOF on an EOF from its f_recv() function. ssl_read() returns 0 if a POLARSSL_ERR_SSL_CONN_EOF is received after the handshake.
 - Network functions now return POLARSSL_ERR_NET_WANT_READ or POLARSSL_ERR_NET_WANT_WRITE instead of the ambiguous POLARSSL_ERR_NET_TRY_AGAIN


diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index 8ee2d08..47723cc 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -878,6 +878,9 @@
                        ssl->in_left, nb_want ) );
         SSL_DEBUG_RET( 2, "ssl->f_recv", ret );
 
+        if( ret == 0 )
+            return( POLARSSL_ERR_SSL_CONN_EOF );
+
         if( ret < 0 )
             return( ret );
 
@@ -2092,6 +2095,9 @@
     {
         if( ( ret = ssl_read_record( ssl ) ) != 0 )
         {
+            if( ret == POLARSSL_ERR_SSL_CONN_EOF )
+                return( 0 );
+
             SSL_DEBUG_RET( 1, "ssl_read_record", ret );
             return( ret );
         }
@@ -2104,6 +2110,9 @@
              */
             if( ( ret = ssl_read_record( ssl ) ) != 0 )
             {
+                if( ret == POLARSSL_ERR_SSL_CONN_EOF )
+                    return( 0 );
+
                 SSL_DEBUG_RET( 1, "ssl_read_record", ret );
                 return( ret );
             }