mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-06-16 04:32:47 +02:00
avformat/tls_{openssl,gnutls,mbedtls}: gate DTLS udp helpers on CONFIG_UDP_PROTOCOL
ff_udp_get_last_recv_addr and ff_udp_set_remote_addr are defined in udp.c which only compiles under CONFIG_UDP_PROTOCOL. Building with --disable-everything plus a protocol whitelist that excludes UDP left these references unresolved at link time, even though TLS itself uses TCP. Wrap the DTLS UDP-remote-addr blocks accordingly
This commit is contained in:
@@ -438,6 +438,7 @@ static ssize_t gnutls_url_pull(gnutls_transport_ptr_t transport,
|
||||
URLContext *uc = s->is_dtls ? s->udp : s->tcp;
|
||||
int ret = ffurl_read(uc, buf, len);
|
||||
if (ret >= 0) {
|
||||
#if CONFIG_UDP_PROTOCOL
|
||||
if (s->is_dtls && s->listen && !c->dest_addr_len) {
|
||||
int err_ret;
|
||||
|
||||
@@ -449,6 +450,7 @@ static ssize_t gnutls_url_pull(gnutls_transport_ptr_t transport,
|
||||
}
|
||||
av_log(c, AV_LOG_TRACE, "Set UDP remote addr on UDP socket, now 'connected'\n");
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
if (ret == AVERROR_EXIT)
|
||||
|
||||
@@ -383,6 +383,7 @@ static int mbedtls_recv(void *ctx, unsigned char *buf, size_t len)
|
||||
URLContext *h = shr->is_dtls ? shr->udp : shr->tcp;
|
||||
int ret = ffurl_read(h, buf, len);
|
||||
if (ret >= 0) {
|
||||
#if CONFIG_UDP_PROTOCOL
|
||||
if (shr->is_dtls && shr->listen && !tls_ctx->dest_addr_len) {
|
||||
int err_ret;
|
||||
|
||||
@@ -394,6 +395,7 @@ static int mbedtls_recv(void *ctx, unsigned char *buf, size_t len)
|
||||
}
|
||||
av_log(tls_ctx, AV_LOG_TRACE, "Set UDP remote addr on UDP socket, now 'connected'\n");
|
||||
}
|
||||
#endif
|
||||
/* Skip non-DTLS packets such as STUN to avoid failures. */
|
||||
if (shr->is_dtls && !ff_is_dtls_packet(buf, ret))
|
||||
return MBEDTLS_ERR_SSL_WANT_READ;
|
||||
|
||||
@@ -536,6 +536,7 @@ static int url_bio_bread(BIO *b, char *buf, int len)
|
||||
TLSShared *s = &c->tls_shared;
|
||||
int ret = ffurl_read(c->tls_shared.is_dtls ? c->tls_shared.udp : c->tls_shared.tcp, buf, len);
|
||||
if (ret >= 0) {
|
||||
#if CONFIG_UDP_PROTOCOL
|
||||
if (s->is_dtls && s->listen && !c->dest_addr_len) {
|
||||
int err_ret;
|
||||
|
||||
@@ -547,6 +548,7 @@ static int url_bio_bread(BIO *b, char *buf, int len)
|
||||
}
|
||||
av_log(c, AV_LOG_TRACE, "Set UDP remote addr on UDP socket, now 'connected'\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user