Blame debuginfod/ChangeLog

Packit Service 35cfd5
2020-03-29  Mark Wielaard  <mark@klomp.org>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_add_http_header): Check header
Packit Service 35cfd5
	contains precisely one colon that isn't the first or last char.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-29  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (struct debuginfod_client): Add a flag field
Packit Service 35cfd5
	for progressfn printing.
Packit Service 35cfd5
	(default_progressfn): Set it if printing \rsomething.
Packit Service 35cfd5
	(debuginfod_end): Terminate with \n if flag set, i.e., only if the
Packit Service 35cfd5
	default_progressfn was actually called.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-27  Mark Wielaard  <mark@klomp.org>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (parse_opt): Check port is not zero.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-28  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (handle_buildid_r_match): During archive
Packit Service 35cfd5
	extraction / fdcache prefetching, set the mtime of each
Packit Service 35cfd5
	file in the cache.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-27  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-find.c (main): Extract buildid from /binary/ if
Packit Service 35cfd5
	given instead of hex string.
Packit Service 35cfd5
	* Makefile.am: Add elfutils library prereqs for debuginfod-find.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.h, libdebuginfod.map: New functions for _add_url_header.
Packit Service 35cfd5
	* debuginfod-client.c (struct debuginfod_client): Add headers fields.
Packit Service 35cfd5
	(debuginfod_add_http_header): New client api to add outgoing headers.
Packit Service 35cfd5
	(add_default_headers): Renamed from add_extra_headers, skip if flag.
Packit Service 35cfd5
	(debuginfod_query_server): Pass accumulated headers to libcurl.
Packit Service 35cfd5
	(debuginfod_end): Clean accumulated headers.
Packit Service 35cfd5
	(debuginfod_find_*): Add default headers at this point.
Packit Service 35cfd5
	* debuginfod.cxx (handle_buildid): Add conn pointer.  Use it to relay
Packit Service 35cfd5
	incoming UA and XFF headers to federated upstream debuginfods.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-26  Frank Ch. Eigler <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (handler_cb): Export two families of metrics for
Packit Service 35cfd5
	prometheus traffic analysis: response times and data amounts.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-26  Frank Ch. Eigler <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (parse_opt): For -U, prefer dpkg-deb
Packit Service 35cfd5
	after all if access(3)-able, fallback to bsdtar.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-25  Frank Ch. Eigler <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (parse_opt): Associate a bsdtar subshell with
Packit Service 35cfd5
	the .deb & .ddeb extensions, instead of dpkg-deb.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-26  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_query_server): Don't
Packit Service 35cfd5
	set CURLOPT_PATH_AS_IS on old curl.  Mostly harmless.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_query_server): Set
Packit Service 35cfd5
	CURLOPT_PATH_AS_IS, to propagate file names verbatim.
Packit Service 35cfd5
	* debuginfod.cxx (canon_pathname): Implement RFC3986
Packit Service 35cfd5
	style pathname canonicalization.
Packit Service 35cfd5
	(handle_buildid): Canonicalize incoming webapi source
Packit Service 35cfd5
	paths, accept either one.
Packit Service 35cfd5
	(scan_source_file, archive_classify): Store both
Packit Service 35cfd5
	original and canonicalized dwarf-source file names.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (handle_buildid): In case of federated fallback
Packit Service 35cfd5
	queries, handle errors analogously to local ENOENT/404.
Packit Service 35cfd5
	(handle_metrics): Return a size-of-response value.
Packit Service 35cfd5
	(handler_cb): Add code to time entire application-side processing
Packit Service 35cfd5
	stage + response sizes + http codes, so as to emit a complete
Packit Service 35cfd5
	httpd-flavoured log line for each webapi request.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_query_server): Print the
Packit Service 35cfd5
	default_progressfn terminating \n message only if that progressfn
Packit Service 35cfd5
	is actually set.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-find.c (main): Correct /source full-pathness check for
Packit Service 35cfd5
	"debuginfod-find -v source deadbeef /pathname" case.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-22  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (struct debuginfod_client): Add url field.
Packit Service 35cfd5
	(struct handle_data): Add client field as backpointer.
Packit Service 35cfd5
	(debuginfod_write_callback): Compute & save URL.
