Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d775e09cf | ||
|
|
6a89275a06 |
@@ -2320,6 +2320,11 @@ fcntl(rdev->hnd, F_SETFL, flags | O_NONBLOCK);
|
||||
/* as i know it's connected already,
|
||||
* i don't schedule a connection timeout job */
|
||||
|
||||
/* the connection is up already, so there is no connect timeout
|
||||
* to schedule. the field must still be marked unset: the ssl
|
||||
* handshake inherits it as its deadline, and a zero there is a
|
||||
* deadline already in the past. set it to a negative value */
|
||||
HIO_INIT_NTIME(&rdev->tmout, -1, 0);
|
||||
rdev->remoteaddr = conn->remoteaddr;
|
||||
#if defined(USE_SSL)
|
||||
rdev->ssl_ctx = ssl_ctx;
|
||||
|
||||
+14
-5
@@ -646,9 +646,9 @@ int hio_sys_ctrlmux (hio_t* hio, hio_sys_mux_cmd_t cmd, hio_dev_t* dev, int dev_
|
||||
if (x >= 0)
|
||||
{
|
||||
if (i_flag == EV_DISABLE && o_flag == EV_DISABLE)
|
||||
dev->dev_cap &= ~HIO_DEV_CAP_WATCH_SUSPENDED;
|
||||
else
|
||||
dev->dev_cap |= HIO_DEV_CAP_WATCH_SUSPENDED;
|
||||
else
|
||||
dev->dev_cap &= ~HIO_DEV_CAP_WATCH_SUSPENDED;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -876,6 +876,7 @@ int hio_sys_waitmux (hio_t* hio, const hio_ntime_t* tmout, hio_sys_mux_evtcb_t e
|
||||
for (i = 0; i < nentries; i++)
|
||||
{
|
||||
int events = 0;
|
||||
int rdhup = 0;
|
||||
hio_dev_t* dev;
|
||||
|
||||
dev = mux->revs[i].udata;
|
||||
@@ -887,7 +888,11 @@ int hio_sys_waitmux (hio_t* hio, const hio_ntime_t* tmout, hio_sys_mux_evtcb_t e
|
||||
if (mux->revs[i].ident != dev->dev_mth->getsyshnd(dev)) continue; /* already closed or something mid-loop? */
|
||||
|
||||
if (mux->revs[i].flags & EV_ERROR) events |= HIO_DEV_EVENT_ERR;
|
||||
if (mux->revs[i].flags & EV_EOF) events |= HIO_DEV_EVENT_HUP;
|
||||
if (mux->revs[i].flags & EV_EOF)
|
||||
{
|
||||
if (mux->revs[i].filter == EVFILT_READ) rdhup = 1;
|
||||
else events |= HIO_DEV_EVENT_HUP;
|
||||
}
|
||||
if (mux->revs[i].filter == EVFILT_READ) events |= HIO_DEV_EVENT_IN;
|
||||
else if (mux->revs[i].filter == EVFILT_WRITE) events |= HIO_DEV_EVENT_OUT;
|
||||
#else
|
||||
@@ -903,13 +908,17 @@ int hio_sys_waitmux (hio_t* hio, const hio_ntime_t* tmout, hio_sys_mux_evtcb_t e
|
||||
{
|
||||
if (mux->revs[j].udata != dev) continue;
|
||||
if (mux->revs[j].flags & EV_ERROR) events |= HIO_DEV_EVENT_ERR;
|
||||
if (mux->revs[j].flags & EV_EOF) events |= HIO_DEV_EVENT_HUP;
|
||||
if (mux->revs[j].flags & EV_EOF)
|
||||
{
|
||||
if (mux->revs[j].filter == EVFILT_READ) rdhup = 1;
|
||||
else events |= HIO_DEV_EVENT_HUP;
|
||||
}
|
||||
if (mux->revs[j].filter == EVFILT_READ) events |= HIO_DEV_EVENT_IN;
|
||||
else if (mux->revs[j].filter == EVFILT_WRITE) events |= HIO_DEV_EVENT_OUT;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (HIO_LIKELY(events)) event_handler(hio, dev, events, 0);
|
||||
if (HIO_LIKELY(events)) event_handler(hio, dev, events, rdhup);
|
||||
}
|
||||
else if (mux->ctrlp[0] != HIO_SYSHND_INVALID)
|
||||
{
|
||||
|
||||
+2
-1
@@ -121,7 +121,8 @@ test_pxy()
|
||||
# and the bytes themselves, not just the count. the upstream emits a
|
||||
# repeating a-z pattern keyed to the offset.
|
||||
local sum=$(curl -s -m 60 "http://${SRVADDR}/pxy/big" | cksum | cut -d' ' -f1)
|
||||
local want=$(perl -e 'print map { chr(97 + ($_ % 26)) } 0 .. (8*1024*1024 - 1)' 2>/dev/null | cksum | cut -d' ' -f1)
|
||||
##local want=$(perl -e 'print map { chr(97 + ($_ % 26)) } 0 .. (8*1024*1024 - 1)' 2>/dev/null | cksum | cut -d' ' -f1)
|
||||
local want=$(yes abcdefghijklmnopqrstuvwxyz | tr -d '\n' | head -c 8388608 | cksum | cut -d' ' -f1)
|
||||
if [ -n "$want" ]; then
|
||||
tap_ensure "$sum" "$want" "$msg - the relayed bytes are identical to the upstream's"
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user