aboutsummaryrefslogtreecommitdiffhomepage
path: root/subprojects/packagefiles/ffmpeg-mbedtls-skip-non-dtls-packets.patch
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/packagefiles/ffmpeg-mbedtls-skip-non-dtls-packets.patch')
-rw-r--r--subprojects/packagefiles/ffmpeg-mbedtls-skip-non-dtls-packets.patch48
1 files changed, 0 insertions, 48 deletions
diff --git a/subprojects/packagefiles/ffmpeg-mbedtls-skip-non-dtls-packets.patch b/subprojects/packagefiles/ffmpeg-mbedtls-skip-non-dtls-packets.patch
deleted file mode 100644
index 4f18644..0000000
--- a/subprojects/packagefiles/ffmpeg-mbedtls-skip-non-dtls-packets.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- a/libavformat/tls_mbedtls.c
-+++ b/libavformat/tls_mbedtls.c
-@@ -41,6 +41,7 @@
- #include "libavutil/parseutils.h"
- #include "libavutil/avstring.h"
- #include "libavutil/random_seed.h"
-+#include "libavutil/intreadwrite.h"
-
- static int mbedtls_x509_fingerprint(char *cert_buf, size_t cert_sz, char **fingerprint)
- {
-@@ -376,6 +377,27 @@
- return handle_transport_error(h, "ffurl_write", MBEDTLS_ERR_SSL_WANT_WRITE, ret);
- }
-
-+/*
-+ * Some webrtc servers, such as the ones based on pion, send stun packets during the
-+ * dtls handshake. openssl and gnutls filter those out internally but mbedtls passes
-+ * every received udp packet to its dtls state machine, which makes the handshake fail.
-+ * This is the same check as the one in whip.c, which ffmpeg n8.1 doesn't share yet.
-+ */
-+#define DTLS_CONTENT_TYPE_CHANGE_CIPHER_SPEC 20
-+#define DTLS_RECORD_LAYER_HEADER_LEN 13
-+#define DTLS_VERSION_10 0xfeff
-+#define DTLS_VERSION_12 0xfefd
-+
-+static int is_dtls_packet(const unsigned char *buf, int size)
-+{
-+ if (size > DTLS_RECORD_LAYER_HEADER_LEN) {
-+ uint16_t version = AV_RB16(&buf[1]);
-+ return buf[0] >= DTLS_CONTENT_TYPE_CHANGE_CIPHER_SPEC &&
-+ (version == DTLS_VERSION_10 || version == DTLS_VERSION_12);
-+ }
-+ return 0;
-+}
-+
- static int mbedtls_recv(void *ctx, unsigned char *buf, size_t len)
- {
- TLSContext *tls_ctx = (TLSContext*) ctx;
-@@ -394,6 +416,9 @@
- }
- av_log(tls_ctx, AV_LOG_TRACE, "Set UDP remote addr on UDP socket, now 'connected'\n");
- }
-+ /* Skip non-DTLS packets such as STUN to avoid failures. */
-+ if (shr->is_dtls && !is_dtls_packet(buf, ret))
-+ return MBEDTLS_ERR_SSL_WANT_READ;
- return ret;
- }
- if (h->max_packet_size && len > h->max_packet_size)