- Added Secure Renegotiation (RFC 5746)

diff --git a/programs/ssl/ssl_server.c b/programs/ssl/ssl_server.c
index 0d24787..ca1477e 100644
--- a/programs/ssl/ssl_server.c
+++ b/programs/ssl/ssl_server.c
@@ -370,7 +370,9 @@
 
     ssl_set_ca_chain( &ssl, srvcert.next, NULL, NULL );
     ssl_set_own_cert( &ssl, &srvcert, &rsa );
+#if defined(POLARSSL_DHM_C)
     ssl_set_dh_param( &ssl, my_dhm_P, my_dhm_G );
+#endif
 
     printf( " ok\n" );
 
@@ -484,8 +486,11 @@
 
         len = ret;
         printf( " %d bytes read\n\n%s", len, (char *) buf );
+
+        if( ret > 0 )
+            break;
     }
-    while( 0 );
+    while( 1 );
 
     /*
      * 7. Write the 200 Response
@@ -531,19 +536,10 @@
     net_close( client_fd );
     x509_free( &srvcert );
     rsa_free( &rsa );
+    ssl_session_free( &ssn );
+    ssl_session_free( s_list_1st );
     ssl_free( &ssl );
 
-    cur = s_list_1st;
-    while( cur != NULL )
-    {
-        prv = cur;
-        cur = cur->next;
-        memset( prv, 0, sizeof( ssl_session ) );
-        free( prv );
-    }
-
-    memset( &ssl, 0, sizeof( ssl_context ) );
-
 #if defined(_WIN32)
     printf( "  Press Enter to exit this program.\n" );
     fflush( stdout ); getchar();