|
@@ -5418,14 +5418,14 @@ mg_poll(struct pollfd *pfd,
|
|
|
int milliseconds,
|
|
|
volatile int *stop_server)
|
|
|
{
|
|
|
- int ms_now, result;
|
|
|
-
|
|
|
/* Call poll, but only for a maximum time of a few seconds.
|
|
|
* This will allow to stop the server after some seconds, instead
|
|
|
* of having to wait for a long socket timeout. */
|
|
|
- ms_now = SOCKET_TIMEOUT_QUANTUM; /* Sleep quantum in ms */
|
|
|
+ int ms_now = SOCKET_TIMEOUT_QUANTUM; /* Sleep quantum in ms */
|
|
|
|
|
|
do {
|
|
|
+ int result;
|
|
|
+
|
|
|
if (*stop_server) {
|
|
|
/* Shut down signal */
|
|
|
return -2;
|
|
@@ -5449,7 +5449,8 @@ mg_poll(struct pollfd *pfd,
|
|
|
|
|
|
} while (milliseconds != 0);
|
|
|
|
|
|
- return result;
|
|
|
+ /* timeout: return 0 */
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -5701,6 +5702,10 @@ pull_inner(FILE *fp,
|
|
|
nread = (int)fread(buf, 1, (size_t)len, fp);
|
|
|
#endif
|
|
|
err = (nread < 0) ? ERRNO : 0;
|
|
|
+ if ((nread == 0) && (len > 0)) {
|
|
|
+ /* Should get data, but got EOL */
|
|
|
+ return -2;
|
|
|
+ }
|
|
|
|
|
|
#ifndef NO_SSL
|
|
|
} else if ((conn->ssl != NULL)
|