Packit Service 35cfd5
	(default_progressfn): Print front pieces of the URL.
Packit Service 35cfd5
	(debuginfod_query_server): Clear URL and cleanup after progressfn.
Packit Service 35cfd5
	* debuginfod-find.c (main): Print URL at transfer conclusion.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-22  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.h, libdebuginfod.map: New functions for _get/set_user().
Packit Service 35cfd5
	* debuginfod-client.c: Implement them.
Packit Service 35cfd5
	* debuginfod-find.c: Include a token call just for testing them.
Packit Service 35cfd5
Packit Service 35cfd5
2020-03-03  Aaron Merey  <amerey@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_query_server): Update
Packit Service 35cfd5
	cache_path even when new default path already exists.
Packit Service 35cfd5
Packit Service 35cfd5
2020-02-27  Aaron Merey  <amerey@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (xalloc_str): New macro. Call
Packit Service 35cfd5
	asprintf with error checking.
Packit Service 35cfd5
	(debuginfod_query_server): Use XDG_CACHE_HOME as a default
Packit Service 35cfd5
	cache location if it is set. Replace snprintf with xalloc_str.
Packit Service 35cfd5
Packit Service 35cfd5
2020-02-26  Konrad Kleine <kkleine@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_query_server): Handle curl's
Packit Service 35cfd5
	response code correctly when DEBUGINFOD_URLS begin with file://
Packit Service 35cfd5
Packit Service 35cfd5
2020-02-25  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (parse_opt): Treat -R as if -Z.rpm .
Packit Service 35cfd5
Packit Service 35cfd5
2020-02-25  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (fdcache_prefetch): New parameter.
Packit Service 35cfd5
	(parse_opt): Parse it.
Packit Service 35cfd5
	(main): Default it.
Packit Service 35cfd5
	(fdcache::fd_size_mb): Change to double for accuracy.
Packit Service 35cfd5
	(fdcache::probe): New function.
Packit Service 35cfd5
	(fdcache::intern): New option to intern at end of LRU.
Packit Service 35cfd5
	(fdcache::lookup): Clean fdcache.
Packit Service 35cfd5
	(handle_buildid_r_match): Implement multi-stage archive
Packit Service 35cfd5
	parsing, with optional prefetching of extracted contents
Packit Service 35cfd5
	into the fdcache.
Packit Service 35cfd5
Packit Service 35cfd5
2020-02-19  Aaron Merey  <amerey@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_clean_cache): Restrict
Packit Service 35cfd5
	cleanup to client-pattern files.
Packit Service 35cfd5
Packit Service 35cfd5
2020-02-05  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (argp options): Add -Z option.
Packit Service 35cfd5
	(canonicalized_archive_entry_pathname): New function for
Packit Service 35cfd5
	distro-agnostic file name matching/storage.
Packit Service 35cfd5
Packit Service 35cfd5
2020-01-22  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (dwarf_extract_source_paths): Don't print
Packit Service 35cfd5
	"skipping hat" messages at verbosity <=3, too noisy.
Packit Service 35cfd5
Packit Service 35cfd5
2020-01-19  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (scanq): Rework to let groomer/fts threads
Packit Service 35cfd5
	synchronize with an empty workqueue, and lock out workqueue
Packit Service 35cfd5
	consumers.
Packit Service 35cfd5
	(thread_groom): Adopt new scanq idle APIs to lock out scanners.
Packit Service 35cfd5
	(thread_main_fts_source_paths): Adopt new scanq idler API to
Packit Service 35cfd5
	avoid being restarted while scanners haven't even finished yet.
Packit Service 35cfd5
	(thread_main_*): Increment thread_work_total metric only after
Packit Service 35cfd5
	a work cycle is completed, not when it begins.
Packit Service 35cfd5
Packit Service 35cfd5
2020-01-18  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (thread_main_scanner): Handle empty source_paths[].
Packit Service 35cfd5
Packit Service 35cfd5
2020-01-11  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (libarchive_fdcache): New class/facility to own a
Packit Service 35cfd5
	cache of temporary files that were previously extracted from an
Packit Service 35cfd5
	archive.  If only it could store just unlinked fd's instead of
Packit Service 35cfd5
	filenames.
