[FFmpeg-devel] lavf/tls_gnutls: check for interrupt inside handshake loop

Submitted by Błażej Szczygieł on Aug. 16, 2019, 8:38 a.m.

Details

Message ID 20190816083845.2269-1-spaz16@wp.pl
State New
Headers show

Commit Message

Błażej Szczygieł Aug. 16, 2019, 8:38 a.m.
fixes #8080

Signed-off-by: Błażej Szczygieł <spaz16@wp.pl>
---
 libavformat/tls_gnutls.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Błażej Szczygieł Sept. 4, 2019, 6:36 p.m.
> fixes #8080
> 
> Signed-off-by: Błażej Szczygieł <spaz16@wp.pl>
> ---
>   libavformat/tls_gnutls.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/libavformat/tls_gnutls.c b/libavformat/tls_gnutls.c
> index f32bc2821b..f507b7d044 100644
> --- a/libavformat/tls_gnutls.c
> +++ b/libavformat/tls_gnutls.c
> @@ -184,6 +184,10 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
>       gnutls_priority_set_direct(p->session, "NORMAL", NULL);
>       do {
>           ret = gnutls_handshake(p->session);
> +        if (ff_check_interrupt(&h->interrupt_callback)) {
> +            ret = AVERROR_EXIT;
> +            goto fail;
> +        }
>           if (gnutls_error_is_fatal(ret)) {
>               ret = print_tls_error(h, ret);
>               goto fail;
> 

Ping?
This causes QMPlay2 unstable in some cases: 
https://github.com/zaps166/QMPlay2/issues/239
Michael Niedermayer Sept. 5, 2019, 3:01 p.m.
On Fri, Aug 16, 2019 at 10:38:46AM +0200, Błażej Szczygieł wrote:
> fixes #8080
> 
> Signed-off-by: Błażej Szczygieł <spaz16@wp.pl>
> ---
>  libavformat/tls_gnutls.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/libavformat/tls_gnutls.c b/libavformat/tls_gnutls.c
> index f32bc2821b..f507b7d044 100644
> --- a/libavformat/tls_gnutls.c
> +++ b/libavformat/tls_gnutls.c
> @@ -184,6 +184,10 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
>      gnutls_priority_set_direct(p->session, "NORMAL", NULL);
>      do {
>          ret = gnutls_handshake(p->session);
> +        if (ff_check_interrupt(&h->interrupt_callback)) {
> +            ret = AVERROR_EXIT;
> +            goto fail;
> +        }
>          if (gnutls_error_is_fatal(ret)) {
>              ret = print_tls_error(h, ret);
>              goto fail;

probably ok

Thanks

[...]

Patch hide | download patch | download mbox

diff --git a/libavformat/tls_gnutls.c b/libavformat/tls_gnutls.c
index f32bc2821b..f507b7d044 100644
--- a/libavformat/tls_gnutls.c
+++ b/libavformat/tls_gnutls.c
@@ -184,6 +184,10 @@  static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
     gnutls_priority_set_direct(p->session, "NORMAL", NULL);
     do {
         ret = gnutls_handshake(p->session);
+        if (ff_check_interrupt(&h->interrupt_callback)) {
+            ret = AVERROR_EXIT;
+            goto fail;
+        }
         if (gnutls_error_is_fatal(ret)) {
             ret = print_tls_error(h, ret);
             goto fail;