Coverage Report

Created: 2025-11-11 06:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/unbound/services/outbound_list.c
Line
Count
Source
1
/*
2
 * services/outbound_list.c - keep list of outbound serviced queries.
3
 *
4
 * Copyright (c) 2007, NLnet Labs. All rights reserved.
5
 *
6
 * This software is open source.
7
 * 
8
 * Redistribution and use in source and binary forms, with or without
9
 * modification, are permitted provided that the following conditions
10
 * are met:
11
 * 
12
 * Redistributions of source code must retain the above copyright notice,
13
 * this list of conditions and the following disclaimer.
14
 * 
15
 * Redistributions in binary form must reproduce the above copyright notice,
16
 * this list of conditions and the following disclaimer in the documentation
17
 * and/or other materials provided with the distribution.
18
 * 
19
 * Neither the name of the NLNET LABS nor the names of its contributors may
20
 * be used to endorse or promote products derived from this software without
21
 * specific prior written permission.
22
 * 
23
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27
 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
29
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
 */
35
36
/**
37
 * \file
38
 *
39
 * This file contains functions to help a module keep track of the
40
 * queries it has outstanding to authoritative servers.
41
 */
42
#include "config.h"
43
#include <sys/time.h>
44
#include "services/outbound_list.h"
45
#include "services/outside_network.h"
46
47
void 
48
outbound_list_init(struct outbound_list* list)
49
0
{
50
0
  list->first = NULL;
51
0
}
52
53
void 
54
outbound_list_clear(struct outbound_list* list)
55
0
{
56
0
  struct outbound_entry *p, *np;
57
0
  p = list->first;
58
0
  while(p) {
59
0
    np = p->next;
60
0
    outnet_serviced_query_stop(p->qsent, p);
61
    /* in region, no free needed */
62
0
    p = np;
63
0
  }
64
0
  outbound_list_init(list);
65
0
}
66
67
void 
68
outbound_list_insert(struct outbound_list* list, struct outbound_entry* e)
69
0
{
70
0
  if(list->first)
71
0
    list->first->prev = e;
72
0
  e->next = list->first;
73
0
  e->prev = NULL;
74
0
  list->first = e;
75
0
}
76
77
void 
78
outbound_list_remove(struct outbound_list* list, struct outbound_entry* e)
79
0
{
80
0
  if(!e)
81
0
    return;
82
0
  outnet_serviced_query_stop(e->qsent, e);
83
0
  if(e->next)
84
0
    e->next->prev = e->prev;
85
0
  if(e->prev)
86
0
    e->prev->next = e->next;
87
0
  else  list->first = e->next;
88
  /* in region, no free needed */
89
0
}