[SCHANNEL]
authorThomas Faber <thomas.faber@reactos.org>
Sun, 22 May 2016 10:53:23 +0000 (10:53 +0000)
committerThomas Faber <thomas.faber@reactos.org>
Sun, 22 May 2016 10:53:23 +0000 (10:53 +0000)
- Correctly check for ROS_SCHAN_IS_BLOCKING
CORE-11285

svn path=/trunk/; revision=71372

reactos/dll/win32/schannel/schannel_mbedtls.c

index 90f0c79..86ae387 100644 (file)
@@ -46,9 +46,9 @@
 #include <mbedtls/md_internal.h>
 #include <mbedtls/ssl_internal.h>
 
-#define ROS_SCHAN_IS_BLOCKING (0xCCCFFFFF & 0xFFF00000)
-#define ROS_SCHAN_IS_BLOCKING_MARSHALL(read_len) (ROS_SCHAN_IS_BLOCKING | (read_len & 0x000FFFFF))
-#define ROS_SCHAN_IS_BLOCKING_RETRIEVE(read_len)                          (read_len & 0x000FFFFF)
+#define ROS_SCHAN_IS_BLOCKING(read_len)          ((read_len & 0xFFF00000) == 0xCCC00000)
+#define ROS_SCHAN_IS_BLOCKING_MARSHALL(read_len) ((read_len & 0x000FFFFF) |  0xCCC00000)
+#define ROS_SCHAN_IS_BLOCKING_RETRIEVE(read_len)  (read_len & 0x000FFFFF)
 
 #ifndef __REACTOS__
  /* WINE defines the back-end glue in here */
@@ -281,7 +281,7 @@ SECURITY_STATUS schan_imp_handshake(schan_imp_session session)
 
     TRACE("MBEDTLS schan_imp_handshake: %p  err: %#x \n", session, err);
 
-    if ((err & ROS_SCHAN_IS_BLOCKING) == ROS_SCHAN_IS_BLOCKING)
+    if (ROS_SCHAN_IS_BLOCKING(err))
     {
         TRACE("Received ERR_NET_WANT_READ/WRITE... let's try again!\n");
         return SEC_I_CONTINUE_NEEDED;
@@ -623,7 +623,7 @@ SECURITY_STATUS schan_imp_send(schan_imp_session session, const void *buffer,
 
         *length = ret;
     }
-    else if ((ret & ROS_SCHAN_IS_BLOCKING) == ROS_SCHAN_IS_BLOCKING)
+    else if (ROS_SCHAN_IS_BLOCKING(ret))
     {
         *length = ROS_SCHAN_IS_BLOCKING_RETRIEVE(ret);
 
@@ -665,7 +665,7 @@ SECURITY_STATUS schan_imp_recv(schan_imp_session session, void *buffer,
 
         *length = ret;
     }
-    else if ((ret & ROS_SCHAN_IS_BLOCKING) == ROS_SCHAN_IS_BLOCKING)
+    else if (ROS_SCHAN_IS_BLOCKING(ret))
     {
         *length = ROS_SCHAN_IS_BLOCKING_RETRIEVE(ret);