From 9bd2fba0ffe3fa36f1d89e48466d4368e369f807 Mon Sep 17 00:00:00 2001
From: Martin Stjernholm <mast@lysator.liu.se>
Date: Wed, 4 Aug 1999 23:17:54 +0200
Subject: [PATCH] Ugly short-term kludge for SSL-stops-after-16k-sent-bug on
 NT.

Rev: lib/modules/SSL.pmod/sslfile.pike:1.16
---
 lib/modules/SSL.pmod/sslfile.pike | 26 ++++++--------------------
 1 file changed, 6 insertions(+), 20 deletions(-)

diff --git a/lib/modules/SSL.pmod/sslfile.pike b/lib/modules/SSL.pmod/sslfile.pike
index 5c88fdc491..66fc245af8 100644
--- a/lib/modules/SSL.pmod/sslfile.pike
+++ b/lib/modules/SSL.pmod/sslfile.pike
@@ -1,4 +1,4 @@
-/* $Id: sslfile.pike,v 1.15 1999/05/06 01:01:59 mast Exp $
+/* $Id: sslfile.pike,v 1.16 1999/08/04 21:17:54 mast Exp $
  *
  */
 
@@ -37,13 +37,6 @@ void die(int status)
 #endif
   }
   is_closed = 1;
-#ifdef SSL3_CLOSE_BUG_STILL_EXISTS
-#ifndef CALLBACK_BUG_FIXED
-  // The write callback sometimes gets called although the socket is closed.
-  socket::set_write_callback(0);
-  socket::set_read_callback(0);
-#endif /* CALLBACK_BUG_FIXED */
-#endif
   socket::close();
 }
 
@@ -76,18 +69,11 @@ private int queue_write()
 
 void close()
 {
-#ifdef SSL3_CLOSE_BUG_STILL_EXISTS
-  if (is_closed)
-    throw( ({ "SSL.sslfile->close: Already closed!\n", backtrace() }) );
-#endif
-
 #ifdef SSL3_DEBUG
   werror("SSL.sslfile->close\n");
 #endif
 
-#ifndef SSL3_CLOSE_BUG_STILL_EXISTS
   if (is_closed) return;
-#endif
 
   is_closed = 1;
   send_close();
@@ -103,9 +89,7 @@ int write(string s)
   werror("SSL.sslfile->write\n");
 #endif
 
-#ifndef SSL3_CLOSE_BUG_STILL_EXISTS
   if (is_closed) return -1;
-#endif
 
   int len = strlen(s);
   object packet;
@@ -197,7 +181,11 @@ private void ssl_write_callback(mixed id)
       write_buffer = write_buffer[written ..];
     } else {
       if (written < 0)
-	die(-1);
+#ifdef __NT__
+	// You don't want to know.. (Bug observed in Pike 0.6.132.)
+	if (socket::errno() != 1)
+#endif
+	  die(-1);
     }
   }
   int res = queue_write();
@@ -280,9 +268,7 @@ void set_nonblocking(function ...args)
   werror(sprintf("SSL.sslfile->set_nonblocking(%O)\n", args));
 #endif
 
-#ifndef SSL3_CLOSE_BUG_STILL_EXISTS
   if (is_closed) return;
-#endif
 
   switch (sizeof(args))
   {
-- 
GitLab