[PATCH v2 4/5] secur32: Switch back to non-blocking mode for DTLS sessions.
Hans Leidekker
hans at codeweavers.com
Thu Jan 27 04:11:29 CST 2022
From: Connor McAdams <cmcadams at codeweavers.com>
In order for DTLS retransmission to occur properly, we need to be in
non-blocking mode.
Signed-off-by: Connor McAdams <cmcadams at codeweavers.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
dlls/secur32/schannel_gnutls.c | 7 +++----
dlls/secur32/tests/schannel.c | 2 +-
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/dlls/secur32/schannel_gnutls.c b/dlls/secur32/schannel_gnutls.c
index ac51cbb5d9f..3f947870a73 100644
--- a/dlls/secur32/schannel_gnutls.c
+++ b/dlls/secur32/schannel_gnutls.c
@@ -461,14 +461,13 @@ static NTSTATUS schan_get_enabled_protocols( void *args )
static int pull_timeout(gnutls_transport_ptr_t transport, unsigned int timeout)
{
struct schan_transport *t = (struct schan_transport*)transport;
- gnutls_session_t s = (gnutls_session_t)t->session;
SIZE_T count = 0;
TRACE("\n");
if (get_buffer(t, &t->in, &count)) return 1;
- pgnutls_transport_set_errno(s, EAGAIN);
- return -1;
+
+ return 0;
}
static NTSTATUS schan_create_session( void *args )
@@ -483,7 +482,7 @@ static NTSTATUS schan_create_session( void *args )
if (cred->enabled_protocols & (SP_PROT_DTLS1_0_CLIENT | SP_PROT_DTLS1_2_CLIENT))
{
- flags |= GNUTLS_DATAGRAM;
+ flags |= GNUTLS_DATAGRAM | GNUTLS_NONBLOCK;
}
err = pgnutls_init(s, flags);
diff --git a/dlls/secur32/tests/schannel.c b/dlls/secur32/tests/schannel.c
index afcc382927a..902a490a296 100644
--- a/dlls/secur32/tests/schannel.c
+++ b/dlls/secur32/tests/schannel.c
@@ -1706,7 +1706,7 @@ static void test_dtls(void)
ok( ctx_handle.dwUpper == ctx_handle2.dwUpper, "dwUpper mismatch, expected %#lx, got %#lx\n", ctx_handle.dwUpper, ctx_handle2.dwUpper);
/* With no new input buffer, output buffer length should match prior call. */
- todo_wine ok(buffers[1].pBuffers[0].cbBuffer == prev_buf_len, "Output buffer size mismatch, expected %#x, got %#x\n",
+ ok(buffers[1].pBuffers[0].cbBuffer == prev_buf_len, "Output buffer size mismatch, expected %#x, got %#x\n",
prev_buf_len, buffers[1].pBuffers[0].cbBuffer);
free_buffers( &buffers[0] );
--
2.30.2
More information about the wine-devel
mailing list