summaryrefslogtreecommitdiff
path: root/src/cache/query.c
blob: 8f5e423317904762ec48260f265c627a6b4c9033 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* ISC license. */

#include <stdint.h>

#include <s6-dns/s6dns-engine.h>

#include "shibari-cache-internal.h"

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) ;
}

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 *buf, uint16_t len)
{
  return 1 ;
}