Mercurial > hg > freeDiameter
annotate libfdcore/apps.c @ 1327:82b386714795
Set callback data also when only setting expire callback (and not answer callback as well).
It is used when calling the expire callback, so not setting it makes no sense.
author | Thomas Klausner <tk@giga.or.at> |
---|---|
date | Mon, 27 Nov 2017 15:21:20 +0100 |
parents | 4a9f08d6b6ba |
children |
rev | line source |
---|---|
43
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
1 /********************************************************************************************************* |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
2 * Software License Agreement (BSD License) * |
740
4a9f08d6b6ba
Updated my mail address
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
662
diff
changeset
|
3 * Author: Sebastien Decugis <sdecugis@freediameter.net> * |
43
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
4 * * |
662
2e94ef0515d7
Updated copyright information
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
658
diff
changeset
|
5 * Copyright (c) 2011, WIDE Project and NICT * |
43
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
6 * All rights reserved. * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
7 * * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
8 * Redistribution and use of this software in source and binary forms, with or without modification, are * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
9 * permitted provided that the following conditions are met: * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
10 * * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
11 * * Redistributions of source code must retain the above * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
12 * copyright notice, this list of conditions and the * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
13 * following disclaimer. * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
14 * * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
15 * * Redistributions in binary form must reproduce the above * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
16 * copyright notice, this list of conditions and the * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
17 * following disclaimer in the documentation and/or other * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
18 * materials provided with the distribution. * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
19 * * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
20 * * Neither the name of the WIDE Project or NICT nor the * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
21 * names of its contributors may be used to endorse or * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
22 * promote products derived from this software without * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
23 * specific prior written permission of WIDE Project and * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
24 * NICT. * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
25 * * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
28 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
32 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
34 *********************************************************************************************************/ |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
35 |
658
f198d16fa7f4
Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
648
diff
changeset
|
36 #include "fdcore-internal.h" |
43
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
37 |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
38 /* Merge information into a list of apps */ |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
39 int fd_app_merge(struct fd_list * list, application_id_t aid, vendor_id_t vid, int auth, int acct) |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
40 { |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
41 struct fd_list * li; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
42 int skip = 0; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
43 |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
44 /* List is ordered by appid. Avoid duplicates */ |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
45 for (li = list; li->next != list; li = li->next) { |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
46 struct fd_app * na = (struct fd_app *)(li->next); |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
47 if (na->appid < aid) |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
48 continue; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
49 |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
50 if (na->appid > aid) |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
51 break; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
52 |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
53 /* Otherwise, we merge with existing entry -- ignore vendor id in this case */ |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
54 skip = 1; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
55 |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
56 if (auth) |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
57 na->flags.auth = 1; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
58 if (acct) |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
59 na->flags.acct = 1; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
60 break; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
61 } |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
62 |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
63 if (!skip) { |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
64 struct fd_app * new = NULL; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
65 |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
66 CHECK_MALLOC( new = malloc(sizeof(struct fd_app)) ); |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
67 memset(new, 0, sizeof(struct fd_app)); |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
68 fd_list_init(&new->chain, NULL); |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
69 new->flags.auth = (auth ? 1 : 0); |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
70 new->flags.acct = (acct ? 1 : 0); |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
71 new->vndid = vid; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
72 new->appid = aid; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
73 fd_list_insert_after(li, &new->chain); |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
74 } |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
75 |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
76 return 0; |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
77 } |
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
78 |
87 | 79 /* Check if a given application id is in a list */ |
80 int fd_app_check(struct fd_list * list, application_id_t aid, struct fd_app **detail) | |
43
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
81 { |
87 | 82 struct fd_list * li; |
43
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
83 |
87 | 84 TRACE_ENTRY("%p %d %p", list, aid, detail); |
85 CHECK_PARAMS(list && detail); | |
43
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
86 |
87 | 87 *detail = NULL; |
88 | |
89 /* Search in the list */ | |
90 for (li = list->next; li != list; li = li->next) { | |
91 struct fd_app * a = (struct fd_app *)li; | |
92 if (a->appid < aid) | |
93 continue; | |
94 | |
95 if (a->appid == aid) | |
96 *detail = a; | |
97 break; | |
98 } | |
99 | |
100 return 0; | |
43
2db15632a63d
Added a large part of connection establishment logic, to test
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff
changeset
|
101 } |
105
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
102 |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
103 /* Check if two lists have at least one common application */ |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
104 int fd_app_check_common(struct fd_list * list1, struct fd_list * list2, int * common_found) |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
105 { |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
106 struct fd_list * li1, *li2; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
107 |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
108 TRACE_ENTRY("%p %p %p", list1, list2, common_found); |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
109 CHECK_PARAMS( list1 && list2 && common_found ); |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
110 |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
111 /* Both lists are ordered, so advance both pointers at the same time */ |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
112 for (li1 = list1->next, li2 = list2->next; (li1 != list1) && (li2 != list2); ) { |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
113 struct fd_app * a1 = (struct fd_app *)li1, *a2 = (struct fd_app *)li2; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
114 if (a1->appid < a2->appid) { |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
115 li1 = li1->next; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
116 continue; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
117 } |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
118 if (a1->appid > a2->appid) { |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
119 li2 = li2->next; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
120 continue; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
121 } |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
122 /* They are equal, compare the applications */ |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
123 if ((a1->flags.auth && a2->flags.auth) || (a1->flags.acct && a2->flags.acct)) { |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
124 /* found! */ |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
125 *common_found = 1; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
126 return 0; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
127 } |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
128 |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
129 /* This application is not common, advance both lists */ |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
130 li1 = li1->next; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
131 li2 = li2->next; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
132 } |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
133 |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
134 /* We did not find a common app */ |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
135 *common_found = 0; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
136 return 0; |
0d9c9e004be0
Compute common applications after CER reception
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
87
diff
changeset
|
137 } |
447
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
138 |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
139 /* Remove the apps from a list */ |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
140 int fd_app_empty(struct fd_list * list) |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
141 { |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
142 TRACE_ENTRY("%p", list); |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
143 CHECK_PARAMS( list ); |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
144 |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
145 while (!FD_IS_LIST_EMPTY(list)) { |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
146 struct fd_list * li = list->next; |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
147 fd_list_unlink(li); |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
148 free(li); |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
149 } |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
150 |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
151 return 0; |
097bae83b07a
Forgot to cleanup the configuration on exit, spotted by valgrind
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
105
diff
changeset
|
152 } |