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