Packit Service 35cfd5
	(handle_buildid_r_match): Use it to answer dwz/altdebug and webapi
Packit Service 35cfd5
	requests.
Packit Service 35cfd5
	(groom): Clean it.
Packit Service 35cfd5
	(main): Initialize the cache control parameters from heuristics.
Packit Service 35cfd5
	Use a consistent tmpdir for these and tmp files elsewhere.
Packit Service 35cfd5
Packit Service 35cfd5
2020-01-11  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (conninfo): Print User-Agent and X-Forwarded-For
Packit Service 35cfd5
	request headers, after mild safety-censorship (for easier machine
Packit Service 35cfd5
	processing).
Packit Service 35cfd5
Packit Service 35cfd5
2020-01-11  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx: Rework threading model.
Packit Service 35cfd5
	(workq): New class for concurrent work-queue.
Packit Service 35cfd5
	(semaphore): Removed class, now unused.
Packit Service 35cfd5
	(scan_source_file_path): Rework into ...
Packit Service 35cfd5
	(scan_source_file): New function.
Packit Service 35cfd5
	(thread_main_scan_source_file_path): Nuke.
Packit Service 35cfd5
	(scan_source_archive_path): Rework into ...
Packit Service 35cfd5
	(scan_archive_file): New function.
Packit Service 35cfd5
	(thread_main_scanner): New function for scanner threads.
Packit Service 35cfd5
	(thread_main_fts_source_paths): New function for traversal thread.
Packit Service 35cfd5
	(scan_source_paths): ... doing this.
Packit Service 35cfd5
	(thread_groom): Tweak metrics for consistency.
Packit Service 35cfd5
	(main): Start 1 traversal and N scanner threads if needed.
Packit Service 35cfd5
Packit Service 35cfd5
2019-01-02  Mark Wielaard  <mark@klomp.org>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (default_connect_timeout): Removed.
Packit Service 35cfd5
	(default_transfer_timeout): Removed.
Packit Service 35cfd5
	(default_timeout): New. Default to 90 seconds.
Packit Service 35cfd5
	(debuginfod_query_server): Parse server_timeout_envvar as one number.
Packit Service 35cfd5
	Set as CURLOPT_LOW_SPEED_TIME, with CURL_OPT_LOW_SPEED_LIMITE as 100K.
Packit Service 35cfd5
Packit Service 35cfd5
2020-01-09  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (add_extra_headers): New function,
Packit Service 35cfd5
	based on mjw's draft.
Packit Service 35cfd5
	(debuginfod_query_server): Call it.
Packit Service 35cfd5
Packit Service 35cfd5
2019-12-22  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod.cxx (*_rpm_*): Rename to *_archive_* throughout.
Packit Service 35cfd5
	(scan_archives): New read-mostly global to identify archive
Packit Service 35cfd5
	file extensions and corresponding extractor commands.
Packit Service 35cfd5
	(parse_opt): Handle new -U flag.
Packit Service 35cfd5
Packit Service 35cfd5
2019-12-19  Frank Ch. Eigler  <fche@redhat.com>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (default_progressfn): New function.
Packit Service 35cfd5
	(debuginfod_begin): Use it if $DEBUGINFOD_PROGRESS set.
Packit Service 35cfd5
	(server_timeout): Bump to 30 seconds.
Packit Service 35cfd5
	(debuginfod_query_server): Call progressfn -after- rather than
Packit Service 35cfd5
	before curl ops, to make it likely that a successful transfer
Packit Service 35cfd5
	results in final a=b call.  Tweak cleanup sequence.
Packit Service 35cfd5
	* debuginfod.h: Document $DEBUGINFOD_PROGRESS name.
Packit Service 35cfd5
Packit Service 35cfd5
2019-12-09  Mark Wielaard  <mark@klomp.org>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_query_server): Check
Packit Service 35cfd5
	server_urls_envvar early.
Packit Service 35cfd5
Packit Service 35cfd5
2019-12-03  Mark Wielaard  <mark@klomp.org>
Packit Service 35cfd5
Packit Service 35cfd5
	* debuginfod-client.c (debuginfod_query_server): Use separate
Packit Service 35cfd5
	local variables for CURLcode curl_res and CURLMcode curlm_res.
