Browse Source

[Minor] Slightly refactor set iteration

tags/1.8.0
Vsevolod Stakhov 5 years ago
parent
commit
5766eb4b96
2 changed files with 10 additions and 6 deletions
  1. 8
    0
      contrib/libucl/khash.h
  2. 2
    6
      src/libserver/events.c

+ 8
- 0
contrib/libucl/khash.h View File

@@ -583,6 +583,14 @@ static kh_inline khint_t __ac_Wang_hash(khint_t key)
code; \
} }

#define kh_foreach_key(h, kvar, code) { \
khint_t __i; \
for (__i = kh_begin(h); __i != kh_end(h); ++__i) { \
if (!kh_exist(h,__i)) continue; \
(kvar) = kh_key(h,__i); \
code; \
} }

/* More conenient interfaces */

/*! @function

+ 2
- 6
src/libserver/events.c View File

@@ -309,17 +309,13 @@ void
rspamd_session_cleanup (struct rspamd_async_session *session)
{
struct rspamd_async_event *ev;
int i;

if (session == NULL) {
msg_err ("session is NULL");
return;
}

for (i = kh_begin (session->events); i != kh_end (session->events); i ++) {
if (!kh_exist (session->events, i)) continue;
ev = kh_key (session->events, i);

kh_foreach_key (session->events, ev, {
/* Call event's finalizer */
msg_debug_session ("removed event on destroy: %p, subsystem: %s",
ev->user_data,
@@ -328,7 +324,7 @@ rspamd_session_cleanup (struct rspamd_async_session *session)
if (ev->fin != NULL) {
ev->fin (ev->user_data);
}
}
});

kh_clear (rspamd_events_hash, session->events);
}

Loading…
Cancel
Save