fixed a select bug in mux.c
This commit is contained in:
parent
7e509d4daa
commit
d6a3bfea8d
@ -43,6 +43,9 @@
|
|||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
# include <fcntl.h>
|
# include <fcntl.h>
|
||||||
# include <errno.h>
|
# include <errno.h>
|
||||||
|
# if defined(HAVE_SYS_TIME_H)
|
||||||
|
# include <sys/time.h>
|
||||||
|
# endif
|
||||||
# if defined(HAVE_SYS_EPOLL_H)
|
# if defined(HAVE_SYS_EPOLL_H)
|
||||||
# include <sys/epoll.h>
|
# include <sys/epoll.h>
|
||||||
# if defined(HAVE_EPOLL_CREATE)
|
# if defined(HAVE_EPOLL_CREATE)
|
||||||
@ -385,7 +388,6 @@ int qse_mux_insert (qse_mux_t* mux, const qse_mux_evt_t* evt)
|
|||||||
QSE_MEMSET (&ev, 0, QSE_SIZEOF(ev));
|
QSE_MEMSET (&ev, 0, QSE_SIZEOF(ev));
|
||||||
if (evt->mask & QSE_MUX_IN) ev.events |= EPOLLIN;
|
if (evt->mask & QSE_MUX_IN) ev.events |= EPOLLIN;
|
||||||
if (evt->mask & QSE_MUX_OUT) ev.events |= EPOLLOUT;
|
if (evt->mask & QSE_MUX_OUT) ev.events |= EPOLLOUT;
|
||||||
ev.data.fd = evt->hnd;
|
|
||||||
|
|
||||||
if (ev.events == 0 || evt->hnd < 0)
|
if (ev.events == 0 || evt->hnd < 0)
|
||||||
{
|
{
|
||||||
@ -423,6 +425,9 @@ int qse_mux_insert (qse_mux_t* mux, const qse_mux_evt_t* evt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*ev.data.fd = evt->hnd;*/
|
||||||
|
ev.data.ptr = mux->me.ptr[evt->hnd];
|
||||||
|
|
||||||
if (mux->ee.len >= mux->ee.capa)
|
if (mux->ee.len >= mux->ee.capa)
|
||||||
{
|
{
|
||||||
struct epoll_event* tmp;
|
struct epoll_event* tmp;
|
||||||
@ -530,7 +535,6 @@ done:
|
|||||||
|
|
||||||
int qse_mux_poll (qse_mux_t* mux, qse_ntime_t timeout)
|
int qse_mux_poll (qse_mux_t* mux, qse_ntime_t timeout)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if defined(USE_SELECT)
|
#if defined(USE_SELECT)
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
int n;
|
int n;
|
||||||
@ -557,7 +561,7 @@ int qse_mux_poll (qse_mux_t* mux, qse_ntime_t timeout)
|
|||||||
qse_mux_hnd_t i;
|
qse_mux_hnd_t i;
|
||||||
qse_mux_evt_t* evt, xevt;
|
qse_mux_evt_t* evt, xevt;
|
||||||
|
|
||||||
for (i = 0 ; i < mux->maxhnd; i++)
|
for (i = 0 ; i <= mux->maxhnd; i++)
|
||||||
{
|
{
|
||||||
evt = mux->me.ptr[i];
|
evt = mux->me.ptr[i];
|
||||||
if (!evt || evt->hnd != i) continue;
|
if (!evt || evt->hnd != i) continue;
|
||||||
@ -575,7 +579,7 @@ int qse_mux_poll (qse_mux_t* mux, qse_ntime_t timeout)
|
|||||||
return n;
|
return n;
|
||||||
|
|
||||||
#elif defined(USE_EPOLL)
|
#elif defined(USE_EPOLL)
|
||||||
int nfds, hnd, i, mask;
|
int nfds, i, mask;
|
||||||
qse_mux_evt_t* evt, xevt;
|
qse_mux_evt_t* evt, xevt;
|
||||||
|
|
||||||
nfds = epoll_wait (mux->fd, mux->ee.ptr, mux->ee.len, timeout);
|
nfds = epoll_wait (mux->fd, mux->ee.ptr, mux->ee.len, timeout);
|
||||||
@ -587,10 +591,11 @@ int qse_mux_poll (qse_mux_t* mux, qse_ntime_t timeout)
|
|||||||
|
|
||||||
for (i = 0; i < nfds; i++)
|
for (i = 0; i < nfds; i++)
|
||||||
{
|
{
|
||||||
hnd = mux->ee.ptr[i].data.fd;
|
/*int hnd = mux->ee.ptr[i].data.fd;
|
||||||
evt = mux->me.ptr[hnd];
|
evt = mux->me.ptr[hnd];
|
||||||
|
QSE_ASSERT (evt->hnd == hnd); */
|
||||||
|
|
||||||
QSE_ASSERT (evt->hnd == hnd);
|
evt = mux->ee.ptr[i].data.ptr;
|
||||||
|
|
||||||
QSE_MEMCPY (&xevt, evt, QSE_SIZEOF(xevt));
|
QSE_MEMCPY (&xevt, evt, QSE_SIZEOF(xevt));
|
||||||
|
|
||||||
|
@ -1117,6 +1117,7 @@ static int stat_file (
|
|||||||
hst->mtime = QSE_SEC_TO_MSEC(st.st_mtime);
|
hst->mtime = QSE_SEC_TO_MSEC(st.st_mtime);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
qse_printf (QSE_T("mtime => %ld %ld\n"), (long)st.st_mtime, (long)hst->mtime);
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user