1da0c48c4Sopenharmony_ci2022-11-01  Aaron Merey  <amerey@redhat.com>
2da0c48c4Sopenharmony_ci
3da0c48c4Sopenharmony_ci	* debuginfod-client.c (path_escape): Add early return.
4da0c48c4Sopenharmony_ci
5da0c48c4Sopenharmony_ci2022-10-31  Aaron Merey  <amerey@redhat.com>
6da0c48c4Sopenharmony_ci
7da0c48c4Sopenharmony_ci	* Makefile.am (libdebuginfod_so_LDLIBS): Add libelf.
8da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_find_section): New function.
9da0c48c4Sopenharmony_ci	(path_escape): New function.
10da0c48c4Sopenharmony_ci	(extract_section): New function.
11da0c48c4Sopenharmony_ci	(cache_find_section): New function.
12da0c48c4Sopenharmony_ci	(debuginfod_query_server): Add support for section queries.
13da0c48c4Sopenharmony_ci	* debuginfod-find.c (main): Add support for section queries.
14da0c48c4Sopenharmony_ci	* debuginfod.cxx (extract_section): New function.
15da0c48c4Sopenharmony_ci	(handle_buildid_f_match): Add section parameter.  When non-empty,
16da0c48c4Sopenharmony_ci	try to create response from section contents.
17da0c48c4Sopenharmony_ci	(handle_buildid_r_match): Add section parameter.  When non-empty,
18da0c48c4Sopenharmony_ci	try to create response from section contents.
19da0c48c4Sopenharmony_ci	(handle_buildid_match): Add section parameter. Pass to
20da0c48c4Sopenharmony_ci	handle_buildid_{f,r}_match.
21da0c48c4Sopenharmony_ci	(handle_buildid): Handle section name when artifacttype is set to
22da0c48c4Sopenharmony_ci	"section".  Query upstream servers via debuginfod_find_section
23da0c48c4Sopenharmony_ci	when necessary.
24da0c48c4Sopenharmony_ci	(debuginfod.h.in): Add declaration for debuginfod_find_section.
25da0c48c4Sopenharmony_ci	(libdebuginfod.map): Add debuginfod_find_section.
26da0c48c4Sopenharmony_ci
27da0c48c4Sopenharmony_ci2022-10-18  Daniel Thornburgh <dthorn@google.com>
28da0c48c4Sopenharmony_ci
29da0c48c4Sopenharmony_ci  * debuginfod-client.c (debuginfod_query_server): Add DEBUGINFOD_HEADERS_FILE
30da0c48c4Sopenharmony_ci  setting to supply outgoing HTTP headers.
31da0c48c4Sopenharmony_ci
32da0c48c4Sopenharmony_ci2022-10-17  Frank Ch. Eigler  <fche@redhat.com>
33da0c48c4Sopenharmony_ci
34da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Report libmicrohttpd version.
35da0c48c4Sopenharmony_ci
36da0c48c4Sopenharmony_ci2022-09-28  Aaron Merey  <amerey@redhat.com>
37da0c48c4Sopenharmony_ci
38da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Switch sign of some
39da0c48c4Sopenharmony_ci	error codes from positive to negative.
40da0c48c4Sopenharmony_ci
41da0c48c4Sopenharmony_ci2022-09-08  Frank Ch. Eigler  <fche@redhat.com>
42da0c48c4Sopenharmony_ci
43da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Clear
44da0c48c4Sopenharmony_ci	->winning_headers along with ->url at the start of any new query.
45da0c48c4Sopenharmony_ci
46da0c48c4Sopenharmony_ci2022-09-08  Martin Liska  <mliska@suse.cz>
47da0c48c4Sopenharmony_ci
48da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_get_headers): Add to DUMMY_LIBDEBUGINFOD.
49da0c48c4Sopenharmony_ci
50da0c48c4Sopenharmony_ci2022-09-06  Frank Ch. Eigler  <fche@redhat.com>
51da0c48c4Sopenharmony_ci
52da0c48c4Sopenharmony_ci	* debuginfod-client.c (header_callback): Don't copy \r in x-d headers.
53da0c48c4Sopenharmony_ci	Print all headers in verbose_fd mode.
54da0c48c4Sopenharmony_ci	* debuginfod-find.c (parse_opt): Set verbose_fd only at verbosity >= 2.
55da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid): Clean up header forwarding
56da0c48c4Sopenharmony_ci	string processing.
57da0c48c4Sopenharmony_ci	* debuginfod.h.in: (debuginfod_get_headers): Tweak wording.
58da0c48c4Sopenharmony_ci	* libdebuginfod.map: Use ELFUTILS_0.188 for new function.
59da0c48c4Sopenharmony_ci
60da0c48c4Sopenharmony_ci2022-07-15  Noah Sanci  <nsanci@redhat.com>
61da0c48c4Sopenharmony_ci
62da0c48c4Sopenharmony_ci	* debuginfod-client.c (header_callback): Ignore headers without
63da0c48c4Sopenharmony_ci	X-DEBUGINFOD prefix.
64da0c48c4Sopenharmony_ci	(debuginfod_query_server): Removed verbose printing headers when
65da0c48c4Sopenharmony_ci	undesired.
66da0c48c4Sopenharmony_ci	(debuginfod_get_headers): Created.
67da0c48c4Sopenharmony_ci	* debuginfod-find.c (main): Verbose printing headers.
68da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid): Add headers prefixed with
69da0c48c4Sopenharmony_ci	X-DEBUGINFOD from federated servers to this server's response
70da0c48c4Sopenharmony_ci	headers.
71da0c48c4Sopenharmony_ci	* debuginfod.h.in (debuginfod_get_headers): Created.
72da0c48c4Sopenharmony_ci	* libdebuginfod.map: New elfutils version added.
73da0c48c4Sopenharmony_ci
74da0c48c4Sopenharmony_ci2022-09-02  Aaron Merey  <amerey@redhat.com>
75da0c48c4Sopenharmony_ci
76da0c48c4Sopenharmony_ci	* debuginfod.cxx (parse_opt): If '-C' is given with no arg, do not
77da0c48c4Sopenharmony_ci	update connection_pool since it will be done at a later point.
78da0c48c4Sopenharmony_ci	(main): Use auto-sized connection_pool if '-C' isn't given with an
79da0c48c4Sopenharmony_ci	arg. Do not use MHD_USE_THREAD_PER_CONNECTION.
80da0c48c4Sopenharmony_ci
81da0c48c4Sopenharmony_ci2022-08-17  Martin Liska  <mliska@suse.cz>
82da0c48c4Sopenharmony_ci
83da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid): Update HTTP statistics only if
84da0c48c4Sopenharmony_ci	it comes from HTTP request.
85da0c48c4Sopenharmony_ci
86da0c48c4Sopenharmony_ci2022-08-17  Martin Liska  <mliska@suse.cz>
87da0c48c4Sopenharmony_ci
88da0c48c4Sopenharmony_ci	* debuginfod.cxx: Print filename for "cannot open archive".
89da0c48c4Sopenharmony_ci
90da0c48c4Sopenharmony_ci2022-08-15  Frank Ch. Eigler <fche@redhat.com>
91da0c48c4Sopenharmony_ci
92da0c48c4Sopenharmony_ci	PR29474
93da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid_r_match): Don't trigger false-404's
94da0c48c4Sopenharmony_ci	for concurrently prefetched target files.
95da0c48c4Sopenharmony_ci
96da0c48c4Sopenharmony_ci2022-08-02  Josef Cejka <jcejka@suse.de>
97da0c48c4Sopenharmony_ci
98da0c48c4Sopenharmony_ci	* debuginfod.cxx (groom): Don't evaluate regex unless needed.
99da0c48c4Sopenharmony_ci
100da0c48c4Sopenharmony_ci2022-07-29  Josef Cejka <jcejka@suse.de>
101da0c48c4Sopenharmony_ci
102da0c48c4Sopenharmony_ci	* debuginfod.cxx: Create db indexes for fast delete while grooming.
103da0c48c4Sopenharmony_ci
104da0c48c4Sopenharmony_ci2022-06-03  Michael Trapp <michael.trapp@sap.com>
105da0c48c4Sopenharmony_ci
106da0c48c4Sopenharmony_ci	* debuginfod.cxx (scan_source_info): New global.
107da0c48c4Sopenharmony_ci	(parse_opt, elf_classify): Use it.
108da0c48c4Sopenharmony_ci
109da0c48c4Sopenharmony_ci2022-05-09  Mark Wielaard  <mark@klomp.org>
110da0c48c4Sopenharmony_ci
111da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_clean_cache): Move utime call to
112da0c48c4Sopenharmony_ci	before fts traversal.
113da0c48c4Sopenharmony_ci
114da0c48c4Sopenharmony_ci2022-05-09  Mark Wielaard  <mark@klomp.org>
115da0c48c4Sopenharmony_ci
116da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_init_cache): Remove.
117da0c48c4Sopenharmony_ci	(debuginfod_query_server): Don't call debuginfod_init_cache, call
118da0c48c4Sopenharmony_ci	mkdir then debuginfod_clean_cache.
119da0c48c4Sopenharmony_ci
120da0c48c4Sopenharmony_ci2022-05-09  Mark Wielaard  <mark@klomp.org>
121da0c48c4Sopenharmony_ci
122da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_config_cache): Always open with
123da0c48c4Sopenharmony_ci	O_CREATE first, then use fstat, only write the cache_config_default_s
124da0c48c4Sopenharmony_ci	value if st_size == 0, otherwise read value from file.
125da0c48c4Sopenharmony_ci
126da0c48c4Sopenharmony_ci2022-05-09  Mark Wielaard  <mark@klomp.org>
127da0c48c4Sopenharmony_ci
128da0c48c4Sopenharmony_ci	* debuginfod.cxx (conninfo): Always provide servname to getnameinfo.
129da0c48c4Sopenharmony_ci
130da0c48c4Sopenharmony_ci2022-05-09  Mark Wielaard  <mark@klomp.org>
131da0c48c4Sopenharmony_ci
132da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Add
133da0c48c4Sopenharmony_ci	curl_easy_setopt_ck macro, use it for all curl_easy_setopt calls.
134da0c48c4Sopenharmony_ci
135da0c48c4Sopenharmony_ci2022-05-09  Mark Wielaard  <mark@klomp.org>
136da0c48c4Sopenharmony_ci
137da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_write_callback): Check result
138da0c48c4Sopenharmony_ci	of curl_easy_getinfo.
139da0c48c4Sopenharmony_ci
140da0c48c4Sopenharmony_ci2022-05-05  Mark Wielaard  <mark@klomp.org>
141da0c48c4Sopenharmony_ci
142da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Define use_epoll. Set to MHD_USE_EPOLL
143da0c48c4Sopenharmony_ci	based on MHD_VERSION. Don't use MHD_USE_THREAD_PER_CONNECTION
144da0c48c4Sopenharmony_ci	when use_poll is set.
145da0c48c4Sopenharmony_ci
146da0c48c4Sopenharmony_ci2022-05-05  Mark Wielaard  <mark@klomp.org>
147da0c48c4Sopenharmony_ci
148da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Define mhd_flags. Use mhd_flags for
149da0c48c4Sopenharmony_ci	MHD_start_daemon. Try again with MHD_USE_DUAL_STACK removed if
150da0c48c4Sopenharmony_ci	that fails. Update clog to say either IPV4 or IPV4 and IPV6.
151da0c48c4Sopenharmony_ci	stop either ithe d46 or d4 daemonr.
152da0c48c4Sopenharmony_ci
153da0c48c4Sopenharmony_ci2022-05-09  Noah Sanci  <nsanci@redhat.com>
154da0c48c4Sopenharmony_ci
155da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Set nonzero defaults for fdcache.
156da0c48c4Sopenharmony_ci
157da0c48c4Sopenharmony_ci2022-05-04  Frank Ch. Eigler <fche@redhat.com>
158da0c48c4Sopenharmony_ci	    Mark Wielaard  <mark@klomp.org>
159da0c48c4Sopenharmony_ci
160da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Correct fd leak
161da0c48c4Sopenharmony_ci	for cache negative-hit unlink case.
162da0c48c4Sopenharmony_ci	(debuginfod_config_cache, debuginfod_init_cache): Correct
163da0c48c4Sopenharmony_ci	minor fd leaks.
164da0c48c4Sopenharmony_ci	* debuginfod-find.c  (main): Ditto.
165da0c48c4Sopenharmony_ci
166da0c48c4Sopenharmony_ci2022-04-22  Mark Wielaard  <mark@klomp.org>
167da0c48c4Sopenharmony_ci
168da0c48c4Sopenharmony_ci	* Makefile.am (libdebuginfod): Add -lpthread.
169da0c48c4Sopenharmony_ci	(libdebuginfod_so_LDLIBS): Likewise.
170da0c48c4Sopenharmony_ci	* debuginfod-client.c (init_control): New static pthread_once_t.
171da0c48c4Sopenharmony_ci	(libcurl_init): New static function.
172da0c48c4Sopenharmony_ci	(debuginfod_begin): Use ptrace_once to call libcurl_init.
173da0c48c4Sopenharmony_ci	(libdebuginfod_ctor): Removed.
174da0c48c4Sopenharmony_ci	(libdebuginfod_dtor): Likewise.
175da0c48c4Sopenharmony_ci
176da0c48c4Sopenharmony_ci2022-04-24  Mark Wielaard  <mark@klomp.org>
177da0c48c4Sopenharmony_ci
178da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Add MHD_USE_ITC to MHD_start_daemon flags.
179da0c48c4Sopenharmony_ci
180da0c48c4Sopenharmony_ci2022-04-13  Aaron Merey  <amerey@redhat.com>
181da0c48c4Sopenharmony_ci
182da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server):
183da0c48c4Sopenharmony_ci	Drop st_mode check. Add st_size > 0 check.
184da0c48c4Sopenharmony_ci	Save target_mtime before calling
185da0c48c4Sopenharmony_ci	debuginfod_config_cache. unlink target_cache_path
186da0c48c4Sopenharmony_ci	on EACCESS. Create target_cache_path with DEFFILEMODE.
187da0c48c4Sopenharmony_ci
188da0c48c4Sopenharmony_ci2022-04-03  Frank Ch. Eigler <fche@redhat.com>
189da0c48c4Sopenharmony_ci
190da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Use single dual-stack daemon setup,
191da0c48c4Sopenharmony_ci	rather than duplicate ipv4 and ipv6.
192da0c48c4Sopenharmony_ci	(conninfo, handle_buildid): Represent ipv4-mapped ipv6 addresses
193da0c48c4Sopenharmony_ci	in their native ipv4 form for logging and X-F-F: purposes.
194da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_add_http_header): Tolerate
195da0c48c4Sopenharmony_ci	colons in http header values.
196da0c48c4Sopenharmony_ci
197da0c48c4Sopenharmony_ci2022-04-03  Frank Ch. Eigler <fche@redhat.com>
198da0c48c4Sopenharmony_ci
199da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Use MHD_USE_EPOLL for libmicrohttpd, to
200da0c48c4Sopenharmony_ci	encourage more round-robin dispatch of incoming connections.
201da0c48c4Sopenharmony_ci
202da0c48c4Sopenharmony_ci2021-12-09  Alexander Kanavin <alex@linutronix.de>
203da0c48c4Sopenharmony_ci
204da0c48c4Sopenharmony_ci	* debuginfod-client.c (cache_clean_default_interval_s): Change type to
205da0c48c4Sopenharmony_ci	long from time_t.
206da0c48c4Sopenharmony_ci	(cache_miss_default_s): Likewise.
207da0c48c4Sopenharmony_ci	(cache_default_max_unused_age_s): Likewise.
208da0c48c4Sopenharmony_ci
209da0c48c4Sopenharmony_ci2021-12-09  Mark Wielaard  <mark@klomp.org>
210da0c48c4Sopenharmony_ci
211da0c48c4Sopenharmony_ci	* debuginfod.cxx (database_stats_report): Don't format clog
212da0c48c4Sopenharmony_ci	using 'right' and 'setw(20)'.
213da0c48c4Sopenharmony_ci
214da0c48c4Sopenharmony_ci2021-12-08  Frank Ch. Eigler  <fche@redhat.com>
215da0c48c4Sopenharmony_ci
216da0c48c4Sopenharmony_ci	* debuginfod.cxx (connection_pool): New global.
217da0c48c4Sopenharmony_ci	(parse_opt): Parse & check -C option to set it.
218da0c48c4Sopenharmony_ci	(error_cb): New callback for libmicrohttpd error counting.
219da0c48c4Sopenharmony_ci	(main): Activate MHD_OPTION_THREAD_POOL_SIZE if appropriate.
220da0c48c4Sopenharmony_ci	Activate error_cb.
221da0c48c4Sopenharmony_ci
222da0c48c4Sopenharmony_ci2021-12-04  Mark Wielaard  <mark@klomp.org>
223da0c48c4Sopenharmony_ci
224da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Call debuginfod_pool_groom before exit.
225da0c48c4Sopenharmony_ci
226da0c48c4Sopenharmony_ci2021-12-08  Mark Wielaard  <mark@klomp.org>
227da0c48c4Sopenharmony_ci
228da0c48c4Sopenharmony_ci	* debuginfod.cxx (add_mhd_response_header): New function.
229da0c48c4Sopenharmony_ci	(reportable_exception::mhd_send_response): Call
230da0c48c4Sopenharmony_ci	MHD_add_response_header.
231da0c48c4Sopenharmony_ci	(add_mhd_last_modified): Likewise.
232da0c48c4Sopenharmony_ci	(handle_buildid_f_match): Likewise.
233da0c48c4Sopenharmony_ci	(handle_buildid_r_match): Likewise.
234da0c48c4Sopenharmony_ci	(handle_metrics): Likewise. And check MHD_Response was actually
235da0c48c4Sopenharmony_ci	created.
236da0c48c4Sopenharmony_ci	(handle_root): Likewise.
237da0c48c4Sopenharmony_ci
238da0c48c4Sopenharmony_ci2021-12-08  Frank Ch. Eigler  <fche@redhat.com>
239da0c48c4Sopenharmony_ci
240da0c48c4Sopenharmony_ci	* debuginfod.cxx (intern): Call set_metrics() holding the fdcache mutex.
241da0c48c4Sopenharmony_ci
242da0c48c4Sopenharmony_ci2021-12-04  Mark Wielaard  <mark@klomp.org>
243da0c48c4Sopenharmony_ci
244da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Free winning_headers.
245da0c48c4Sopenharmony_ci	Reset response_data_size when clearing response_data.
246da0c48c4Sopenharmony_ci
247da0c48c4Sopenharmony_ci2021-12-01  Mark Wielaard  <mark@klomp.org>
248da0c48c4Sopenharmony_ci
249da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Free tmp_url on
250da0c48c4Sopenharmony_ci	realloc error. curl_free escaped_string on error. Fix error out
251da0c48c4Sopenharmony_ci	goto on curl_easy_init failure. Only cleanup data[i] handle and
252da0c48c4Sopenharmony_ci	response_data if it was initialized.
253da0c48c4Sopenharmony_ci
254da0c48c4Sopenharmony_ci2021-12-01  Mark Wielaard  <mark@klomp.org>
255da0c48c4Sopenharmony_ci
256da0c48c4Sopenharmony_ci	* debuginfod-client.c (timestamp): Use gmtime_r instead of gmtime.
257da0c48c4Sopenharmony_ci	(add_mhd_last_modified): Likewise.
258da0c48c4Sopenharmony_ci
259da0c48c4Sopenharmony_ci2021-11-10  Érico N. Rolim  <erico.erc@gmail.com>
260da0c48c4Sopenharmony_ci
261da0c48c4Sopenharmony_ci	* debuginfod.cxx: include "system.h" under 'extern "C"' block.
262da0c48c4Sopenharmony_ci
263da0c48c4Sopenharmony_ci2021-11-05  Frank Ch. Eigler  <fche@redhat.com>
264da0c48c4Sopenharmony_ci
265da0c48c4Sopenharmony_ci	PR28430
266da0c48c4Sopenharmony_ci	* debuginfod.cxx (parse_opt): Add "--passive" flag.  Complain
267da0c48c4Sopenharmony_ci	about inconsistent flags.
268da0c48c4Sopenharmony_ci	(main): In passive mode, suppress scan/groom/traverse threads and
269da0c48c4Sopenharmony_ci	other read-write database ops.
270da0c48c4Sopenharmony_ci
271da0c48c4Sopenharmony_ci2021-11-04  Frank Ch. Eigler  <fche@redhat.com>
272da0c48c4Sopenharmony_ci
273da0c48c4Sopenharmony_ci	PR28514
274da0c48c4Sopenharmony_ci	* debuginfod.cxx (groom): Rework into separate decision/action
275da0c48c4Sopenharmony_ci	phases.  Add new metrics to monitor progress.  Limit indefinite
276da0c48c4Sopenharmony_ci	operation times to avoid starving rescan.
277da0c48c4Sopenharmony_ci
278da0c48c4Sopenharmony_ci2021-10-23  Frank Ch. Eigler  <fche@redhat.com>
279da0c48c4Sopenharmony_ci
280da0c48c4Sopenharmony_ci	PR28240
281da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Correct
282da0c48c4Sopenharmony_ci	negative-hit cache check sequence for root user.
283da0c48c4Sopenharmony_ci
284da0c48c4Sopenharmony_ci2021-10-15  Mark Wielaard  <mark@klomp.org>
285da0c48c4Sopenharmony_ci
286da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Set
287da0c48c4Sopenharmony_ci	CURLOPT_PROTOCOLS.
288da0c48c4Sopenharmony_ci
289da0c48c4Sopenharmony_ci2021-10-06  Di Chen <dichen@redhat.com>
290da0c48c4Sopenharmony_ci
291da0c48c4Sopenharmony_ci	PR28242
292da0c48c4Sopenharmony_ci	* debuginfod.cxx (inc_metrics, add_metrics): Add two-tag variants.
293da0c48c4Sopenharmony_ci	(handler_cb): Call it with artifacttype for http_responses_* metrics.
294da0c48c4Sopenharmony_ci	(handle_buildid): Sanitize artifacttype if necessary.
295da0c48c4Sopenharmony_ci	(dwarf_extract_source_path): Pass sanitizable string param.
296da0c48c4Sopenharmony_ci
297da0c48c4Sopenharmony_ci2021-09-17  Noah Sanci  <nsanci@redhat.com>
298da0c48c4Sopenharmony_ci
299da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): curl_multi_perform
300da0c48c4Sopenharmony_ci	now occurs before checking if response headers have arrived.
301da0c48c4Sopenharmony_ci
302da0c48c4Sopenharmony_ci2021-09-14  Frank Ch. Eigler <fche@redhat.com>
303da0c48c4Sopenharmony_ci
304da0c48c4Sopenharmony_ci	PRPR28339
305da0c48c4Sopenharmony_ci	* debuginfod.cxx (waitq::fronters): New field.
306da0c48c4Sopenharmony_ci	(waitq::wait_idle): Respect it.
307da0c48c4Sopenharmony_ci	(waitq::done_front): New function.
308da0c48c4Sopenharmony_ci	(thread_main_scanner): Call it to match wait_front().
309da0c48c4Sopenharmony_ci
310da0c48c4Sopenharmony_ci2021-09-12  Mark Wielaard  <mark@klomp.org>
311da0c48c4Sopenharmony_ci
312da0c48c4Sopenharmony_ci	* debuginfod.cxx (libarchive_fdcache::lookup): Add endl after
313da0c48c4Sopenharmony_ci	obatched(clog) line.
314da0c48c4Sopenharmony_ci2021-09-13  Noah Sanci  <nsanci@redhat.com>
315da0c48c4Sopenharmony_ci
316da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Removed constant
317da0c48c4Sopenharmony_ci	operations from a loop. curl_free memory.
318da0c48c4Sopenharmony_ci
319da0c48c4Sopenharmony_ci2021-09-06  Dmitry V. Levin  <ldv@altlinux.org>
320da0c48c4Sopenharmony_ci
321da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_begin): Remove cast of calloc return
322da0c48c4Sopenharmony_ci	value.
323da0c48c4Sopenharmony_ci
324da0c48c4Sopenharmony_ci2021-08-28  Mark Wielaard  <mjw@redhat.com>
325da0c48c4Sopenharmony_ci
326da0c48c4Sopenharmony_ci	* debuginfod.cxx (parse_opt): Turn the -d arg ":memory:" into
327da0c48c4Sopenharmony_ci	"file::memory:?cache=shared" for the db_path.
328da0c48c4Sopenharmony_ci
329da0c48c4Sopenharmony_ci2021-08-20  Di Chen  <dichen@redhat.com>
330da0c48c4Sopenharmony_ci
331da0c48c4Sopenharmony_ci	* debuginfod.cxx (options): Add ARGP_KEY_FORWARDED_TTL_LIMIT.
332da0c48c4Sopenharmony_ci	(forwarded_ttl_limit): New static unsigned.
333da0c48c4Sopenharmony_ci	(parse_opt): Handle ARGP_KEY_FORWARDED_TTL_LIMIT.
334da0c48c4Sopenharmony_ci	(handle_buildid): Check forwarded_ttl_limit.
335da0c48c4Sopenharmony_ci	(main): Log forwarded ttl limit.
336da0c48c4Sopenharmony_ci
337da0c48c4Sopenharmony_ci2021-08-20  Saleem Abdulrasool  <abdulras@google.com>
338da0c48c4Sopenharmony_ci
339da0c48c4Sopenharmony_ci	* debuginfod.cxx: Remove error.h include.
340da0c48c4Sopenharmony_ci
341da0c48c4Sopenharmony_ci2021-08-19  Frank Ch. Eigler  <fche@redhat.com>
342da0c48c4Sopenharmony_ci
343da0c48c4Sopenharmony_ci	PR28249
344da0c48c4Sopenharmony_ci	* debuginfod.cxx (handler_cb): Fix after_you unique_set key
345da0c48c4Sopenharmony_ci	to the entire incoming URL.
346da0c48c4Sopenharmony_ci
347da0c48c4Sopenharmony_ci2021-08-02  Noah Sanci  <nsanci@redhat.com>
348da0c48c4Sopenharmony_ci
349da0c48c4Sopenharmony_ci	PR27277
350da0c48c4Sopenharmony_ci	* debuginfod-client.c (struct debuginfod_client): New field
351da0c48c4Sopenharmony_ci	winning_headers.
352da0c48c4Sopenharmony_ci	(struct handle_data): New field response_data, response_data_size.
353da0c48c4Sopenharmony_ci	(header_callback): Store received headers in response_data.
354da0c48c4Sopenharmony_ci	(debuginfod_query_server): Activate CURLOPT_HEADERFUNCTION.
355da0c48c4Sopenharmony_ci	Save winning response_data.
356da0c48c4Sopenharmony_ci	(debuginfod_end): free client winning headers.
357da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid_f_match): remove X-DEBUGINFOD-FILE
358da0c48c4Sopenharmony_ci	path. Add X-DEBUGINFOD-FILE and X-DEBUGINFOD-SIZE headers.
359da0c48c4Sopenharmony_ci	(handle_buildid_r_match): remove X-DEBUGINFOD-FILE path. Add
360da0c48c4Sopenharmony_ci	X-DEBUGINFOD-FILE, X-DEBUGINFOD-SIZE
361da0c48c4Sopenharmony_ci	headers, and X-ARCHIVE headers.
362da0c48c4Sopenharmony_ci
363da0c48c4Sopenharmony_ci2021-07-26  Noah Sanci  <nsanci@redhat.com>
364da0c48c4Sopenharmony_ci
365da0c48c4Sopenharmony_ci	PR27982
366da0c48c4Sopenharmony_ci	* debuginfod-client.c (globals): added default_maxsize and
367da0c48c4Sopenharmony_ci	default_maxtime.
368da0c48c4Sopenharmony_ci	(debuginfod_query_server): Added DEBUGINFOD_MAXSIZE and
369da0c48c4Sopenharmony_ci	DEBUGINFOD_MAXTIME envvar processing.
370da0c48c4Sopenharmony_ci	* debuginfod.cxx (handler_cb): If the requested file exceeds
371da0c48c4Sopenharmony_ci	maxsize return code 406.
372da0c48c4Sopenharmony_ci	* debuginfod.h.in: Added DEBUGINFOD_MAXSIZE_ENV_VAR and
373da0c48c4Sopenharmony_ci	DEBUGINFOD_MAXTIME_ENV_VAR.
374da0c48c4Sopenharmony_ci
375da0c48c4Sopenharmony_ci2021-07-16  Noah Sanci  <nsanci@redhat.com>
376da0c48c4Sopenharmony_ci
377da0c48c4Sopenharmony_ci	PR28034
378da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): % escape filename
379da0c48c4Sopenharmony_ci	so the completed url is processed properly.
380da0c48c4Sopenharmony_ci
381da0c48c4Sopenharmony_ci2021-06-28 Noah Sanci <nsanci@redhat.com>
382da0c48c4Sopenharmony_ci
383da0c48c4Sopenharmony_ci	PR25978
384da0c48c4Sopenharmony_ci	* debuginfod.cxx (options): Added --fdcache-prefetch-fds/mbs options.
385da0c48c4Sopenharmony_ci	(set_metric): Added a condition for fdcache_mintmp to ensure no
386da0c48c4Sopenharmony_ci	negative percentages or percentages larger than 100% are given.
387da0c48c4Sopenharmony_ci	(globals): Added fdcache_prefetch_mbs/fdcache_prefetch_fds.
388da0c48c4Sopenharmony_ci	(set_metrics): Differentiate between lru and prefetch metrics.
389da0c48c4Sopenharmony_ci	(intern): Added prefetch functionality for nuking preexisting copies
390da0c48c4Sopenharmony_ci	and incrementing prefetch metrics.
391da0c48c4Sopenharmony_ci	(lookup): Search prefetch cache and increment associated metrics. Upon
392da0c48c4Sopenharmony_ci	finding in the prefetch cache move the element to the lru cache.
393da0c48c4Sopenharmony_ci	(limit): Arguments updated. Update size of prefetch cache.
394da0c48c4Sopenharmony_ci	(main): Log prefetch and cache fds/mbs
395da0c48c4Sopenharmony_ci
396da0c48c4Sopenharmony_ci2021-07-06  Alice Zhang  <alizhang@redhat.com>
397da0c48c4Sopenharmony_ci
398da0c48c4Sopenharmony_ci	PR27531
399da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Retry failed queries
400da0c48c4Sopenharmony_ci	if error code is not ENOENT.
401da0c48c4Sopenharmony_ci	* debuginfod.h.in: Introduce DEBUGINFOD_RETRY_LIMIT_ENV_VAR.
402da0c48c4Sopenharmony_ci
403da0c48c4Sopenharmony_ci2021-07-01  Noah Sanci <nsanci@redhat.com>
404da0c48c4Sopenharmony_ci
405da0c48c4Sopenharmony_ci	PR27711
406da0c48c4Sopenharmony_ci	* debuginfod.cxx (options): Add --regex-groom, -r option.
407da0c48c4Sopenharmony_ci	(regex_groom): New static bool defaults to false.
408da0c48c4Sopenharmony_ci	(parse_opt): Handle 'r' option by setting regex_groom to true.
409da0c48c4Sopenharmony_ci	(groom): Introduce and use reg_include and reg_exclude.
410da0c48c4Sopenharmony_ci
411da0c48c4Sopenharmony_ci2021-07-09  Noah Sanci  <nsanci@redhat.com>
412da0c48c4Sopenharmony_ci
413da0c48c4Sopenharmony_ci	PR27983
414da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): As full-length
415da0c48c4Sopenharmony_ci	urls are generated with standardized formats, ignore duplicates.
416da0c48c4Sopenharmony_ci	Created out1 and changed out2 error gotos. Updated url creation print
417da0c48c4Sopenharmony_ci	statements.
418da0c48c4Sopenharmony_ci	(globals): Removed url_delim_char, as it was no longer used.
419da0c48c4Sopenharmony_ci
420da0c48c4Sopenharmony_ci2021-06-18  Mark Wielaard  <mark@klomp.org>
421da0c48c4Sopenharmony_ci
422da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_begin): Don't use client if
423da0c48c4Sopenharmony_ci	calloc call failed.
424da0c48c4Sopenharmony_ci
425da0c48c4Sopenharmony_ci2021-06-03  Frank Ch. Eigler <fche@redhat.com>
426da0c48c4Sopenharmony_ci
427da0c48c4Sopenharmony_ci	PR27863
428da0c48c4Sopenharmony_ci	* debuginfod.cxx (unique_set, unique_set_reserver): New classes.
429da0c48c4Sopenharmony_ci	(handler_cb): Use them to implement "after-you" queueing.
430da0c48c4Sopenharmony_ci
431da0c48c4Sopenharmony_ci2021-05-14  Frank Ch. Eigler <fche@redhat.com>
432da0c48c4Sopenharmony_ci
433da0c48c4Sopenharmony_ci	PR27859
434da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_client): Retain only
435da0c48c4Sopenharmony_ci	long-lived multi handle from PR27701 work.
436da0c48c4Sopenharmony_ci	(debuginfo_begin,debuginfod_end): ctor/dtor for surviving field only.
437da0c48c4Sopenharmony_ci	(debuginfod_query_server): Rework to reuse multi handle only.
438da0c48c4Sopenharmony_ci
439da0c48c4Sopenharmony_ci2021-04-19  Martin Liska  <mliska@suse.cz>
440da0c48c4Sopenharmony_ci
441da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Use startswith.
442da0c48c4Sopenharmony_ci	(debuginfod_add_http_header): Likewise.
443da0c48c4Sopenharmony_ci	* debuginfod.cxx: Likewise.
444da0c48c4Sopenharmony_ci
445da0c48c4Sopenharmony_ci2021-05-04  Alice Zhang <alizhang@redhat.com>
446da0c48c4Sopenharmony_ci
447da0c48c4Sopenharmony_ci	* debuginfod-client.c (cache_miss_default_s): New static time_t,
448da0c48c4Sopenharmony_ci	defaults to 600 (10 minutes).
449da0c48c4Sopenharmony_ci	(cache_miss_filename): New static char pointer.
450da0c48c4Sopenharmony_ci	(debuginfod_config_cache): New static function.
451da0c48c4Sopenharmony_ci	(debuginfod_clean_cache): Use debuginfod_config_cache for
452da0c48c4Sopenharmony_ci	interval_path and max_unused_path.
453da0c48c4Sopenharmony_ci	(debuginfod_query_server): Check whether target_cache_path exists
454da0c48c4Sopenharmony_ci	as negative cache file and create target_cache_path when the server
455da0c48c4Sopenharmony_ci	returns ENOENT. Check cache_miss_path fir cache miss time.
456da0c48c4Sopenharmony_ci
457da0c48c4Sopenharmony_ci2021-04-26  Frank Ch. Eigler <fche@redhat.com>
458da0c48c4Sopenharmony_ci
459da0c48c4Sopenharmony_ci	PR27571
460da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Chmod 0400 files
461da0c48c4Sopenharmony_ci	delivered into the cache to prevent accidental modification.
462da0c48c4Sopenharmony_ci
463da0c48c4Sopenharmony_ci2021-04-26  Frank Ch. Eigler <fche@redhat.com>
464da0c48c4Sopenharmony_ci
465da0c48c4Sopenharmony_ci	PR26125
466da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_clean_cache): For directory
467da0c48c4Sopenharmony_ci	rmdir, check mtime first.
468da0c48c4Sopenharmony_ci	(debuginfod_query_server): Try mkdir / mkstemp up to twice,
469da0c48c4Sopenharmony_ci	in case of race.
470da0c48c4Sopenharmony_ci
471da0c48c4Sopenharmony_ci2021-04-23  Frank Ch. Eigler <fche@redhat.com>
472da0c48c4Sopenharmony_ci
473da0c48c4Sopenharmony_ci	PR27701
474da0c48c4Sopenharmony_ci	* debuginfod-client.c (struct debuginfod_client): Add long-lived
475da0c48c4Sopenharmony_ci	CURL easy and multi handles.
476da0c48c4Sopenharmony_ci	(debuginfo_begin,debuginfod_end): ctor/dtor for these.
477da0c48c4Sopenharmony_ci	(debuginfod_query_server): Rework to reuse easy & multi handles.
478da0c48c4Sopenharmony_ci	(*_envvar): Just use the DEBUGINFOD_*_ENV_VAR directly instead.
479da0c48c4Sopenharmony_ci
480da0c48c4Sopenharmony_ci	* debuginfod.cxx (dc_pool): New pile of reusable debuginfod_client
481da0c48c4Sopenharmony_ci	objects for upstream federation connections.
482da0c48c4Sopenharmony_ci	(debuginfod_pool_{begin,end,groom}): New functions.
483da0c48c4Sopenharmony_ci	(handle_buildid): Use them.
484da0c48c4Sopenharmony_ci	(handler_cb): Fix keep-alive given libmicrohttpd convention of multiple
485da0c48c4Sopenharmony_ci	callbacks.
486da0c48c4Sopenharmony_ci
487da0c48c4Sopenharmony_ci2021-04-15  Frank Ch. Eigler <fche@redhat.com>
488da0c48c4Sopenharmony_ci
489da0c48c4Sopenharmony_ci	* debuginfod.cxx (groom): Only update database stats once.
490da0c48c4Sopenharmony_ci
491da0c48c4Sopenharmony_ci2021-04-15  Frank Ch. Eigler <fche@redhat.com>
492da0c48c4Sopenharmony_ci
493da0c48c4Sopenharmony_ci	* debuginfod.cxx (elf_classify): Recognize symtab-only stripped files
494da0c48c4Sopenharmony_ci	like fedora's libicudata as debuginfo files.
495da0c48c4Sopenharmony_ci
496da0c48c4Sopenharmony_ci2021-03-30  Frank Ch. Eigler <fche@redhat.com>
497da0c48c4Sopenharmony_ci
498da0c48c4Sopenharmony_ci	* debuginfod.cxx (main): Set child thread names.
499da0c48c4Sopenharmony_ci
500da0c48c4Sopenharmony_ci2021-03-07  Timm Bäder <tbaeder@redhat.com>
501da0c48c4Sopenharmony_ci
502da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Tweak
503da0c48c4Sopenharmony_ci	double/long clamping arithmetic to avoid UB and warnings.
504da0c48c4Sopenharmony_ci
505da0c48c4Sopenharmony_ci2021-02-25  Frank Ch. Eigler <fche@redhat.com>
506da0c48c4Sopenharmony_ci
507da0c48c4Sopenharmony_ci	* debuginfod.cxx (handler_cb): Filter webapi for bad
508da0c48c4Sopenharmony_ci	artifacttype keywords early for metric hygiene.
509da0c48c4Sopenharmony_ci
510da0c48c4Sopenharmony_ci2021-02-14  Frank Ch. Eigler <fche@redhat.com>
511da0c48c4Sopenharmony_ci
512da0c48c4Sopenharmony_ci	* debuginfod.cxx (main -U): Use bsdtar unconditionally.  Also map
513da0c48c4Sopenharmony_ci	the debian-compatible .ipk (openembedded distro family) to same.
514da0c48c4Sopenharmony_ci
515da0c48c4Sopenharmony_ci2021-02-04  Frank Ch. Eigler <fche@redhat.com>
516da0c48c4Sopenharmony_ci
517da0c48c4Sopenharmony_ci	PR27092 low-memory handling
518da0c48c4Sopenharmony_ci	* debuginfod.cxx (fdcache_mintmp): New parameter, with cmd-line option.
519da0c48c4Sopenharmony_ci	(parse_opt): Parse it.
520da0c48c4Sopenharmony_ci	(main): Default it.
521da0c48c4Sopenharmony_ci	(statfs_free_enough_p): New function.
522da0c48c4Sopenharmony_ci	(libarchive_fdcache::*): Call it to trigger emergency fdcache flush.
523da0c48c4Sopenharmony_ci	(thread_main_scanner): Call it to report filesystem fullness metrics.
524da0c48c4Sopenharmony_ci	(groom): Ditto.
525da0c48c4Sopenharmony_ci	(set/add_metric): Take double rather than int64_t values.
526da0c48c4Sopenharmony_ci	(archive_exception): Propagate suberror to metric label.
527da0c48c4Sopenharmony_ci	(main): Detect pthread creation fatal errors properly.
528da0c48c4Sopenharmony_ci
529da0c48c4Sopenharmony_ci2021-02-02  Frank Ch. Eigler <fche@redhat.com>
530da0c48c4Sopenharmony_ci
531da0c48c4Sopenharmony_ci	PR27323
532da0c48c4Sopenharmony_ci	* debuginfod.cxx (dbq): New read-only database connection for queries
533da0c48c4Sopenharmony_ci	only.
534da0c48c4Sopenharmony_ci	(signal_handler): Interrupt it.
535da0c48c4Sopenharmony_ci	(main): Open / close it.
536da0c48c4Sopenharmony_ci	(handle_buildid): Use it for webapi queries only.
537da0c48c4Sopenharmony_ci	(database_stats_report): Make more interruptible.  Report sqlite3
538da0c48c4Sopenharmony_ci	operation times to the prometheus metrics.
539da0c48c4Sopenharmony_ci	(groom): Make more interruptible.
540da0c48c4Sopenharmony_ci	(thread_main_fts_source_paths, thread_main_groom): Ensure
541da0c48c4Sopenharmony_ci	state/progress metrics are fresh even in case of exceptions.
542da0c48c4Sopenharmony_ci
543da0c48c4Sopenharmony_ci2020-12-20  Dmitry V. Levin  <ldv@altlinux.org>
544da0c48c4Sopenharmony_ci
545da0c48c4Sopenharmony_ci	* .gitignore: New file.
546da0c48c4Sopenharmony_ci
547da0c48c4Sopenharmony_ci2020-12-12  Dmitry V. Levin  <ldv@altlinux.org>
548da0c48c4Sopenharmony_ci
549da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Fix spelling typos in
550da0c48c4Sopenharmony_ci	comments.
551da0c48c4Sopenharmony_ci	* debuginfod.cxx: Likewise.
552da0c48c4Sopenharmony_ci	(parse_opt): Fix spelling typos in error diagnostics.
553da0c48c4Sopenharmony_ci
554da0c48c4Sopenharmony_ci2020-12-08  Dmitry V. Levin  <ldv@altlinux.org>
555da0c48c4Sopenharmony_ci
556da0c48c4Sopenharmony_ci	* Makefile.am [LIBDEBUGINFOD]: Create libdebuginfod.so.1 first, turn
557da0c48c4Sopenharmony_ci	libdebuginfod.so into symlink.
558da0c48c4Sopenharmony_ci
559da0c48c4Sopenharmony_ci2020-11-30  Dmitry V. Levin  <ldv@altlinux.org>
560da0c48c4Sopenharmony_ci
561da0c48c4Sopenharmony_ci	* Makefile.am (libdebuginfod.so): Replace $@.$(VERSION) with
562da0c48c4Sopenharmony_ci	$(LIBDEBUGINFOD_SONAME).
563da0c48c4Sopenharmony_ci	(install, uninstall, MOSTLYCLEANFILES): Replace
564da0c48c4Sopenharmony_ci	libdebuginfod.so.$(VERSION) with $(LIBDEBUGINFOD_SONAME).
565da0c48c4Sopenharmony_ci	(VERSION): Remove.
566da0c48c4Sopenharmony_ci	* debuginfod.h: Rename to ...
567da0c48c4Sopenharmony_ci	* debuginfod.h.in ... this.
568da0c48c4Sopenharmony_ci	(DEBUGINFOD_SONAME): New macro.
569da0c48c4Sopenharmony_ci
570da0c48c4Sopenharmony_ci2020-11-30  Dmitry V. Levin  <ldv@altlinux.org>
571da0c48c4Sopenharmony_ci
572da0c48c4Sopenharmony_ci	* Makefile.am (libdebuginfod.so$(EXEEXT)): Drop $(EXEEXT) suffix.
573da0c48c4Sopenharmony_ci
574da0c48c4Sopenharmony_ci2020-11-25  Frank Ch. Eigler  <fche@redhat.com>
575da0c48c4Sopenharmony_ci
576da0c48c4Sopenharmony_ci	* debuginfod.cxx (step_ok_done): Correct typo in prom metric label.
577da0c48c4Sopenharmony_ci
578da0c48c4Sopenharmony_ci2020-11-25  Frank Ch. Eigler  <fche@redhat.com>
579da0c48c4Sopenharmony_ci
580da0c48c4Sopenharmony_ci	* debuginfod.cxx (tmp_ms_metric): Switch from gettimeofday to
581da0c48c4Sopenharmony_ci	clock_gettime(CLOCK_MONOTONIC) for time-interval measurements.
582da0c48c4Sopenharmony_ci	(handler_cb, scan_source_paths, groom): Ditto.
583da0c48c4Sopenharmony_ci
584da0c48c4Sopenharmony_ci2020-11-23  Frank Ch. Eigler  <fche@redhat.com>
585da0c48c4Sopenharmony_ci
586da0c48c4Sopenharmony_ci	* debuginfod.cxx (tmp_ms_metric): New class for RAII timing metrics.
587da0c48c4Sopenharmony_ci	(sqlite_ps::reset, step*): Call it to track sqlite3 performance.
588da0c48c4Sopenharmony_ci	(sqlite_exception ctor): Increment sqlite3 error_count.
589da0c48c4Sopenharmony_ci
590da0c48c4Sopenharmony_ci2020-11-23  Mark Wielaard  <mark@klomp.org>
591da0c48c4Sopenharmony_ci
592da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Initialize
593da0c48c4Sopenharmony_ci	struct handle_data errbuf to the empty string.
594da0c48c4Sopenharmony_ci
595da0c48c4Sopenharmony_ci2020-11-11  Mark Wielaard  <mark@klomp.org>
596da0c48c4Sopenharmony_ci
597da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_set_verbose_fd): New function.
598da0c48c4Sopenharmony_ci	(struct debuginfod_client): Add verbose_fd.
599da0c48c4Sopenharmony_ci	(struct handle_data): Add errbuf.
600da0c48c4Sopenharmony_ci	(debuginfod_query_server): Produce verbose output when
601da0c48c4Sopenharmony_ci	debuginfod_client verbose_fd is set. Only clear old data and set
602da0c48c4Sopenharmony_ci	default_headers when any work is done. Always goto out when setting
603da0c48c4Sopenharmony_ci	rc to an error value. Use CURLOPT_ERRORBUFFER to get more error
604da0c48c4Sopenharmony_ci	output when verbose output is requested.
605da0c48c4Sopenharmony_ci	* debuginfod.h (DEBUGINFOD_VERBOSE_ENV_VAR): New.
606da0c48c4Sopenharmony_ci	(debuginfod_set_verbose_fd): Added.
607da0c48c4Sopenharmony_ci	* debuginfod-find.c (parse_opt): Set debuginfod_set_verbose_fd on -v.
608da0c48c4Sopenharmony_ci	* bdebuginfod.map (ELFUTILS_0.183): New section, add
609da0c48c4Sopenharmony_ci	debuginfod_set_verbose_fd.
610da0c48c4Sopenharmony_ci
611da0c48c4Sopenharmony_ci2020-11-21  Mark Wielaard  <mark@klomp.org>
612da0c48c4Sopenharmony_ci
613da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_root): New function.
614da0c48c4Sopenharmony_ci	(handler_cb): Handle "/" and report url1 in webapi error.
615da0c48c4Sopenharmony_ci
616da0c48c4Sopenharmony_ci2020-11-11  Mark Wielaard  <mark@klomp.org>
617da0c48c4Sopenharmony_ci
618da0c48c4Sopenharmony_ci	* debuginfod-find.c (progressfn): Use clock_gettime to print Progress
619da0c48c4Sopenharmony_ci	at most 5 times a second.
620da0c48c4Sopenharmony_ci
621da0c48c4Sopenharmony_ci2020-11-19  Frank Ch. Eigler  <fche@redhat.com>
622da0c48c4Sopenharmony_ci
623da0c48c4Sopenharmony_ci	* debuginfod.cxx (tmp_inc_metric): New class.
624da0c48c4Sopenharmony_ci	(handler_cb): Use it to track webapi operations.
625da0c48c4Sopenharmony_ci
626da0c48c4Sopenharmony_ci2020-11-01  Érico N. Rolim  <erico.erc@gmail.com>
627da0c48c4Sopenharmony_ci
628da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_init_cache): Use ACCESSPERMS for
629da0c48c4Sopenharmony_ci	mkdir, DEFFILEMODE for open with O_CREAT.
630da0c48c4Sopenharmony_ci
631da0c48c4Sopenharmony_ci2020-11-01  Érico N. Rolim  <erico.erc@gmail.com>
632da0c48c4Sopenharmony_ci
633da0c48c4Sopenharmony_ci	* debuginfod.cxx: include libintl.h.
634da0c48c4Sopenharmony_ci
635da0c48c4Sopenharmony_ci2020-11-01  Érico N. Rolim  <erico.erc@gmail.com>
636da0c48c4Sopenharmony_ci
637da0c48c4Sopenharmony_ci	* Makefile.am (debuginfod_LDADD): Add argp_LDADD and fts_LIBS.
638da0c48c4Sopenharmony_ci	(debuginfod_find_LDADD): Likewise.
639da0c48c4Sopenharmony_ci	(libdebuginfod_so_LDLIBS): Add fts_LIBS.
640da0c48c4Sopenharmony_ci
641da0c48c4Sopenharmony_ci2020-10-31  Frank Ch. Eigler  <fche@redhat.com>
642da0c48c4Sopenharmony_ci
643da0c48c4Sopenharmony_ci	* debuginfod.cxx (scan_source_file, scan_archive_file): Add new scanned_bytes_total,
644da0c48c4Sopenharmony_ci	scanned_files_total metrics.
645da0c48c4Sopenharmony_ci	(archive_classify): Exit early if interrupted.
646da0c48c4Sopenharmony_ci	(scan_source_paths): Perform realpath/regex checks only on FTS_F files.
647da0c48c4Sopenharmony_ci	Tweak metrics.
648da0c48c4Sopenharmony_ci
649da0c48c4Sopenharmony_ci2020-10-30  Frank Ch. Eigler  <fche@redhat.com>
650da0c48c4Sopenharmony_ci
651da0c48c4Sopenharmony_ci	PR26775 cont'd.
652da0c48c4Sopenharmony_ci	* debuginfod.cxx (thread_main_scanner): Ensure control doesn't
653da0c48c4Sopenharmony_ci	leave infinite loop until program exit, even if SIGUSR2.
654da0c48c4Sopenharmony_ci	(scan_source_paths): Have traverser clean scanq on
655da0c48c4Sopenharmony_ci	SIGUSR2.  Emit additional traversed_total metrics.
656da0c48c4Sopenharmony_ci	(groom): Emit additional groomed_total metrics.
657da0c48c4Sopenharmony_ci	(thread_main_groom): Restore previous thread_work_total
658da0c48c4Sopenharmony_ci	metric.
659da0c48c4Sopenharmony_ci
660da0c48c4Sopenharmony_ci2020-10-29  Frank Ch. Eigler  <fche@redhat.com>
661da0c48c4Sopenharmony_ci
662da0c48c4Sopenharmony_ci	PR26775
663da0c48c4Sopenharmony_ci	* debuginfod.cxx (forced_*_count): Make these global.
664da0c48c4Sopenharmony_ci	(runq::clear): New function.
665da0c48c4Sopenharmony_ci	(thread_main_scanner): Check for pending SIGUSR2; interrupt.
666da0c48c4Sopenharmony_ci	(scan_source_paths): Check for pending SIGUSR2; interrupt.
667da0c48c4Sopenharmony_ci	(groom): Report prometheus stats before groom also.  Check for
668da0c48c4Sopenharmony_ci	pending SIGUSR1; interrupt.  Increment thread_work_total for
669da0c48c4Sopenharmony_ci	each file scanned, not the entire cycle.
670da0c48c4Sopenharmony_ci
671da0c48c4Sopenharmony_ci2020-10-29  Frank Ch. Eigler  <fche@redhat.com>
672da0c48c4Sopenharmony_ci
673da0c48c4Sopenharmony_ci	PR26810
674da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid_*_match): Throw exceptions for
675da0c48c4Sopenharmony_ci	more lower level libc errors.
676da0c48c4Sopenharmony_ci	(handle_buildid_match): Catch & report exceptions but return 0
677da0c48c4Sopenharmony_ci	for continued iteration in the caller.
678da0c48c4Sopenharmony_ci
679da0c48c4Sopenharmony_ci2020-10-25  Mark Wielaard  <mark@klomp.org>
680da0c48c4Sopenharmony_ci
681da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Translate
682da0c48c4Sopenharmony_ci	CURLE_PEER_FAILED_VERIFICATION to ECONNREFUSED.
683da0c48c4Sopenharmony_ci
684da0c48c4Sopenharmony_ci2020-10-20  Frank Ch. Eigler  <fche@redhat.com>
685da0c48c4Sopenharmony_ci
686da0c48c4Sopenharmony_ci	PR26756: more prometheus metrics
687da0c48c4Sopenharmony_ci	* debuginfod.cxx (*_exception): Add counters for error occurrences.
688da0c48c4Sopenharmony_ci	(fdcache::*): Add counters for fdcache operations and status.
689da0c48c4Sopenharmony_ci	(fdcache::set_metric): New fn for overall stat counts.
690da0c48c4Sopenharmony_ci	(fdcache::limit): ... allow metric-less use from dtors.
691da0c48c4Sopenharmony_ci
692da0c48c4Sopenharmony_ci2020-10-20  Frank Ch. Eigler  <fche@redhat.com>
693da0c48c4Sopenharmony_ci
694da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid*): Add a parameter for detecting
695da0c48c4Sopenharmony_ci	internally-originated lookups for dwz resolution.
696da0c48c4Sopenharmony_ci
697da0c48c4Sopenharmony_ci2020-09-18  Frank Ch. Eigler <fche@redhat.com>
698da0c48c4Sopenharmony_ci
699da0c48c4Sopenharmony_ci	* debuginfod.cxx (scan_source_file, archive_classify): Store only
700da0c48c4Sopenharmony_ci	canonicalized file names in sdef & sref records in the database.
701da0c48c4Sopenharmony_ci
702da0c48c4Sopenharmony_ci2020-09-08  Mark Wielaard  <mark@klomp.org>
703da0c48c4Sopenharmony_ci
704da0c48c4Sopenharmony_ci	* Makefile.am (BUILD_STATIC): Include libcurl_LIBS in libdebuginfod
705da0c48c4Sopenharmony_ci	when NOT DUMMY_LIBDEBUGINFOD.
706da0c48c4Sopenharmony_ci
707da0c48c4Sopenharmony_ci2020-09-16  Mark Wielaard  <mark@klomp.org>
708da0c48c4Sopenharmony_ci
709da0c48c4Sopenharmony_ci	* debuginfod-find.c: Fix license block comment.
710da0c48c4Sopenharmony_ci
711da0c48c4Sopenharmony_ci2020-09-15  Mark Wielaard  <mark@klomp.org>
712da0c48c4Sopenharmony_ci
713da0c48c4Sopenharmony_ci	* debuginfod-find.c (main): Use dwelf_elf_begin.
714da0c48c4Sopenharmony_ci
715da0c48c4Sopenharmony_ci2020-07-03  Alice Zhang <alizhang@redhat.com>
716da0c48c4Sopenharmony_ci
717da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Use strncasecmp
718da0c48c4Sopenharmony_ci	to compare effective_url. Try CURLINFO_SCHEME as fallback.
719da0c48c4Sopenharmony_ci
720da0c48c4Sopenharmony_ci2020-06-19  Mark Wielaard  <mark@klomp.org>
721da0c48c4Sopenharmony_ci
722da0c48c4Sopenharmony_ci	* Makefile.am (bin_PROGRAMS): Guard with DEBUGINFOD and
723da0c48c4Sopenharmony_ci	LIBDEBUGINFOD.
724da0c48c4Sopenharmony_ci	(debuginfod_LDADD): Remove libcurl.
725da0c48c4Sopenharmony_ci	(libdebuginfod): When static and DUMMY_LIBDEBUGINFO remove libcurl.
726da0c48c4Sopenharmony_ci	(noinst_LIBRARIES): Guard with LIBDEBUGINFOD.
727da0c48c4Sopenharmony_ci	(AM_CPPFLAGS): Add -Wno-unused-parameter when DUMMY_LIBDEBUGINFOD.
728da0c48c4Sopenharmony_ci	(pkginclude_headers): Guard with LIBDEBUGINFOD
729da0c48c4Sopenharmony_ci	(libdebuginfod_so_LIBS): Likewise.
730da0c48c4Sopenharmony_ci	(+libdebuginfod_so_LDLIBS): Likewise.
731da0c48c4Sopenharmony_ci	(install): Likewise.
732da0c48c4Sopenharmony_ci	(uninstall): Likewise.
733da0c48c4Sopenharmony_ci	* debuginfod-client.c: Include dummy functions when
734da0c48c4Sopenharmony_ci	DUMMY_LIBDEBUGINFOD.
735da0c48c4Sopenharmony_ci	* debuginfod.cxx: Remove curl.h include.
736da0c48c4Sopenharmony_ci
737da0c48c4Sopenharmony_ci2020-06-16  Mark Wielaard  <mark@klomp.org>
738da0c48c4Sopenharmony_ci
739da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Check malloc.
740da0c48c4Sopenharmony_ci	Move curl_multi_init call before handle_data malloc call.
741da0c48c4Sopenharmony_ci
742da0c48c4Sopenharmony_ci2020-06-16  Mark Wielaard  <mark@klomp.org>
743da0c48c4Sopenharmony_ci
744da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Replace sizeof
745da0c48c4Sopenharmony_ci	build_id_bytes check with strlen build_id check.
746da0c48c4Sopenharmony_ci
747da0c48c4Sopenharmony_ci2020-06-16  Mark Wielaard  <mark@klomp.org>
748da0c48c4Sopenharmony_ci
749da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Increase suffix
750da0c48c4Sopenharmony_ci	array and prepare having to escape 1 character with 2.
751da0c48c4Sopenharmony_ci
752da0c48c4Sopenharmony_ci2020-06-16  Mark Wielaard  <mark@klomp.org>
753da0c48c4Sopenharmony_ci
754da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_clean_cache): Handle failing
755da0c48c4Sopenharmony_ci	fopen (interval_path).
756da0c48c4Sopenharmony_ci
757da0c48c4Sopenharmony_ci2020-03-29  Mark Wielaard  <mark@klomp.org>
758da0c48c4Sopenharmony_ci
759da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_add_http_header): Check header
760da0c48c4Sopenharmony_ci	contains precisely one colon that isn't the first or last char.
761da0c48c4Sopenharmony_ci
762da0c48c4Sopenharmony_ci2020-03-29  Frank Ch. Eigler  <fche@redhat.com>
763da0c48c4Sopenharmony_ci
764da0c48c4Sopenharmony_ci	* debuginfod-client.c (struct debuginfod_client): Add a flag field
765da0c48c4Sopenharmony_ci	for progressfn printing.
766da0c48c4Sopenharmony_ci	(default_progressfn): Set it if printing \rsomething.
767da0c48c4Sopenharmony_ci	(debuginfod_end): Terminate with \n if flag set, i.e., only if the
768da0c48c4Sopenharmony_ci	default_progressfn was actually called.
769da0c48c4Sopenharmony_ci
770da0c48c4Sopenharmony_ci2020-03-27  Mark Wielaard  <mark@klomp.org>
771da0c48c4Sopenharmony_ci
772da0c48c4Sopenharmony_ci	* debuginfod.cxx (parse_opt): Check port is not zero.
773da0c48c4Sopenharmony_ci
774da0c48c4Sopenharmony_ci2020-03-28  Frank Ch. Eigler  <fche@redhat.com>
775da0c48c4Sopenharmony_ci
776da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid_r_match): During archive
777da0c48c4Sopenharmony_ci	extraction / fdcache prefetching, set the mtime of each
778da0c48c4Sopenharmony_ci	file in the cache.
779da0c48c4Sopenharmony_ci
780da0c48c4Sopenharmony_ci2020-03-27  Frank Ch. Eigler  <fche@redhat.com>
781da0c48c4Sopenharmony_ci
782da0c48c4Sopenharmony_ci	* debuginfod-find.c (main): Extract buildid from /binary/ if
783da0c48c4Sopenharmony_ci	given instead of hex string.
784da0c48c4Sopenharmony_ci	* Makefile.am: Add elfutils library prereqs for debuginfod-find.
785da0c48c4Sopenharmony_ci
786da0c48c4Sopenharmony_ci2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
787da0c48c4Sopenharmony_ci
788da0c48c4Sopenharmony_ci	* debuginfod.h, libdebuginfod.map: New functions for _add_url_header.
789da0c48c4Sopenharmony_ci	* debuginfod-client.c (struct debuginfod_client): Add headers fields.
790da0c48c4Sopenharmony_ci	(debuginfod_add_http_header): New client api to add outgoing headers.
791da0c48c4Sopenharmony_ci	(add_default_headers): Renamed from add_extra_headers, skip if flag.
792da0c48c4Sopenharmony_ci	(debuginfod_query_server): Pass accumulated headers to libcurl.
793da0c48c4Sopenharmony_ci	(debuginfod_end): Clean accumulated headers.
794da0c48c4Sopenharmony_ci	(debuginfod_find_*): Add default headers at this point.
795da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid): Add conn pointer.  Use it to relay
796da0c48c4Sopenharmony_ci	incoming UA and XFF headers to federated upstream debuginfods.
797da0c48c4Sopenharmony_ci
798da0c48c4Sopenharmony_ci2020-03-26  Frank Ch. Eigler <fche@redhat.com>
799da0c48c4Sopenharmony_ci
800da0c48c4Sopenharmony_ci	* debuginfod.cxx (handler_cb): Export two families of metrics for
801da0c48c4Sopenharmony_ci	prometheus traffic analysis: response times and data amounts.
802da0c48c4Sopenharmony_ci
803da0c48c4Sopenharmony_ci2020-03-26  Frank Ch. Eigler <fche@redhat.com>
804da0c48c4Sopenharmony_ci
805da0c48c4Sopenharmony_ci	* debuginfod.cxx (parse_opt): For -U, prefer dpkg-deb
806da0c48c4Sopenharmony_ci	after all if access(3)-able, fallback to bsdtar.
807da0c48c4Sopenharmony_ci
808da0c48c4Sopenharmony_ci2020-03-25  Frank Ch. Eigler <fche@redhat.com>
809da0c48c4Sopenharmony_ci
810da0c48c4Sopenharmony_ci	* debuginfod.cxx (parse_opt): Associate a bsdtar subshell with
811da0c48c4Sopenharmony_ci	the .deb & .ddeb extensions, instead of dpkg-deb.
812da0c48c4Sopenharmony_ci
813da0c48c4Sopenharmony_ci2020-03-26  Frank Ch. Eigler  <fche@redhat.com>
814da0c48c4Sopenharmony_ci
815da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Don't
816da0c48c4Sopenharmony_ci	set CURLOPT_PATH_AS_IS on old curl.  Mostly harmless.
817da0c48c4Sopenharmony_ci
818da0c48c4Sopenharmony_ci2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
819da0c48c4Sopenharmony_ci
820da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Set
821da0c48c4Sopenharmony_ci	CURLOPT_PATH_AS_IS, to propagate file names verbatim.
822da0c48c4Sopenharmony_ci	* debuginfod.cxx (canon_pathname): Implement RFC3986
823da0c48c4Sopenharmony_ci	style pathname canonicalization.
824da0c48c4Sopenharmony_ci	(handle_buildid): Canonicalize incoming webapi source
825da0c48c4Sopenharmony_ci	paths, accept either one.
826da0c48c4Sopenharmony_ci	(scan_source_file, archive_classify): Store both
827da0c48c4Sopenharmony_ci	original and canonicalized dwarf-source file names.
828da0c48c4Sopenharmony_ci
829da0c48c4Sopenharmony_ci2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
830da0c48c4Sopenharmony_ci
831da0c48c4Sopenharmony_ci	* debuginfod.cxx (handle_buildid): In case of federated fallback
832da0c48c4Sopenharmony_ci	queries, handle errors analogously to local ENOENT/404.
833da0c48c4Sopenharmony_ci	(handle_metrics): Return a size-of-response value.
834da0c48c4Sopenharmony_ci	(handler_cb): Add code to time entire application-side processing
835da0c48c4Sopenharmony_ci	stage + response sizes + http codes, so as to emit a complete
836da0c48c4Sopenharmony_ci	httpd-flavoured log line for each webapi request.
837da0c48c4Sopenharmony_ci
838da0c48c4Sopenharmony_ci2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
839da0c48c4Sopenharmony_ci
840da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Print the
841da0c48c4Sopenharmony_ci	default_progressfn terminating \n message only if that progressfn
842da0c48c4Sopenharmony_ci	is actually set.
843da0c48c4Sopenharmony_ci
844da0c48c4Sopenharmony_ci2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
845da0c48c4Sopenharmony_ci
846da0c48c4Sopenharmony_ci	* debuginfod-find.c (main): Correct /source full-pathness check for
847da0c48c4Sopenharmony_ci	"debuginfod-find -v source deadbeef /pathname" case.
848da0c48c4Sopenharmony_ci
849da0c48c4Sopenharmony_ci2020-03-22  Frank Ch. Eigler  <fche@redhat.com>
850da0c48c4Sopenharmony_ci
851da0c48c4Sopenharmony_ci	* debuginfod-client.c (struct debuginfod_client): Add url field.
852da0c48c4Sopenharmony_ci	(struct handle_data): Add client field as backpointer.
853da0c48c4Sopenharmony_ci	(debuginfod_write_callback): Compute & save URL.
854da0c48c4Sopenharmony_ci	(default_progressfn): Print front pieces of the URL.
855da0c48c4Sopenharmony_ci	(debuginfod_query_server): Clear URL and cleanup after progressfn.
856da0c48c4Sopenharmony_ci	* debuginfod-find.c (main): Print URL at transfer conclusion.
857da0c48c4Sopenharmony_ci
858da0c48c4Sopenharmony_ci2020-03-22  Frank Ch. Eigler  <fche@redhat.com>
859da0c48c4Sopenharmony_ci
860da0c48c4Sopenharmony_ci	* debuginfod.h, libdebuginfod.map: New functions for _get/set_user().
861da0c48c4Sopenharmony_ci	* debuginfod-client.c: Implement them.
862da0c48c4Sopenharmony_ci	* debuginfod-find.c: Include a token call just for testing them.
863da0c48c4Sopenharmony_ci
864da0c48c4Sopenharmony_ci2020-03-03  Aaron Merey  <amerey@redhat.com>
865da0c48c4Sopenharmony_ci
866da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Update
867da0c48c4Sopenharmony_ci	cache_path even when new default path already exists.
868da0c48c4Sopenharmony_ci
869da0c48c4Sopenharmony_ci2020-02-27  Aaron Merey  <amerey@redhat.com>
870da0c48c4Sopenharmony_ci
871da0c48c4Sopenharmony_ci	* debuginfod-client.c (xalloc_str): New macro. Call
872da0c48c4Sopenharmony_ci	asprintf with error checking.
873da0c48c4Sopenharmony_ci	(debuginfod_query_server): Use XDG_CACHE_HOME as a default
874da0c48c4Sopenharmony_ci	cache location if it is set. Replace snprintf with xalloc_str.
875da0c48c4Sopenharmony_ci
876da0c48c4Sopenharmony_ci2020-02-26  Konrad Kleine <kkleine@redhat.com>
877da0c48c4Sopenharmony_ci
878da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Handle curl's
879da0c48c4Sopenharmony_ci	response code correctly when DEBUGINFOD_URLS begin with file://
880da0c48c4Sopenharmony_ci
881da0c48c4Sopenharmony_ci2020-02-25  Frank Ch. Eigler  <fche@redhat.com>
882da0c48c4Sopenharmony_ci
883da0c48c4Sopenharmony_ci	* debuginfod.cxx (parse_opt): Treat -R as if -Z.rpm .
884da0c48c4Sopenharmony_ci
885da0c48c4Sopenharmony_ci2020-02-25  Frank Ch. Eigler  <fche@redhat.com>
886da0c48c4Sopenharmony_ci
887da0c48c4Sopenharmony_ci	* debuginfod.cxx (fdcache_prefetch): New parameter.
888da0c48c4Sopenharmony_ci	(parse_opt): Parse it.
889da0c48c4Sopenharmony_ci	(main): Default it.
890da0c48c4Sopenharmony_ci	(fdcache::fd_size_mb): Change to double for accuracy.
891da0c48c4Sopenharmony_ci	(fdcache::probe): New function.
892da0c48c4Sopenharmony_ci	(fdcache::intern): New option to intern at end of LRU.
893da0c48c4Sopenharmony_ci	(fdcache::lookup): Clean fdcache.
894da0c48c4Sopenharmony_ci	(handle_buildid_r_match): Implement multi-stage archive
895da0c48c4Sopenharmony_ci	parsing, with optional prefetching of extracted contents
896da0c48c4Sopenharmony_ci	into the fdcache.
897da0c48c4Sopenharmony_ci
898da0c48c4Sopenharmony_ci2020-02-19  Aaron Merey  <amerey@redhat.com>
899da0c48c4Sopenharmony_ci
900da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_clean_cache): Restrict
901da0c48c4Sopenharmony_ci	cleanup to client-pattern files.
902da0c48c4Sopenharmony_ci
903da0c48c4Sopenharmony_ci2020-02-05  Frank Ch. Eigler  <fche@redhat.com>
904da0c48c4Sopenharmony_ci
905da0c48c4Sopenharmony_ci	* debuginfod.cxx (argp options): Add -Z option.
906da0c48c4Sopenharmony_ci	(canonicalized_archive_entry_pathname): New function for
907da0c48c4Sopenharmony_ci	distro-agnostic file name matching/storage.
908da0c48c4Sopenharmony_ci
909da0c48c4Sopenharmony_ci2020-01-22  Frank Ch. Eigler  <fche@redhat.com>
910da0c48c4Sopenharmony_ci
911da0c48c4Sopenharmony_ci	* debuginfod.cxx (dwarf_extract_source_paths): Don't print
912da0c48c4Sopenharmony_ci	"skipping hat" messages at verbosity <=3, too noisy.
913da0c48c4Sopenharmony_ci
914da0c48c4Sopenharmony_ci2020-01-19  Frank Ch. Eigler  <fche@redhat.com>
915da0c48c4Sopenharmony_ci
916da0c48c4Sopenharmony_ci	* debuginfod.cxx (scanq): Rework to let groomer/fts threads
917da0c48c4Sopenharmony_ci	synchronize with an empty workqueue, and lock out workqueue
918da0c48c4Sopenharmony_ci	consumers.
919da0c48c4Sopenharmony_ci	(thread_groom): Adopt new scanq idle APIs to lock out scanners.
920da0c48c4Sopenharmony_ci	(thread_main_fts_source_paths): Adopt new scanq idler API to
921da0c48c4Sopenharmony_ci	avoid being restarted while scanners haven't even finished yet.
922da0c48c4Sopenharmony_ci	(thread_main_*): Increment thread_work_total metric only after
923da0c48c4Sopenharmony_ci	a work cycle is completed, not when it begins.
924da0c48c4Sopenharmony_ci
925da0c48c4Sopenharmony_ci2020-01-18  Frank Ch. Eigler  <fche@redhat.com>
926da0c48c4Sopenharmony_ci
927da0c48c4Sopenharmony_ci	* debuginfod.cxx (thread_main_scanner): Handle empty source_paths[].
928da0c48c4Sopenharmony_ci
929da0c48c4Sopenharmony_ci2020-01-11  Frank Ch. Eigler  <fche@redhat.com>
930da0c48c4Sopenharmony_ci
931da0c48c4Sopenharmony_ci	* debuginfod.cxx (libarchive_fdcache): New class/facility to own a
932da0c48c4Sopenharmony_ci	cache of temporary files that were previously extracted from an
933da0c48c4Sopenharmony_ci	archive.  If only it could store just unlinked fd's instead of
934da0c48c4Sopenharmony_ci	filenames.
935da0c48c4Sopenharmony_ci	(handle_buildid_r_match): Use it to answer dwz/altdebug and webapi
936da0c48c4Sopenharmony_ci	requests.
937da0c48c4Sopenharmony_ci	(groom): Clean it.
938da0c48c4Sopenharmony_ci	(main): Initialize the cache control parameters from heuristics.
939da0c48c4Sopenharmony_ci	Use a consistent tmpdir for these and tmp files elsewhere.
940da0c48c4Sopenharmony_ci
941da0c48c4Sopenharmony_ci2020-01-11  Frank Ch. Eigler  <fche@redhat.com>
942da0c48c4Sopenharmony_ci
943da0c48c4Sopenharmony_ci	* debuginfod.cxx (conninfo): Print User-Agent and X-Forwarded-For
944da0c48c4Sopenharmony_ci	request headers, after mild safety-censorship (for easier machine
945da0c48c4Sopenharmony_ci	processing).
946da0c48c4Sopenharmony_ci
947da0c48c4Sopenharmony_ci2020-01-11  Frank Ch. Eigler  <fche@redhat.com>
948da0c48c4Sopenharmony_ci
949da0c48c4Sopenharmony_ci	* debuginfod.cxx: Rework threading model.
950da0c48c4Sopenharmony_ci	(workq): New class for concurrent work-queue.
951da0c48c4Sopenharmony_ci	(semaphore): Removed class, now unused.
952da0c48c4Sopenharmony_ci	(scan_source_file_path): Rework into ...
953da0c48c4Sopenharmony_ci	(scan_source_file): New function.
954da0c48c4Sopenharmony_ci	(thread_main_scan_source_file_path): Nuke.
955da0c48c4Sopenharmony_ci	(scan_source_archive_path): Rework into ...
956da0c48c4Sopenharmony_ci	(scan_archive_file): New function.
957da0c48c4Sopenharmony_ci	(thread_main_scanner): New function for scanner threads.
958da0c48c4Sopenharmony_ci	(thread_main_fts_source_paths): New function for traversal thread.
959da0c48c4Sopenharmony_ci	(scan_source_paths): ... doing this.
960da0c48c4Sopenharmony_ci	(thread_groom): Tweak metrics for consistency.
961da0c48c4Sopenharmony_ci	(main): Start 1 traversal and N scanner threads if needed.
962da0c48c4Sopenharmony_ci
963da0c48c4Sopenharmony_ci2019-01-02  Mark Wielaard  <mark@klomp.org>
964da0c48c4Sopenharmony_ci
965da0c48c4Sopenharmony_ci	* debuginfod.cxx (default_connect_timeout): Removed.
966da0c48c4Sopenharmony_ci	(default_transfer_timeout): Removed.
967da0c48c4Sopenharmony_ci	(default_timeout): New. Default to 90 seconds.
968da0c48c4Sopenharmony_ci	(debuginfod_query_server): Parse server_timeout_envvar as one number.
969da0c48c4Sopenharmony_ci	Set as CURLOPT_LOW_SPEED_TIME, with CURL_OPT_LOW_SPEED_LIMITE as 100K.
970da0c48c4Sopenharmony_ci
971da0c48c4Sopenharmony_ci2020-01-09  Frank Ch. Eigler  <fche@redhat.com>
972da0c48c4Sopenharmony_ci
973da0c48c4Sopenharmony_ci	* debuginfod-client.c (add_extra_headers): New function,
974da0c48c4Sopenharmony_ci	based on mjw's draft.
975da0c48c4Sopenharmony_ci	(debuginfod_query_server): Call it.
976da0c48c4Sopenharmony_ci
977da0c48c4Sopenharmony_ci2019-12-22  Frank Ch. Eigler  <fche@redhat.com>
978da0c48c4Sopenharmony_ci
979da0c48c4Sopenharmony_ci	* debuginfod.cxx (*_rpm_*): Rename to *_archive_* throughout.
980da0c48c4Sopenharmony_ci	(scan_archives): New read-mostly global to identify archive
981da0c48c4Sopenharmony_ci	file extensions and corresponding extractor commands.
982da0c48c4Sopenharmony_ci	(parse_opt): Handle new -U flag.
983da0c48c4Sopenharmony_ci
984da0c48c4Sopenharmony_ci2019-12-19  Frank Ch. Eigler  <fche@redhat.com>
985da0c48c4Sopenharmony_ci
986da0c48c4Sopenharmony_ci	* debuginfod-client.c (default_progressfn): New function.
987da0c48c4Sopenharmony_ci	(debuginfod_begin): Use it if $DEBUGINFOD_PROGRESS set.
988da0c48c4Sopenharmony_ci	(server_timeout): Bump to 30 seconds.
989da0c48c4Sopenharmony_ci	(debuginfod_query_server): Call progressfn -after- rather than
990da0c48c4Sopenharmony_ci	before curl ops, to make it likely that a successful transfer
991da0c48c4Sopenharmony_ci	results in final a=b call.  Tweak cleanup sequence.
992da0c48c4Sopenharmony_ci	* debuginfod.h: Document $DEBUGINFOD_PROGRESS name.
993da0c48c4Sopenharmony_ci
994da0c48c4Sopenharmony_ci2019-12-09  Mark Wielaard  <mark@klomp.org>
995da0c48c4Sopenharmony_ci
996da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Check
997da0c48c4Sopenharmony_ci	server_urls_envvar early.
998da0c48c4Sopenharmony_ci
999da0c48c4Sopenharmony_ci2019-12-03  Mark Wielaard  <mark@klomp.org>
1000da0c48c4Sopenharmony_ci
1001da0c48c4Sopenharmony_ci	* debuginfod-client.c (debuginfod_query_server): Use separate
1002da0c48c4Sopenharmony_ci	local variables for CURLcode curl_res and CURLMcode curlm_res.
1003da0c48c4Sopenharmony_ci
1004da0c48c4Sopenharmony_ci2019-11-26  Mark Wielaard  <mark@klomp.org>
1005da0c48c4Sopenharmony_ci
1006da0c48c4Sopenharmony_ci	* Makefile.am (BUILD_STATIC): Add needed libraries for libdw and
1007da0c48c4Sopenharmony_ci	libdebuginfod.
1008da0c48c4Sopenharmony_ci
1009da0c48c4Sopenharmony_ci2019-11-25  Frank Ch. Eigler  <fche@redhat.com>
1010da0c48c4Sopenharmony_ci
1011da0c48c4Sopenharmony_ci	* debuginfod.cxx (groom): Add a sqlite3_db_release_memory()
1012da0c48c4Sopenharmony_ci	at the end of periodic grooming to try to shrink the process.
1013da0c48c4Sopenharmony_ci
1014da0c48c4Sopenharmony_ci2019-11-24  Mark Wielaard  <mark@klomp.org>
1015da0c48c4Sopenharmony_ci
1016da0c48c4Sopenharmony_ci	* debuginfod.cxx (test_webapi_sleep): Removed.
1017da0c48c4Sopenharmony_ci	(handler_cb): Don't check test_webapi_sleep and sleep.
1018da0c48c4Sopenharmony_ci	(main): Don't set test_webapi_sleep.
1019da0c48c4Sopenharmony_ci
1020da0c48c4Sopenharmony_ci2019-11-24  Mark Wielaard  <mark@klomp.org>
1021da0c48c4Sopenharmony_ci
1022da0c48c4Sopenharmony_ci	* debuginfod.cxx (add_metric): New function.
1023da0c48c4Sopenharmony_ci	(scan_source_file_path): Record metrics for
1024da0c48c4Sopenharmony_ci	found_executable_total, found_debuginfo_total and
1025da0c48c4Sopenharmony_ci	found_sourcerefs_total.
1026da0c48c4Sopenharmony_ci	(scan_source_rpm_path): Likewise.
1027da0c48c4Sopenharmony_ci
1028da0c48c4Sopenharmony_ci2019-11-07  Frank Ch. Eigler  <fche@redhat.com>
1029da0c48c4Sopenharmony_ci
1030da0c48c4Sopenharmony_ci	* debuginfod.cxx: Add /metrics endpoint.  Add numerous
1031da0c48c4Sopenharmony_ci	calls to new functions inc_metric/set_metric to populate
1032da0c48c4Sopenharmony_ci	threadsafe map containing stats.  Add http content-type
1033da0c48c4Sopenharmony_ci	response headers throughout.
1034da0c48c4Sopenharmony_ci	(thread_main_*): Simplify counter/timer flow.
1035da0c48c4Sopenharmony_ci	(main): Reorder web service shutdown to leave http running
1036da0c48c4Sopenharmony_ci	as long as possible.
1037da0c48c4Sopenharmony_ci	* debuginfod.8: Document it, add security caution.
1038da0c48c4Sopenharmony_ci
1039da0c48c4Sopenharmony_ci2019-11-06  Frank Ch. Eigler  <fche@redhat.com>
1040da0c48c4Sopenharmony_ci
1041da0c48c4Sopenharmony_ci	* debuginfod.cxx: Add new -L (symlink-following) mode.
1042da0c48c4Sopenharmony_ci	* debuginfod.8: Document it.
1043da0c48c4Sopenharmony_ci
1044da0c48c4Sopenharmony_ci2019-11-04  Frank Ch. Eigler  <fche@redhat.com>
1045da0c48c4Sopenharmony_ci
1046da0c48c4Sopenharmony_ci	* debuginfo-client.c (debuginfod_set_progressfn): New function
1047da0c48c4Sopenharmony_ci	for progress/interrupt callback.
1048da0c48c4Sopenharmony_ci	(debuginfod_clean_cache, debuginfod_query_server): Call it.
1049da0c48c4Sopenharmony_ci	* debuginfo.h: Declare it.
1050da0c48c4Sopenharmony_ci	* debuginfod_set_progressfn.3, *_find_debuginfo.3: Document it.
1051da0c48c4Sopenharmony_ci	* Makefile.am: Install it.
1052da0c48c4Sopenharmony_ci	* libdebuginfod.map: Export it all under ELFUTILS_0.178 symversion.
1053da0c48c4Sopenharmony_ci
1054da0c48c4Sopenharmony_ci	* debuginfod-find.c: Add -v option to activate progress cb.
1055da0c48c4Sopenharmony_ci	* debuginfod-find.1: Document it.
1056da0c48c4Sopenharmony_ci	* debuginfod.cxx: Add $DEBUGINFOD_TEST_WEBAPI_SLEEP env var
1057da0c48c4Sopenharmony_ci	to insert sleep in webapi callbacks, to help manual testing.
1058da0c48c4Sopenharmony_ci
1059da0c48c4Sopenharmony_ci2019-10-28  Frank Ch. Eigler  <fche@redhat.com>
1060da0c48c4Sopenharmony_ci
1061da0c48c4Sopenharmony_ci	* debuginfod.cxx: New file: debuginfod server.
1062da0c48c4Sopenharmony_ci	* debuginfod.8: New file: man page.
1063da0c48c4Sopenharmony_ci	* Makefile.am: Build it.
1064da0c48c4Sopenharmony_ci
1065da0c48c4Sopenharmony_ci2019-10-28  Aaron Merey  <amerey@redhat.com>
1066da0c48c4Sopenharmony_ci
1067da0c48c4Sopenharmony_ci	* debuginfod-client.c: New file: debuginfod client library.
1068da0c48c4Sopenharmony_ci	* debuginfod.h: New file: header for same.
1069da0c48c4Sopenharmony_ci	* libdebuginfod.map: New file: govern its solib exports.
1070da0c48c4Sopenharmony_ci	* debuginfod-find.c: New file: command line frontend.
1071da0c48c4Sopenharmony_ci	* debuginfod-find.1, debuginfod_find_source.3,
1072da0c48c4Sopenharmony_ci	debuginfod_find_executable.3, debuginfod_find_debuginfo.3:
1073da0c48c4Sopenharmony_ci	New man pages.
1074