diff options
Diffstat (limited to 'plugins/mms')
-rw-r--r-- | plugins/mms/libmms/mms.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/plugins/mms/libmms/mms.c b/plugins/mms/libmms/mms.c index 222a82b9..8ffccc79 100644 --- a/plugins/mms/libmms/mms.c +++ b/plugins/mms/libmms/mms.c @@ -159,7 +159,8 @@ static off_t fallback_io_read(void *data, int socket, char *buf, off_t num) off_t len = 0, ret; /* lprintf("%d\n", fallback_io_select(data, socket, MMS_IO_READ_READY, 1000)); */ errno = 0; - while (len < num) + int nretry = 5; + while (len < num && nretry > 0) { ret = (off_t)read(socket, buf + len, num - len); if(ret == 0) @@ -170,6 +171,7 @@ static off_t fallback_io_read(void *data, int socket, char *buf, off_t num) switch(errno) { case EAGAIN: + nretry--; continue; default: /* if already read something, return it, we will fail next time */ |