Fix server-initiated renego with non-blocking I/O
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
index e6c4efd..6e6f6da 100644
--- a/library/ssl_tls.c
+++ b/library/ssl_tls.c
@@ -4167,8 +4167,6 @@
         return( ret );
     }
 
-    ssl->renegotiation = SSL_RENEGOTIATION_PENDING;
-
     SSL_DEBUG_MSG( 2, ( "<= write hello request" ) );
 
     return( 0 );
@@ -4222,6 +4220,12 @@
         if( ssl->state != SSL_HANDSHAKE_OVER )
             return( POLARSSL_ERR_SSL_BAD_INPUT_DATA );
 
+        ssl->renegotiation = SSL_RENEGOTIATION_PENDING;
+
+        /* Did we already try/start sending HelloRequest? */
+        if( ssl->out_left != 0 )
+            return( ssl_flush_output( ssl ) );
+
         return( ssl_write_hello_request( ssl ) );
     }
 #endif /* POLARSSL_SSL_SRV_C */