From: Hugo Landau Date: Mon, 1 Apr 2024 08:03:20 +0000 (+0100) Subject: BIO_s_connect: Do not set keepalive on dgram sockets X-Git-Tag: openssl-3.3.0~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bf2944a6a71a29e664083ad7bfc3d2a1664c2586;p=thirdparty%2Fopenssl.git BIO_s_connect: Do not set keepalive on dgram sockets Reviewed-by: Matt Caswell Reviewed-by: Neil Horman Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/24015) (cherry picked from commit 56736800224eff5783e314fd334c047224081c58) --- diff --git a/crypto/bio/bss_conn.c b/crypto/bio/bss_conn.c index fb3c4d2ba30..c7a19a55381 100644 --- a/crypto/bio/bss_conn.c +++ b/crypto/bio/bss_conn.c @@ -110,7 +110,7 @@ err: static int conn_state(BIO *b, BIO_CONNECT *c) { - int ret = -1, i; + int ret = -1, i, opts; BIO_info_cb *cb = NULL; if (c->info_callback != NULL) @@ -188,8 +188,12 @@ static int conn_state(BIO *b, BIO_CONNECT *c) case BIO_CONN_S_CONNECT: BIO_clear_retry_flags(b); ERR_set_mark(); - ret = BIO_connect(b->num, BIO_ADDRINFO_address(c->addr_iter), - BIO_SOCK_KEEPALIVE | c->connect_mode); + + opts = c->connect_mode; + if (BIO_ADDRINFO_socktype(c->addr_iter) == SOCK_STREAM) + opts |= BIO_SOCK_KEEPALIVE; + + ret = BIO_connect(b->num, BIO_ADDRINFO_address(c->addr_iter), opts); b->retry_reason = 0; if (ret == 0) { if (BIO_sock_should_retry(ret)) {