Add ssl_close_notify() to servers that missed it
diff --git a/programs/ssl/ssl_client2.c b/programs/ssl/ssl_client2.c
index d977db5..1f53e53 100644
--- a/programs/ssl/ssl_client2.c
+++ b/programs/ssl/ssl_client2.c
@@ -616,6 +616,7 @@
         if( ret == 0 )
         {
             printf("\n\nEOF\n\n");
+            ssl_close_notify( &ssl );
             break;
         }
 
@@ -624,9 +625,9 @@
     }
     while( 1 );
 
-    ssl_close_notify( &ssl );
-
 exit:
+    if( ret == POLARSSL_ERR_SSL_PEER_CLOSE_NOTIFY )
+        ret = 0;
 
 #ifdef POLARSSL_ERROR_C
     if( ret != 0 )
diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c
index 48e5677..a4247da 100644
--- a/programs/ssl/ssl_server.c
+++ b/programs/ssl/ssl_server.c
@@ -324,7 +324,21 @@
 
     len = ret;
     printf( " %d bytes written\n\n%s\n", len, (char *) buf );
-    
+
+    printf( "  . Closing the connection..." );
+
+    while( ( ret = ssl_close_notify( &ssl ) ) < 0 )
+    {
+        if( ret != POLARSSL_ERR_NET_WANT_READ &&
+            ret != POLARSSL_ERR_NET_WANT_WRITE )
+        {
+            printf( " failed\n  ! ssl_close_notify returned %d\n\n", ret );
+            goto reset;
+        }
+    }
+
+    printf( " ok\n" );
+
     ret = 0;
     goto reset;
 
diff --git a/programs/ssl/ssl_server2.c b/programs/ssl/ssl_server2.c
index b8cc16c..5734088 100644
--- a/programs/ssl/ssl_server2.c
+++ b/programs/ssl/ssl_server2.c
@@ -684,6 +684,20 @@
     len = ret;
     printf( " %d bytes written\n\n%s\n", len, (char *) buf );
 
+    printf( "  . Closing the connection..." );
+
+    while( ( ret = ssl_close_notify( &ssl ) ) < 0 )
+    {
+        if( ret != POLARSSL_ERR_NET_WANT_READ &&
+            ret != POLARSSL_ERR_NET_WANT_WRITE )
+        {
+            printf( " failed\n  ! ssl_close_notify returned %d\n\n", ret );
+            goto reset;
+        }
+    }
+
+    printf( " ok\n" );
+
     ret = 0;
     goto reset;