1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- From 9cc3ad4781392ff526b4ba5e25c6fd287a219303 Mon Sep 17 00:00:00 2001
- From: Gleb Pinigin <gpinigin@gmail.com>
- Date: Sun, 28 Jul 2013 18:32:51 +0700
- Subject: [PATCH 09/15] io: implement network timeout(default 60s)
- ---
- src/network/io.c | 15 ++++++++++++++-
- 1 file changed, 14 insertions(+), 1 deletion(-)
- diff --git a/src/network/io.c b/src/network/io.c
- index dc5ef12..effaf15 100644
- --- a/src/network/io.c
- +++ b/src/network/io.c
- @@ -33,6 +33,7 @@
- #endif
-
- #include <vlc_common.h>
- +#include <vlc_access.h>
-
- #include <stdlib.h>
- #include <stdio.h>
- @@ -73,6 +74,9 @@
- # define SOL_DCCP 269
- #endif
-
- +#define MAX_TIMEOUT 60000
- +#define POLL_TIMEOUT 10000
- +
- #include "libvlc.h" /* vlc_object_waitpipe */
-
- extern int rootwrap_bind (int family, int socktype, int protocol,
- @@ -267,6 +271,7 @@ net_Read (vlc_object_t *restrict p_this, int fd, const v_socket_t *vs,
- ufd[1].fd = vlc_object_waitpipe (p_this);
- ufd[1].events = POLLIN;
-
- + int i_timepassed = 0;
- size_t i_total = 0;
- do
- {
- @@ -288,6 +293,13 @@ net_Read (vlc_object_t *restrict p_this, int fd, const v_socket_t *vs,
-
- if (n < 0)
- {
- + if (i_timepassed >= MAX_TIMEOUT && i_total == 0)
- + {
- + access_t *p_access = (access_t *)p_this;
- + p_access->info.b_eof = true;
- + goto error;
- + }
- +
- switch (net_errno)
- {
- case EAGAIN: /* no data */
- @@ -326,8 +338,9 @@ net_Read (vlc_object_t *restrict p_this, int fd, const v_socket_t *vs,
- return -1;
- }
-
- + i_timepassed += POLL_TIMEOUT;
- /* Wait for more data */
- - if (poll (ufd, sizeof (ufd) / sizeof (ufd[0]), -1) < 0)
- + if (poll (ufd, sizeof (ufd) / sizeof (ufd[0]), POLL_TIMEOUT) < 0)
- {
- if (errno == EINTR)
- continue;
- --
- 1.8.3.4 (Apple Git-47)
|