Hi,

I have a small-ish client-server setup:

* a plug-in for tvbrowser which schedules a recording by sending CGI
parameters to a remote recorder and

* a scheduler program on the recorder which ... ahem ... schedules the
requested recording.

The plug-in uses libcurl and (explicitly) encodes "&" characters in the
show's title as "%26". This also happens when I just "wget" the URL
handed over to libcurl.

The scheduler uses libmicrohttpd (0.9.62-1 on Debian Buster) to retrieve
the CGI parameters and values and schedule the recording.

The problem is that when I call MHD_get_connection_values(connection,
MHD_GET_ARGUMENT_KIND, ...), an embedded "%26" has been converted into
"&" before the CGI parameter string is parsed and this confuses the parser.

Eg the request sent is

/add?date=9.2.2021&time=23:45&channel=Das+Erste&title=Cagney+%26+Lacey&duration=10

(strace shows this as the data recv'ed) so the value of the
"title"-field *should* be "Cagney & Lacey", but when the string is
parsed into parameters, the "%26" had already been translated back into
an "&" and I get "Cagney " as the value of the "title" parameter
followed by an extra parameter " Lacey" without a value.

What am I doing wrong?

Thanks for helping and ... stay safe!

Josef



Reply via email to