From b0ee1dbdf8a0e531ae3c62f6c03f1f8536c74d23 Mon Sep 17 00:00:00 2001
From: "wtc@chromium.org"
 <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Tue, 27 Jan 2009 02:58:33 +0000
Subject: Add a dummy function CrashBug6500 so that the return value and error
 code of the WaitForSingleObject call are captured as function arguments in
 the crash dumps.

R=eroman
BUG=6500
Review URL: http://codereview.chromium.org/18788

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8701 0039d316-1c4b-4281-b951-d872f2087c98
---
 net/base/tcp_client_socket_win.cc | 28 +++++++++++-----------------
 1 file changed, 11 insertions(+), 17 deletions(-)

(limited to 'net')

diff --git a/net/base/tcp_client_socket_win.cc b/net/base/tcp_client_socket_win.cc
index 8b15f38..4b42fd2 100644
--- a/net/base/tcp_client_socket_win.cc
+++ b/net/base/tcp_client_socket_win.cc
@@ -199,6 +199,15 @@ int TCPClientSocket::Read(char* buf,
   return MapWinsockError(err);
 }
 
+// TODO(wtc): This temporary function is intended to determine the return
+// value and error code of the WaitForSingleObject call in
+// TCPClientSocket::Write if it doesn't return the expected WAIT_OBJECT_0.
+// See http://crbug.com/6500.
+static void CrashBug6500(DWORD wait_rv, DWORD wait_error) {
+  // wait_error is meaningful only if wait_rv is WAIT_FAILED.
+  CHECK(false) << wait_rv << wait_error;
+}
+
 int TCPClientSocket::Write(const char* buf,
                            int buf_len,
                            CompletionCallback* callback) {
@@ -215,25 +224,10 @@ int TCPClientSocket::Write(const char* buf,
   DWORD num;
   int rv = WSASend(socket_, &buffer_, 1, &num, 0, &overlapped_, NULL);
   if (rv == 0) {
-    // TODO(wtc): These temporary CHECKs are intended to determine the return
-    // value and error code of the WaitForSingleObject call if it doesn't
-    // return the expected WAIT_OBJECT_0.  See http://crbug.com/6500.
     DWORD wait_rv = WaitForSingleObject(overlapped_.hEvent, 0);
     if (wait_rv != WAIT_OBJECT_0) {
-      if (wait_rv == WAIT_ABANDONED) {
-        CHECK(false);
-      } else if (wait_rv == WAIT_TIMEOUT) {
-        CHECK(false);
-      } else if (wait_rv == WAIT_FAILED) {
-        DWORD wait_error = GetLastError();
-        if (wait_error == ERROR_INVALID_HANDLE) {
-          CHECK(false);
-        } else {
-          CHECK(false);
-        }
-      } else {
-        CHECK(false);
-      }
+      DWORD wait_error = GetLastError();
+      CrashBug6500(wait_rv, wait_error);
     }
     BOOL ok = WSAResetEvent(overlapped_.hEvent);
     CHECK(ok);
-- 
cgit v1.1