Blame SOURCES/nmap-6.40-ncat_early_error_reporting.patch

5a7ca0
diff --git a/nsock/src/nsock_core.c b/nsock/src/nsock_core.c
5a7ca0
index ec38cad..aac2c1b 100644
5a7ca0
--- a/nsock/src/nsock_core.c
5a7ca0
+++ b/nsock/src/nsock_core.c
5a7ca0
@@ -1230,6 +1230,14 @@ void nsp_add_event(mspool *nsp, msevent *nse) {
5a7ca0
       assert(0);
5a7ca0
       break; /* unreached */
5a7ca0
   }
5a7ca0
+
5a7ca0
+  /* It can happen that the event already completed. In which case we can
5a7ca0
+   *    * already deliver it, even though we're probably not inside nsock_loop(). */
5a7ca0
+  if (nse->event_done) {
5a7ca0
+	  msevent_dispatch_and_delete(nsp, nse, 1);
5a7ca0
+	  update_first_events(nse);
5a7ca0
+	   
5a7ca0
+  }
5a7ca0
 }
5a7ca0
 
5a7ca0
 /* An event has been completed and the handler is about to be called. This