[Bug general/26195] 0.180 + master: build fails

2020-07-05 Thread mark at klomp dot org via Elfutils-devel
https://sourceware.org/bugzilla/show_bug.cgi?id=26195

Mark Wielaard  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #7 from Mark Wielaard  ---
commit acb453851c9e6c46531b70fda7396885c0e7e1db
Author: Frank Ch. Eigler 
Date:   Thu Jul 2 14:52:48 2020 +

PR26195: adapt debuginfod to API change in libmicrohttpd-0.9.71

To make our code build with -Werror as well as against older libmicrohttpd,
we must conditionalize the data type (int vs. enum) returned by callbacks
and some mhd functions.

Signed-off-by: Frank Ch. Eigler 

Also backported to fedora rawhide.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Re: [PATCH] debuginfod: DEBUGINFOD_URLS should accept scheme-free urls

2020-07-05 Thread Mark Wielaard
Hi Alice,

On Fri, 2020-07-03 at 13:37 -0400, Alice Zhang via Elfutils-devel
wrote:
> Check scheme instead of effective url so that user may abbreviate
> DEBUGINFOD_URL. Add one test for scheme free http url.
> 
> Notice that libcurl does not provide an almighty scheme free url
> support, /path/to/something without FILE:// can not be recognized
> in most circumstances, therefore for the neatness of our code
> structure, DEBUGINFOD_ URL of scheme "FILE" must be input as URI.

Thanks, this looks good, and seems to work against all the various
libcurl versions we support. I did make some whitespace changes and
added ChangeLog entries as attached.

Pushed to master.

Thanks,

Mark

From 8de6f9af46f12fe3b2a0871523f6df13c4b39e34 Mon Sep 17 00:00:00 2001
From: Alice Zhang 
Date: Fri, 3 Jul 2020 13:37:34 -0400
Subject: [PATCH] debuginfod: DEBUGINFOD_URLS should accept scheme-free urls

Check scheme instead of effective url so that user may abbreviate
DEBUGINFOD_URL. Add one test for scheme free http url.

Notice that libcurl does not provide an almighty scheme free url
support, /path/to/something without FILE:// can not be recognized
in most circumstances, therefore for the neatness of our code
structure, DEBUGINFOD_ URL of scheme "FILE" must be input as URI.

Signed-off-by: Alice Zhang 
---
 debuginfod/ChangeLog   |  5 +
 debuginfod/debuginfod-client.c | 29 +++--
 tests/ChangeLog|  4 
 tests/run-debuginfod-find.sh   |  6 ++
 4 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index 372173e7..db8a76a7 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,8 @@
+2020-07-03  Alice Zhang 
+
+	* debuginfod-client.c (debuginfod_query_server): Use strncasecmp
+	to compare effective_url. Try CURLINFO_SCHEME as fallback.
+
 2020-06-19  Mark Wielaard  
 
 	* Makefile.am (bin_PROGRAMS): Guard with DEBUGINFOD and
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index c2e43f74..18e7b85f 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -899,19 +899,44 @@ debuginfod_query_server (debuginfod_client *c,
 		&resp_code);
   if(ok1 == CURLE_OK && ok2 == CURLE_OK && effective_url)
 {
-  if (strncmp (effective_url, "http", 4) == 0)
+  if (strncasecmp (effective_url, "HTTP", 4) == 0)
 if (resp_code == 200)
   {
 verified_handle = msg->easy_handle;
 break;
   }
-  if (strncmp (effective_url, "file", 4) == 0)
+  if (strncasecmp (effective_url, "FILE", 4) == 0)
 if (resp_code == 0)
   {
 verified_handle = msg->easy_handle;
 break;
   }
 }
+  /* - libcurl since 7.52.0 version start to support
+   CURLINFO_SCHEME;
+ - before 7.61.0, effective_url would give us a
+   url with upper case SCHEME added in the front;
+ - effective_url between 7.61 and 7.69 can be lack
+   of scheme if the original url doesn't include one;
+ - since version 7.69 effective_url will be provide
+   a scheme in lower case.  */
+  #if LIBCURL_VERSION_NUM >= 0x073d00 /* 7.61.0 */
+  #if LIBCURL_VERSION_NUM <= 0x074500 /* 7.69.0 */
+  char *scheme = NULL;
+  CURLcode ok3 = curl_easy_getinfo (target_handle,
+CURLINFO_SCHEME,
+&scheme);
+  if(ok3 == CURLE_OK && scheme)
+{
+  if (strncmp (scheme, "HTTP", 4) == 0)
+if (resp_code == 200)
+  {
+verified_handle = msg->easy_handle;
+break;
+  }
+}
+  #endif
+  #endif
 }
 }
 }
diff --git a/tests/ChangeLog b/tests/ChangeLog
index b27037ee..7cb4123a 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,7 @@
+2020-07-03  Alice Zhang  
+
+	* run-debuginfod-find.sh: Add scheme free url testcase.
+
 2020-06-19  Mark Wielaard  
 
 	* Makefile.am (TESTS): Don't add run-debuginfod-find.sh when
diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
index f0c77c51..730bb0e1 100755
--- a/tests/run-debuginfod-find.sh
+++ b/tests/run-debuginfod-find.sh
@@ -413,6 +413,12 @@ testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID &&

[Bug debuginfod/25797] DEBUGINFOD_URLS should accept scheme-free urls

2020-07-05 Thread mark at klomp dot org via Elfutils-devel
https://sourceware.org/bugzilla/show_bug.cgi?id=25797

Mark Wielaard  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED
 CC||mark at klomp dot org

--- Comment #1 from Mark Wielaard  ---
commit 8de6f9af46f12fe3b2a0871523f6df13c4b39e34 (HEAD -> master, origin/master,
origin/HEAD)
Author: Alice Zhang 
Date:   Fri Jul 3 13:37:34 2020 -0400

debuginfod: DEBUGINFOD_URLS should accept scheme-free urls

Check scheme instead of effective url so that user may abbreviate
DEBUGINFOD_URL. Add one test for scheme free http url.

Notice that libcurl does not provide an almighty scheme free url
support, /path/to/something without FILE:// can not be recognized
in most circumstances, therefore for the neatness of our code
structure, DEBUGINFOD_ URL of scheme "FILE" must be input as URI.

Signed-off-by: Alice Zhang 

-- 
You are receiving this mail because:
You are on the CC list for the bug.