summaryrefslogtreecommitdiff
path: root/event.c
diff options
context:
space:
mode:
authorGreg Hazel <ghazel@gmail.com>2015-03-24 17:29:40 -0700
committerGreg Hazel <ghazel@gmail.com>2015-03-24 17:29:40 -0700
commit38cef641c4c8ca03ae7bd90b44181262657f92ff (patch)
treeffecc744e79caf1c293b5396ce5a537b6c80f4d2 /event.c
parent31c6d45f8dd496d8968ede2eceea30482830fe6b (diff)
downloadlibevent-38cef641c4c8ca03ae7bd90b44181262657f92ff.tar.gz
fix the return value of event_deferred_cb_schedule_
Diffstat (limited to 'event.c')
-rw-r--r--event.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/event.c b/event.c
index af4a6e05..1a2d0dad 100644
--- a/event.c
+++ b/event.c
@@ -2931,16 +2931,17 @@ event_callback_activate_nolock_(struct event_base *base,
return r;
}
-void
+int
event_callback_activate_later_nolock_(struct event_base *base,
struct event_callback *evcb)
{
if (evcb->evcb_flags & (EVLIST_ACTIVE|EVLIST_ACTIVE_LATER))
- return;
+ return 0;
event_queue_insert_active_later(base, evcb);
if (EVBASE_NEED_NOTIFY(base))
evthread_notify_base(base);
+ return 1;
}
void
@@ -3025,10 +3026,12 @@ event_deferred_cb_schedule_(struct event_base *base, struct event_callback *cb)
base = current_base;
EVBASE_ACQUIRE_LOCK(base, th_base_lock);
if (base->n_deferreds_queued > MAX_DEFERREDS_QUEUED) {
- event_callback_activate_later_nolock_(base, cb);
+ r = event_callback_activate_later_nolock_(base, cb);
} else {
- ++base->n_deferreds_queued;
r = event_callback_activate_nolock_(base, cb);
+ if (r) {
+ ++base->n_deferreds_queued;
+ }
}
EVBASE_RELEASE_LOCK(base, th_base_lock);
return r;