]> 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:19:14 +0000 (17:19 +1100)
(cherry picked from commit a611e44f9a7d598bbbffe73f59e592739ddfeeaa)

CHANGES
lib/isc/win32/socket.c

diff --git a/CHANGES b/CHANGES
index 9cf84edd88db5b3a7d08ed303ffccfebf9d9abc1..4b89cb4d462cec7559488f47834205e03a23f20c 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 9283daea93ed08b43fc3537dd164df1a430599ef..57f1fe069bb4aaea1d1ccb47f7660c7818bb9cf4 100644 (file)
@@ -2488,15 +2488,18 @@ 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__errno2resultx(errstatus, __FILE__, __LINE__);
+                       isc_result = isc__errno2resultx(errstatus,
+                                                       __FILE__, __LINE__);
 
                        LOCK(&sock->lock);
                        CONSISTENT(sock);