can this just be switched to a TAILQ? is anyone using this that can test?
Index: patches/patch-authd_c =================================================================== RCS file: patches/patch-authd_c diff -N patches/patch-authd_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-authd_c 20 Nov 2015 11:18:12 -0000 @@ -0,0 +1,123 @@ +$OpenBSD$ +--- authd.c.orig Fri Nov 20 11:16:51 2015 ++++ authd.c Fri Nov 20 11:17:14 2015 +@@ -174,7 +174,7 @@ struct auth_attempt { + } result; + + SPLAY_ENTRY(auth_attempt) spe; +- CIRCLEQ_ENTRY(auth_attempt) cqe; ++ TAILQ_ENTRY(auth_attempt) cqe; + }; /* struct auth_attempt */ + + +@@ -196,7 +196,7 @@ static const struct auth_peer { + struct auth_attempt; + + static SPLAY_HEAD(mod_auth_bsd_fail,auth_attempt) auth_failed_lookup; +-static CIRCLEQ_HEAD(,auth_attempt) auth_failed_cache; ++static TAILQ_HEAD(,auth_attempt) auth_failed_cache; + static size_t auth_failed_num; + + static int auth_fail_cmp(struct auth_attempt *a, struct auth_attempt *b) { +@@ -212,7 +212,7 @@ SPLAY_GENERATE(mod_auth_bsd_fail,auth_attempt,spe,auth + * Cache and lookup tree for successful authentications. + */ + static SPLAY_HEAD(mod_auth_bsd_okay,auth_attempt) auth_okayed_lookup; +-static CIRCLEQ_HEAD(,auth_attempt) auth_okayed_cache; ++static TAILQ_HEAD(,auth_attempt) auth_okayed_cache; + static size_t auth_okayed_num; + + static int auth_okay_cmp(struct auth_attempt *a, struct auth_attempt *b) { +@@ -566,15 +566,15 @@ static struct auth_attempt *authd_userokay_cached(stru + * Just setup it up for reallocation. + */ + if (now - a->timestamp > cache_ttl) { +- CIRCLEQ_REMOVE(&auth_okayed_cache,a,cqe); +- CIRCLEQ_INSERT_HEAD(&auth_okayed_cache,a,cqe); ++ TAILQ_REMOVE(&auth_okayed_cache,a,cqe); ++ TAILQ_INSERT_HEAD(&auth_okayed_cache,a,cqe); + + a = NULL; + } else { + a->timestamp = now; + +- CIRCLEQ_REMOVE(&auth_okayed_cache,a,cqe); +- CIRCLEQ_INSERT_TAIL(&auth_okayed_cache,a,cqe); ++ TAILQ_REMOVE(&auth_okayed_cache,a,cqe); ++ TAILQ_INSERT_TAIL(&auth_okayed_cache,a,cqe); + } + } + +@@ -592,11 +592,11 @@ static struct auth_attempt *authd_userokay_cache(struc + now = time(NULL); + + if (okay) { +- if ((a = CIRCLEQ_FIRST(&auth_okayed_cache)) != CIRCLEQ_END(&auth_okayed_cache) ++ if ((a = TAILQ_FIRST(&auth_okayed_cache)) != TAILQ_END(&auth_okayed_cache) + && (now - a->timestamp > cache_ttl || auth_okayed_num >= cache_size)) { + assert(SPLAY_REMOVE(mod_auth_bsd_okay,&auth_okayed_lookup,a)); + +- CIRCLEQ_REMOVE(&auth_okayed_cache,a,cqe); ++ TAILQ_REMOVE(&auth_okayed_cache,a,cqe); + auth_okayed_num--; + } else if (!(a = malloc(sizeof *a))) + return NULL; +@@ -609,7 +609,7 @@ static struct auth_attempt *authd_userokay_cache(struc + if ((e = SPLAY_INSERT(mod_auth_bsd_okay,&auth_okayed_lookup,a))) { + e->timestamp = now; + +- CIRCLEQ_REMOVE(&auth_okayed_cache,e,cqe); ++ TAILQ_REMOVE(&auth_okayed_cache,e,cqe); + auth_okayed_num--; + + free(a); +@@ -617,23 +617,23 @@ static struct auth_attempt *authd_userokay_cache(struc + a = e; + } + +- CIRCLEQ_INSERT_TAIL(&auth_okayed_cache,a,cqe); ++ TAILQ_INSERT_TAIL(&auth_okayed_cache,a,cqe); + auth_okayed_num++; + } else { + authd_hash_fail(k.key,pkt); + + if ((a = SPLAY_FIND(mod_auth_bsd_fail,&auth_failed_lookup,&k))) { +- CIRCLEQ_REMOVE(&auth_failed_cache,a,cqe); ++ TAILQ_REMOVE(&auth_failed_cache,a,cqe); + auth_failed_num--; + + if (now - a->timestamp > cache_ttl) + a->result.failed.count = 0; + } else { +- if ((a = CIRCLEQ_FIRST(&auth_failed_cache)) != CIRCLEQ_END(&auth_failed_cache) ++ if ((a = TAILQ_FIRST(&auth_failed_cache)) != TAILQ_END(&auth_failed_cache) + && (now - a->timestamp > cache_ttl || auth_failed_num >= cache_size)) { + assert(SPLAY_REMOVE(mod_auth_bsd_fail,&auth_failed_lookup,a)); + +- CIRCLEQ_REMOVE(&auth_failed_cache,a,cqe); ++ TAILQ_REMOVE(&auth_failed_cache,a,cqe); + auth_failed_num--; + } else if (!(a = malloc(sizeof *a))) + return NULL; +@@ -649,7 +649,7 @@ static struct auth_attempt *authd_userokay_cache(struc + a->timestamp = now; + a->result.failed.count++; + +- CIRCLEQ_INSERT_TAIL(&auth_failed_cache,a,cqe); ++ TAILQ_INSERT_TAIL(&auth_failed_cache,a,cqe); + auth_failed_num++; + } + +@@ -1147,10 +1147,10 @@ static int authd_init(server_rec *s) { + int status; + + SPLAY_INIT(&auth_failed_lookup); +- CIRCLEQ_INIT(&auth_failed_cache); ++ TAILQ_INIT(&auth_failed_cache); + + SPLAY_INIT(&auth_okayed_lookup); +- CIRCLEQ_INIT(&auth_okayed_cache); ++ TAILQ_INIT(&auth_okayed_cache); + + + ap_log_error(APLOG_MARK,APLOG_NOTICE|APLOG_NOERRNO,s,"[AuthBSD] Preparing auth daemon");