summaryrefslogtreecommitdiff
path: root/src/cache/query.c
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2024-07-25 05:15:33 +0000
committerLaurent Bercot <ska@appnovation.com>2024-07-25 05:15:33 +0000
commit6b8bb38398e58539096fb054e354bddadda09f9b (patch)
tree5952d8ca0d25a8d22019a548fc35d8837b456024 /src/cache/query.c
parent0d53cd3855efb536676a9dcfeadf7bf2c5de6e14 (diff)
downloadshibari-6b8bb38398e58539096fb054e354bddadda09f9b.tar.xz
More skeleton
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/cache/query.c')
-rw-r--r--src/cache/query.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/cache/query.c b/src/cache/query.c
index ad606e6..6c4bda8 100644
--- a/src/cache/query.c
+++ b/src/cache/query.c
@@ -1,13 +1,41 @@
/* ISC license. */
+#include <stdint.h>
+
+#include <s6-dns/s6dns-engine.h>
+
#include "shibari-cache-internal.h"
-void query_fail (query *q)
+static uint16_t query_delete (query *q)
+{
+ uint16_t newi = q->prev ;
+ QUERY(newi)->next = q->next ;
+ QUERY(q->next)->prev = q->prev ;
+ q->xindex = UINT16_MAX ;
+ return newi ;
+}
+
+uint16_t query_abort (uint16_t id)
{
+ query *q = QUERY(id) ;
+ s6dns_engine_recycle(&q->dt) ;
+ return query_delete(q) ;
}
-void query_success (query *q)
+uint16_t query_fail (uint16_t id)
{
+ query *q = QUERY(id) ;
+
+ if (q->source == 2) tcpconnection_removequery(TCPCONNECTION(q->i), id) ;
+ return query_delete(q) ;
+}
+
+uint16_t query_succeed (uint16_t id)
+{
+ query *q = QUERY(id) ;
+
+ if (q->source == 2) tcpconnection_removequery(TCPCONNECTION(q->i), id) ;
+ return query_delete(q) ;
}
int query_new (uint8_t source, uint16_t i, char const *ip, uint16_t port, char const *s, uint16_t len)