mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-11 13:24:43 -04:00
When running with deferred callbacks, always send the "connected" event
before any read/write events, and send timeout/error/eof events after. svn:r1413
This commit is contained in:
parent
7a55c48d77
commit
bd26bace0d
@ -121,6 +121,13 @@ bufferevent_run_deferred_callbacks(struct deferred_cb *_, void *arg)
|
|||||||
/* XXXX It would be better to run these without holding the
|
/* XXXX It would be better to run these without holding the
|
||||||
* bufferevent lock */
|
* bufferevent lock */
|
||||||
BEV_LOCK(bufev);
|
BEV_LOCK(bufev);
|
||||||
|
if ((bufev_private->eventcb_pending & BEV_EVENT_CONNECTED) &&
|
||||||
|
bufev->errorcb) {
|
||||||
|
/* The "connected" happened before any reads or writes, so
|
||||||
|
send it first. */
|
||||||
|
bufev_private->eventcb_pending &= ~BEV_EVENT_CONNECTED;
|
||||||
|
bufev->errorcb(bufev, BEV_EVENT_CONNECTED, bufev->cbarg);
|
||||||
|
}
|
||||||
if (bufev_private->readcb_pending && bufev->readcb) {
|
if (bufev_private->readcb_pending && bufev->readcb) {
|
||||||
bufev_private->readcb_pending = 0;
|
bufev_private->readcb_pending = 0;
|
||||||
bufev->readcb(bufev, bufev->cbarg);
|
bufev->readcb(bufev, bufev->cbarg);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user