]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4519. [port] win32: handle ERROR_MORE_DATA. [RT #43534]
authorMark Andrews <marka@isc.org>
Tue, 29 Nov 2016 00:28:26 +0000 (11:28 +1100)
committerMark Andrews <marka@isc.org>
Thu, 8 Dec 2016 06:20:06 +0000 (17:20 +1100)
(cherry picked from commit a611e44f9a7d598bbbffe73f59e592739ddfeeaa)

CHANGES
lib/isc/win32/socket.c

diff --git a/CHANGES b/CHANGES
index b95624af09d46f286873bb56f7e6cecc61394ed1..7505e7bf6c513a12a05226653191499f43c4c5d3 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,8 @@
 4528.  [bug]           Only set the flag bits for the i/o we are waiting
                        for on EPOLLERR or EPOLLHUP. [RT #43617]
 
+4519.  [port]          win32: handle ERROR_MORE_DATA. [RT #43534]
+
 4517.  [security]      Named could mishandle authority sections that were
                        missing RRSIGs triggering an assertion failure.
                        (CVE-2016-9444) [RT # 43632]
index 1bf9bfe689c9f064b3c867385229864c8edd0c1c..2d250437325ce98df42cfa8b6c4cab0781728327 100644 (file)
@@ -2514,14 +2514,16 @@ SocketIoThread(LPVOID ThreadContext) {
 
                request = lpo->request_type;
 
-               errstatus = 0;
-               if (!bSuccess) {
+               if (!bSuccess)
+                       errstatus = GetLastError();
+               else
+                       errstatus = 0;
+               if (!bSuccess && errstatus != ERROR_MORE_DATA) {
                        isc_result_t isc_result;
 
                        /*
                         * Did the I/O operation complete?
                         */
-                       errstatus = GetLastError();
                        isc_result = isc__errno2result(errstatus);
 
                        LOCK(&sock->lock);