aboutsummaryrefslogtreecommitdiff
path: root/http.c
diff options
context:
space:
mode:
Diffstat (limited to 'http.c')
-rw-r--r--http.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/http.c b/http.c
index 4f0b2fa..125d346 100644
--- a/http.c
+++ b/http.c
@@ -182,14 +182,22 @@ int check_signature(const xs_dict *req, xs_str **err)
if ((p = strchr(keyId, '#')) != NULL)
*p = '\0';
- /* also strip cgi variables */
- if ((p = strchr(keyId, '?')) != NULL)
- *p = '\0';
-
xs *actor = NULL;
int status;
- if (!valid_status((status = actor_request(NULL, keyId, &actor)))) {
+ /* does it have ? variables? */
+ if ((p = strchr(keyId, '?')) != NULL) {
+ /* try first with them */
+ if (!valid_status((status = actor_request(NULL, keyId, &actor)))) {
+ *p = '\0';
+ /* retry stripping them */
+ status = actor_request(NULL, keyId, &actor);
+ }
+ }
+ else
+ status = actor_request(NULL, keyId, &actor);
+
+ if (!valid_status(status)) {
*err = xs_fmt("actor request error %s %d", keyId, status);
return 0;
}