From 7ea13bf5bf4274cdab41a82705c26447593c2ffd Mon Sep 17 00:00:00 2001 From: Juliusz Sosinowicz Date: Fri, 1 Jul 2022 17:52:12 +0200 Subject: [PATCH] Apply connected to sendto and address code review --- src/wolfio.c | 6 +++--- wolfssl/internal.h | 4 ++-- wolfssl/ssl.h | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/wolfio.c b/src/wolfio.c index d7c68fdb1..b860f3d6f 100644 --- a/src/wolfio.c +++ b/src/wolfio.c @@ -407,7 +407,7 @@ int EmbedReceiveFrom(WOLFSSL *ssl, char *buf, int sz, void *ctx) else dtlsCtx->peer.bufSz = 0; } - peer = dtlsCtx->peer.sa; + peer = (SOCKADDR_S*)dtlsCtx->peer.sa; peerSz = dtlsCtx->peer.bufSz; } @@ -518,8 +518,8 @@ int EmbedSendTo(WOLFSSL* ssl, char *buf, int sz, void *ctx) WOLFSSL_ENTER("EmbedSendTo()"); sent = (int)DTLS_SENDTO_FUNCTION(sd, buf, sz, ssl->wflags, - (const SOCKADDR*)dtlsCtx->peer.sa, - dtlsCtx->peer.sz); + !dtlsCtx->connected ? (const SOCKADDR*)dtlsCtx->peer.sa : NULL, + !dtlsCtx->connected ? dtlsCtx->peer.sz : 0); sent = TranslateReturnCode(sent, sd); diff --git a/wolfssl/internal.h b/wolfssl/internal.h index 999f0e6a7..606dc9d4b 100644 --- a/wolfssl/internal.h +++ b/wolfssl/internal.h @@ -2219,7 +2219,7 @@ WOLFSSL_LOCAL int DoVerifyCallback(WOLFSSL_CERT_MANAGER* cm, WOLFSSL* ssl, /* wolfSSL Sock Addr */ struct WOLFSSL_SOCKADDR { unsigned int sz; /* sockaddr size */ - unsigned int bufSz; /* sockaddr size */ + unsigned int bufSz; /* size of allocated buffer */ void* sa; /* pointer to the sockaddr_in or sockaddr_in6 */ }; @@ -4481,7 +4481,7 @@ struct WOLFSSL { #ifdef WOLFSSL_STATIC_MEMORY WOLFSSL_HEAP_HINT heap_hint; #endif -#ifdef WOLFSSL_DTLS +#if defined(WOLFSSL_DTLS) && !defined(NO_WOLFSSL_SERVER) ClientHelloGoodCb chGoodCb; /* notify user we parsed a verified * ClientHello */ void* chGoodCtx; /* user ClientHello cb context */ diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 2915b1ef9..b35664d84 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -1045,7 +1045,9 @@ WOLFSSL_API int wolfSSL_CTX_set1_param(WOLFSSL_CTX* ctx, WOLFSSL_X509_VERIFY_PAR WOLFSSL_API int wolfSSL_is_server(WOLFSSL* ssl); WOLFSSL_API WOLFSSL* wolfSSL_write_dup(WOLFSSL* ssl); WOLFSSL_ABI WOLFSSL_API int wolfSSL_set_fd(WOLFSSL* ssl, int fd); +#ifdef WOLFSSL_DTLS WOLFSSL_API int wolfSSL_set_dtls_fd_connected(WOLFSSL* ssl, int fd); +#endif WOLFSSL_API int wolfSSL_set_write_fd (WOLFSSL* ssl, int fd); WOLFSSL_API int wolfSSL_set_read_fd (WOLFSSL* ssl, int fd); WOLFSSL_API char* wolfSSL_get_cipher_list(int priority);