| 
																	
																	
																		
																	
																	
																 | 
																@@ -61,6 +61,7 @@ static int print_tls_error(URLContext *h, int ret) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    switch (ret) { | 
																 | 
																 | 
																    switch (ret) { | 
															
														
														
													
														
															
																 | 
																 | 
																    case GNUTLS_E_AGAIN: | 
																 | 
																 | 
																    case GNUTLS_E_AGAIN: | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        return AVERROR(EAGAIN); | 
															
														
														
													
														
															
																 | 
																 | 
																    case GNUTLS_E_INTERRUPTED: | 
																 | 
																 | 
																    case GNUTLS_E_INTERRUPTED: | 
															
														
														
													
														
															
																 | 
																 | 
																        break; | 
																 | 
																 | 
																        break; | 
															
														
														
													
														
															
																 | 
																 | 
																    case GNUTLS_E_WARNING_ALERT_RECEIVED: | 
																 | 
																 | 
																    case GNUTLS_E_WARNING_ALERT_RECEIVED: | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -97,7 +98,10 @@ static ssize_t gnutls_url_pull(gnutls_transport_ptr_t transport, | 
															
														
														
													
														
															
																 | 
																 | 
																        return ret; | 
																 | 
																 | 
																        return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																    if (ret == AVERROR_EXIT) | 
																 | 
																 | 
																    if (ret == AVERROR_EXIT) | 
															
														
														
													
														
															
																 | 
																 | 
																        return 0; | 
																 | 
																 | 
																        return 0; | 
															
														
														
													
														
															
																 | 
																 | 
																    errno = EIO; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (ret == AVERROR(EAGAIN)) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        errno = EAGAIN; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    else | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        errno = EIO; | 
															
														
														
													
														
															
																 | 
																 | 
																    return -1; | 
																 | 
																 | 
																    return -1; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -110,7 +114,10 @@ static ssize_t gnutls_url_push(gnutls_transport_ptr_t transport, | 
															
														
														
													
														
															
																 | 
																 | 
																        return ret; | 
																 | 
																 | 
																        return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																    if (ret == AVERROR_EXIT) | 
																 | 
																 | 
																    if (ret == AVERROR_EXIT) | 
															
														
														
													
														
															
																 | 
																 | 
																        return 0; | 
																 | 
																 | 
																        return 0; | 
															
														
														
													
														
															
																 | 
																 | 
																    errno = EIO; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (ret == AVERROR(EAGAIN)) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        errno = EAGAIN; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    else | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        errno = EIO; | 
															
														
														
													
														
															
																 | 
																 | 
																    return -1; | 
																 | 
																 | 
																    return -1; | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -202,7 +209,11 @@ fail: | 
															
														
														
													
														
															
																 | 
																 | 
																static int tls_read(URLContext *h, uint8_t *buf, int size) | 
																 | 
																 | 
																static int tls_read(URLContext *h, uint8_t *buf, int size) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    TLSContext *c = h->priv_data; | 
																 | 
																 | 
																    TLSContext *c = h->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																    int ret = gnutls_record_recv(c->session, buf, size); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int ret; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // Set or clear the AVIO_FLAG_NONBLOCK on c->tls_shared.tcp | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    c->tls_shared.tcp->flags &= ~AVIO_FLAG_NONBLOCK; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    c->tls_shared.tcp->flags |= h->flags & AVIO_FLAG_NONBLOCK; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    ret = gnutls_record_recv(c->session, buf, size); | 
															
														
														
													
														
															
																 | 
																 | 
																    if (ret > 0) | 
																 | 
																 | 
																    if (ret > 0) | 
															
														
														
													
														
															
																 | 
																 | 
																        return ret; | 
																 | 
																 | 
																        return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																    if (ret == 0) | 
																 | 
																 | 
																    if (ret == 0) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -213,7 +224,11 @@ static int tls_read(URLContext *h, uint8_t *buf, int size) | 
															
														
														
													
														
															
																 | 
																 | 
																static int tls_write(URLContext *h, const uint8_t *buf, int size) | 
																 | 
																 | 
																static int tls_write(URLContext *h, const uint8_t *buf, int size) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    TLSContext *c = h->priv_data; | 
																 | 
																 | 
																    TLSContext *c = h->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																    int ret = gnutls_record_send(c->session, buf, size); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int ret; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    // Set or clear the AVIO_FLAG_NONBLOCK on c->tls_shared.tcp | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    c->tls_shared.tcp->flags &= ~AVIO_FLAG_NONBLOCK; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    c->tls_shared.tcp->flags |= h->flags & AVIO_FLAG_NONBLOCK; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    ret = gnutls_record_send(c->session, buf, size); | 
															
														
														
													
														
															
																 | 
																 | 
																    if (ret > 0) | 
																 | 
																 | 
																    if (ret > 0) | 
															
														
														
													
														
															
																 | 
																 | 
																        return ret; | 
																 | 
																 | 
																        return ret; | 
															
														
														
													
														
															
																 | 
																 | 
																    if (ret == 0) | 
																 | 
																 | 
																    if (ret == 0) | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |