aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/tls.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2011-11-10 17:35:39 +0200
committerMartin Storsjö <martin@martin.st>2015-05-22 00:05:01 +0300
commitd13b124eaf452b267480074b2e6946538ed03a6e (patch)
treeefc0ecbef743b67aee5e63a0b08d9c24c7e5fe70 /libavformat/tls.c
parentd15eec4d6bdfa3bd4c4b5b7dd2dbd699ba253d02 (diff)
downloadffmpeg-d13b124eaf452b267480074b2e6946538ed03a6e.tar.gz
tls: Remove the nonblocking code
Since the underlying URLContext read functions are used, they handle interruption, without having to handle it at this level. Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/tls.c')
-rw-r--r--libavformat/tls.c35
1 files changed, 11 insertions, 24 deletions
diff --git a/libavformat/tls.c b/libavformat/tls.c
index 42a1e303a6..053a5c0c5b 100644
--- a/libavformat/tls.c
+++ b/libavformat/tls.c
@@ -44,10 +44,9 @@ static ssize_t gnutls_url_pull(gnutls_transport_ptr_t transport,
int ret = ffurl_read(h, buf, len);
if (ret >= 0)
return ret;
- if (ret == AVERROR(EAGAIN))
- errno = EAGAIN;
- else
- errno = EIO;
+ if (ret == AVERROR_EXIT)
+ return 0;
+ errno = EIO;
return -1;
}
static ssize_t gnutls_url_push(gnutls_transport_ptr_t transport,
@@ -57,10 +56,9 @@ static ssize_t gnutls_url_push(gnutls_transport_ptr_t transport,
int ret = ffurl_write(h, buf, len);
if (ret >= 0)
return ret;
- if (ret == AVERROR(EAGAIN))
- errno = EAGAIN;
- else
- errno = EIO;
+ if (ret == AVERROR_EXIT)
+ return 0;
+ errno = EIO;
return -1;
}
#elif CONFIG_OPENSSL
@@ -97,8 +95,8 @@ static int url_bio_bread(BIO *b, char *buf, int len)
if (ret >= 0)
return ret;
BIO_clear_retry_flags(b);
- if (ret == AVERROR(EAGAIN))
- BIO_set_retry_read(b);
+ if (ret == AVERROR_EXIT)
+ return 0;
return -1;
}
@@ -109,8 +107,8 @@ static int url_bio_bwrite(BIO *b, const char *buf, int len)
if (ret >= 0)
return ret;
BIO_clear_retry_flags(b);
- if (ret == AVERROR(EAGAIN))
- BIO_set_retry_write(b);
+ if (ret == AVERROR_EXIT)
+ return 0;
return -1;
}
@@ -216,16 +214,7 @@ static int do_tls_poll(URLContext *h, int ret)
return AVERROR(EIO);
}
#endif
- if (h->flags & AVIO_FLAG_NONBLOCK)
- return AVERROR(EAGAIN);
- while (1) {
- int n = poll(&p, 1, 100);
- if (n > 0)
- break;
- if (ff_check_interrupt(&h->interrupt_callback))
- return AVERROR(EINTR);
- }
- return 0;
+ return AVERROR(EIO);
}
static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **options)
@@ -314,7 +303,6 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
}
}
gnutls_credentials_set(c->session, GNUTLS_CRD_CERTIFICATE, c->cred);
- c->tcp->flags |= AVIO_FLAG_NONBLOCK;
gnutls_transport_set_pull_function(c->session, gnutls_url_pull);
gnutls_transport_set_push_function(c->session, gnutls_url_push);
gnutls_transport_set_ptr(c->session, c->tcp);
@@ -390,7 +378,6 @@ static int tls_open(URLContext *h, const char *uri, int flags, AVDictionary **op
goto fail;
}
bio = BIO_new(&url_bio_method);
- c->tcp->flags |= AVIO_FLAG_NONBLOCK;
bio->ptr = c->tcp;
SSL_set_bio(c->ssl, bio, bio);
if (!c->listen && !numerichost)