Hi Christopher, On Tue, Nov 19, 2019 at 04:35:47PM +0100, Christopher Faulet wrote: > +/* Parse the query stirng of request URI to filter the metrics. It returns 1 > on > + * success and -1 on error. */ > +static int promex_parse_uri(struct appctx *appctx, struct stream_interface > *si) > +{ > + struct channel *req = si_oc(si); > + struct channel *res = si_ic(si); > + struct htx *req_htx, *res_htx; > + struct htx_sl *sl; > + const char *p, *end; > + struct buffer *err; > + int default_scopes = PROMEX_FL_SCOPE_ALL; > + int len; > + > + /* Get the query-string */ > + req_htx = htxbuf(&req->buf); > + sl = http_get_stline(req_htx); > + if (!sl) > + goto error; > + p = http_find_param_list(HTX_SL_REQ_UPTR(sl), HTX_SL_REQ_ULEN(sl), '?'); > + if (!p) > + goto end;
It's my turn to be sorry. I wrongly tested on my side regarding a real integration with prometheus, because I mixed the old metrics and the new ones. Indeed, prometheus is trying to scrape the encoded url such as: metrics%3Fscope=global&scope=frontend&scope=backend instead of metrics?scope=global&scope=frontend&scope=backend Do you think it could be acceptable to send a patch adding a function such as: static inline char *http_find_encoded_param_list(char *path, size_t path_l, char* delim); and test the encoded search if we don't find '?' Or is there a way to convert the url first? I'm ok to handle the patch if you validate the solution. Thanks, -- William