diff --git a/mio/lib/http-svr.c b/mio/lib/http-svr.c index 28b4290..a7c63f7 100644 --- a/mio/lib/http-svr.c +++ b/mio/lib/http-svr.c @@ -826,7 +826,6 @@ static int cgi_peer_on_read (mio_dev_pro_t* pro, mio_dev_pro_sid_t sid, const vo MIO_ASSERT (mio, !(cgi_state->over & CGI_STATE_OVER_READ_FROM_PEER)); -printf ("FEED %d BYTES TO HTRD\n", (int)dlen); if (mio_htrd_feed(cgi_state->peer_htrd, data, dlen, &rem) <= -1) { MIO_DEBUG3 (mio, "HTTPS(%p) - unable to feed peer into to htrd - peer %p(pid=%u)\n", cgi_state->htts, pro, (unsigned int)pro->child_pid); diff --git a/mio/lib/mio.c b/mio/lib/mio.c index 344f5ff..327a92c 100644 --- a/mio/lib/mio.c +++ b/mio/lib/mio.c @@ -1044,6 +1044,8 @@ int mio_dev_watch (mio_dev_t* dev, mio_dev_watch_cmd_t cmd, int events) if (dev->dev_cap & MIO_DEV_CAP_VIRTUAL) return 0; /*ev.data.ptr = dev;*/ + dev_cap = dev->dev_cap & ~(DEV_CAP_ALL_WATCHED); + switch (cmd) { case MIO_DEV_WATCH_START: @@ -1053,6 +1055,7 @@ int mio_dev_watch (mio_dev_t* dev, mio_dev_watch_cmd_t cmd, int events) * after this 'switch' block */ events = MIO_DEV_EVENT_IN; mux_cmd = MIO_SYS_MUX_CMD_INSERT; + dev_cap |= MIO_DEV_CAP_WATCH_STARTED; break; case MIO_DEV_WATCH_RENEW: @@ -1072,10 +1075,10 @@ int mio_dev_watch (mio_dev_t* dev, mio_dev_watch_cmd_t cmd, int events) break; case MIO_DEV_WATCH_STOP: - if (!(dev->dev_cap & DEV_CAP_ALL_WATCHED)) return 0; /* the device is not being watched */ + if (!(dev_cap & MIO_DEV_CAP_WATCH_STARTED)) return 0; /* the device is not being watched */ events = 0; /* override events */ mux_cmd = MIO_SYS_MUX_CMD_DELETE; - dev_cap = dev->dev_cap & ~(DEV_CAP_ALL_WATCHED); + dev_cap &= ~MIO_DEV_CAP_WATCH_STARTED; goto ctrl_mux; default: @@ -1083,7 +1086,6 @@ int mio_dev_watch (mio_dev_t* dev, mio_dev_watch_cmd_t cmd, int events) return -1; } - dev_cap = dev->dev_cap & ~(DEV_CAP_ALL_WATCHED); /* this function honors MIO_DEV_EVENT_IN and MIO_DEV_EVENT_OUT only * as valid input event bits. it intends to provide simple abstraction diff --git a/mio/lib/mio.h b/mio/lib/mio.h index b2b1e7c..30a53de 100644 --- a/mio/lib/mio.h +++ b/mio/lib/mio.h @@ -389,7 +389,8 @@ enum mio_dev_cap_t MIO_DEV_CAP_ACTIVE = (1 << 15), MIO_DEV_CAP_HALTED = (1 << 16), MIO_DEV_CAP_ZOMBIE = (1 << 17), - MIO_DEV_CAP_RENEW_REQUIRED = (1 << 18) + MIO_DEV_CAP_RENEW_REQUIRED = (1 << 18), + MIO_DEV_CAP_WATCH_STARTED = (1 << 19) }; typedef enum mio_dev_cap_t mio_dev_cap_t; diff --git a/mio/lib/sck.c b/mio/lib/sck.c index 4e4a85f..de4fa36 100644 --- a/mio/lib/sck.c +++ b/mio/lib/sck.c @@ -326,7 +326,7 @@ static int dev_sck_make_client (mio_dev_t* dev, void* ctx) { mio_t* mio = dev->mio; mio_dev_sck_t* rdev = (mio_dev_sck_t*)dev; - mio_syshnd_t* sck = (mio_syshnd_t*)ctx; + mio_syshnd_t* clisckhnd = (mio_syshnd_t*)ctx; /* create a socket device that is made of a socket connection * on a listening socket. @@ -334,7 +334,7 @@ static int dev_sck_make_client (mio_dev_t* dev, void* ctx) * most of the initialization is done by the listening socket device * after a client socket has been created. */ - rdev->hnd = *sck; + rdev->hnd = *clisckhnd; rdev->tmrjob_index = MIO_TMRIDX_INVALID; if (mio_makesckasync(mio, rdev->hnd) <= -1) return -1;