diff --git a/daemon/control_udp.c b/daemon/control_udp.c index b1143f28c..d040983e2 100644 --- a/daemon/control_udp.c +++ b/daemon/control_udp.c @@ -173,10 +173,18 @@ restart: mutex_lock(&u->lock); g_hash_table_replace(u->fresh_cookies, g_string_chunk_insert(u->fresh_chunks, out[RE_UDP_COOKIE]), g_string_chunk_insert(u->fresh_chunks, reply)); + g_hash_table_remove(u->stale_cookies, out[RE_UDP_COOKIE]); cond_broadcast(&u->cond); mutex_unlock(&u->lock); free(reply); } + else { + mutex_lock(&u->lock); + g_hash_table_remove(u->fresh_cookies, out[RE_UDP_COOKIE]); + g_hash_table_remove(u->stale_cookies, out[RE_UDP_COOKIE]); + cond_broadcast(&u->cond); + mutex_unlock(&u->lock); + } out: pcre_free(out);