Add a new diagnostic in winnet.c, to attempt to pinpoint the reason
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 8 Dec 2002 11:00:47 +0000 (11:00 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Sun, 8 Dec 2002 11:00:47 +0000 (11:00 +0000)
for the tree234 assertion failure we've had reported recently.

git-svn-id: svn://svn.tartarus.org/sgt/putty@2288 cda61777-01e9-0310-a592-d414129be87e

winnet.c

index 430a47b..b5ca741 100644 (file)
--- a/winnet.c
+++ b/winnet.c
@@ -901,6 +901,25 @@ int select_result(WPARAM wParam, LPARAM lParam)
     u_long atmark;
 
     /* wParam is the socket itself */
+
+    /*
+     * One user has reported an assertion failure in tree234 which
+     * indicates a null element pointer has been passed to a
+     * find*234 function. The following find234 is the only one in
+     * the whole program that I can see being capable of doing
+     * this, hence I'm forced to conclude that WinSock is capable
+     * of sending me netevent messages with wParam==0. I want to
+     * know what the rest of the message is if it does so!
+     */
+    if (wParam == 0) {
+       char *str;
+       str = dupprintf("Strange WinSock message: wp=%08x lp=%08x",
+                       (int)wParam, (int)lParam);
+       logevent(NULL, str);
+       connection_fatal(NULL, str);
+       sfree(str);
+    }
+
     s = find234(sktree, (void *) wParam, cmpforsearch);
     if (!s)
        return 1;                      /* boggle */