|
|
@@ -784,9 +784,9 @@ static int udp_read(URLContext *h, uint8_t *buf, int size) |
|
|
|
{ |
|
|
|
UDPContext *s = h->priv_data; |
|
|
|
int ret; |
|
|
|
#if HAVE_PTHREAD_CANCEL |
|
|
|
int avail, nonblock = h->flags & AVIO_FLAG_NONBLOCK; |
|
|
|
|
|
|
|
#if HAVE_PTHREAD_CANCEL |
|
|
|
if (s->fifo) { |
|
|
|
pthread_mutex_lock(&s->mutex); |
|
|
|
do { |
|
|
@@ -863,13 +863,13 @@ static int udp_write(URLContext *h, const uint8_t *buf, int size) |
|
|
|
static int udp_close(URLContext *h) |
|
|
|
{ |
|
|
|
UDPContext *s = h->priv_data; |
|
|
|
int ret; |
|
|
|
|
|
|
|
if (s->is_multicast && (h->flags & AVIO_FLAG_READ)) |
|
|
|
udp_leave_multicast_group(s->udp_fd, (struct sockaddr *)&s->dest_addr,(struct sockaddr *)&s->local_addr_storage); |
|
|
|
closesocket(s->udp_fd); |
|
|
|
#if HAVE_PTHREAD_CANCEL |
|
|
|
if (s->thread_started) { |
|
|
|
int ret; |
|
|
|
pthread_cancel(s->circular_buffer_thread); |
|
|
|
ret = pthread_join(s->circular_buffer_thread, NULL); |
|
|
|
if (ret != 0) |
|
|
|