From: Rick Macklem <rmack...@freebsd.org>

Without this patch, the MSG_TLSAPPDATA flag would cause
soreceive_generic() to return ENXIO for any non-application
data record in a TLS receive stream.

This works ok for TLS1.2, since Alert records appear to be
the only non-application data records received.
However, for TLS1.3, there can be post-handshake handshake
records, such as NewSessionKey sent to the client from the
server. These handshake records cannot be handled by the
upcall which does an SSL_read() with length == 0.

It appears that the client can simply throw away these
NewSessionKey records, but to do so, it needs to receive
them within the kernel.

This patch modifies the semantics of MSG_TLSAPPDATA slightly,
so that it only applies to Alert records and not Handshake
records. It is needed to allow the krpc to work with KTLS1.3.

Reviewed by:    hselasky
MFC after:      2 weeks
Differential Revision:  https://reviews.freebsd.org/D35170
---
 rtemsbsd/include/machine/_kernel_socket.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/rtemsbsd/include/machine/_kernel_socket.h 
b/rtemsbsd/include/machine/_kernel_socket.h
index dba4694f..3acee460 100644
--- a/rtemsbsd/include/machine/_kernel_socket.h
+++ b/rtemsbsd/include/machine/_kernel_socket.h
@@ -46,7 +46,7 @@
 #define        MSG_SOCALLBCK    0x00010000     /* for use by socket callbacks 
- soreceive (TCP) */
 
 #define        MSG_MORETOCOME   0x00100000     /* additional data pending */
-#define        MSG_TLSAPPDATA   0x00200000     /* only soreceive() app. data 
(TLS) */
+#define        MSG_TLSAPPDATA   0x00200000     /* do not soreceive() alert 
rec. (TLS) */
 
 #define        CMSG_ALIGN(n)   _ALIGN(n)
 
-- 
2.35.3

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to