Packit Service 35cfd5
Packit 032894
2019-11-26  Mark Wielaard  <mark@klomp.org>
Packit 032894
Packit 032894
	* Makefile.am (BUILD_STATIC): Add needed libraries for libdw and
Packit 032894
	libdebuginfod.
Packit 032894
Packit 032894
2019-11-25  Frank Ch. Eigler  <fche@redhat.com>
Packit 032894
Packit 032894
	* debuginfod.cxx (groom): Add a sqlite3_db_release_memory()
Packit 032894
	at the end of periodic grooming to try to shrink the process.
Packit 032894
Packit 032894
2019-11-24  Mark Wielaard  <mark@klomp.org>
Packit 032894
Packit 032894
	* debuginfod.cxx (test_webapi_sleep): Removed.
Packit 032894
	(handler_cb): Don't check test_webapi_sleep and sleep.
Packit 032894
	(main): Don't set test_webapi_sleep.
Packit 032894
Packit 032894
2019-11-24  Mark Wielaard  <mark@klomp.org>
Packit 032894
Packit 032894
	* debuginfod.cxx (add_metric): New function.
Packit 032894
	(scan_source_file_path): Record metrics for
Packit 032894
	found_executable_total, found_debuginfo_total and
Packit 032894
	found_sourcerefs_total.
Packit 032894
	(scan_source_rpm_path): Likewise.
Packit 032894
Packit 032894
2019-11-07  Frank Ch. Eigler  <fche@redhat.com>
Packit 032894
Packit 032894
	* debuginfod.cxx: Add /metrics endpoint.  Add numerous
Packit 032894
	calls to new functions inc_metric/set_metric to populate
Packit 032894
	threadsafe map containing stats.  Add http content-type
Packit 032894
	response headers throughout.
Packit 032894
	(thread_main_*): Simplify counter/timer flow.
Packit 032894
	(main): Reorder web service shutdown to leave http running
Packit 032894
	as long as possible.
Packit 032894
	* debuginfod.8: Document it, add security caution.
Packit 032894
Packit 032894
2019-11-06  Frank Ch. Eigler  <fche@redhat.com>
Packit 032894
Packit 032894
	* debuginfod.cxx: Add new -L (symlink-following) mode.
Packit 032894
	* debuginfod.8: Document it.
Packit 032894
Packit 032894
2019-11-04  Frank Ch. Eigler  <fche@redhat.com>
Packit 032894
Packit 032894
	* debuginfo-client.c (debuginfod_set_progressfn): New function
Packit 032894
	for progress/interrupt callback.
Packit 032894
	(debuginfod_clean_cache, debuginfod_query_server): Call it.
Packit 032894
	* debuginfo.h: Declare it.
Packit 032894
	* debuginfod_set_progressfn.3, *_find_debuginfo.3: Document it.
Packit 032894
	* Makefile.am: Install it.
Packit 032894
	* libdebuginfod.map: Export it all under ELFUTILS_0.178 symversion.
Packit 032894
Packit 032894
	* debuginfod-find.c: Add -v option to activate progress cb.
Packit 032894
	* debuginfod-find.1: Document it.
Packit 032894
	* debuginfod.cxx: Add $DEBUGINFOD_TEST_WEBAPI_SLEEP env var
Packit 032894
	to insert sleep in webapi callbacks, to help manual testing.
Packit 032894
Packit 032894
2019-10-28  Frank Ch. Eigler  <fche@redhat.com>
Packit 032894
Packit 032894
	* debuginfod.cxx: New file: debuginfod server.
Packit 032894
	* debuginfod.8: New file: man page.
Packit 032894
	* Makefile.am: Build it.
Packit 032894
Packit 032894
2019-10-28  Aaron Merey  <amerey@redhat.com>
Packit 032894
Packit 032894
	* debuginfod-client.c: New file: debuginfod client library.
Packit 032894
	* debuginfod.h: New file: header for same.
Packit 032894
	* libdebuginfod.map: New file: govern its solib exports.
Packit 032894
	* debuginfod-find.c: New file: command line frontend.
Packit 032894
	* debuginfod-find.1, debuginfod_find_source.3,
Packit 032894
	debuginfod_find_executable.3, debuginfod_find_debuginfo.3:
Packit 032894
	New man pages.