The unified diff between revisions [750f4172..] and [b9ef2977..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'src/forward.c'
#
#
# patch "src/forward.c"
# from [0cd445517e0ef996cf13bf0240590d59f635a1ac]
# to [254eaea3ca5b17eca842698617ef8c65ce15a8bf]
#
============================================================
--- src/forward.c 0cd445517e0ef996cf13bf0240590d59f635a1ac
+++ src/forward.c 254eaea3ca5b17eca842698617ef8c65ce15a8bf
@@ -742,8 +742,10 @@ fwdCheckDeferRead(int fd, void *data)
int i = delayMostBytesWanted(mem, INT_MAX);
if (0 == i) {
#if HAVE_EPOLL
- mem->serverfd=fd;
- commDeferFD(fd);
+ if (fd >= 0) {
+ mem->serverfd=fd;
+ commDeferFD(fd);
+ }
#endif
return 1;
}
@@ -764,16 +766,16 @@ fwdCheckDeferRead(int fd, void *data)
* is disk clients pending on a too large object being fetched and a
* few other corner cases.
*/
- if (mem->inmem_hi - mem->inmem_lo > SM_PAGE_SIZE + Config.Store.maxInMemObjSize + READ_AHEAD_GAP) {
+ if (fd >= 0 && mem->inmem_hi - mem->inmem_lo > SM_PAGE_SIZE + Config.Store.maxInMemObjSize + READ_AHEAD_GAP) {
+#if HAVE_EPOLL
EBIT_SET(e->flags, ENTRY_DEFER_READ);
-#if HAVE_EPOLL
mem->serverfd=fd;
commDeferFD(fd);
#endif
return 1;
}
}
- if (mem->inmem_hi - storeLowestMemReaderOffset(e) > READ_AHEAD_GAP) {
+ if (fd >= 0 && mem->inmem_hi - storeLowestMemReaderOffset(e) > READ_AHEAD_GAP) {
EBIT_SET(e->flags, ENTRY_DEFER_READ);
#if HAVE_EPOLL
mem->serverfd=fd;