Signed-off-by: Jack Lau <jacklau1...@qq.com> --- libavformat/tls_openssl.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/libavformat/tls_openssl.c b/libavformat/tls_openssl.c index 1c4d114205..344b152902 100644 --- a/libavformat/tls_openssl.c +++ b/libavformat/tls_openssl.c @@ -465,6 +465,8 @@ typedef struct TLSContext { BIO_METHOD* url_bio_method; int io_err; char error_message[256]; + struct sockaddr_storage dest_addr; + socklen_t dest_addr_len; } TLSContext; /** @@ -582,8 +584,19 @@ static int url_bio_destroy(BIO *b) static int url_bio_bread(BIO *b, char *buf, int len) { TLSContext *c = BIO_get_data(b); + 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 (!s->external_sock && s->is_dtls && s->listen && !c->dest_addr_len && !c->dest_addr.ss_family) { + int r1; + ff_udp_get_last_recv_addr(s->udp, &c->dest_addr, &c->dest_addr_len); + r1 = ff_udp_set_remote_addr(s->udp, (struct sockaddr*)&c->dest_addr, c->dest_addr_len, 1); + if (r1 < 0) { + av_log(c, AV_LOG_ERROR, "Failed to set remote addr\n"); + return r1; + } + av_log(c, AV_LOG_DEBUG, "Set UDP remote addr successfully\n"); + } openssl_state_trace((uint8_t*)buf, ret, 1); return ret; } -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".