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;