[Icecast] EROR util/util_http_select_best Input string does not parse as KVA. Selecting first option.

Philipp Schafft phschafft at de.loewenfelsen.net
Wed Jun 26 14:25:37 UTC 2019


Good afternoon,

On Mon, 2019-06-24 at 22:59 -0400, Christopher Cantwell wrote:
> Greetings,
> 
> I use Icecast for the live airing of my open phones podcast, and we've
> recently had some trouble with malicious actors attempting to disrupt the
> production in various ways, most of which are beyond the scope of this
> inquiry.
> 
> Today the Icecast feed kept disconnecting and resetting the listener count.
> This happens on rare occasions, and I usually accept this as a noisy
> neighbor problem on my inexpensive VPS. Today it was probably more than a
> dozen times during a two hour show. On the prior episode, my peak listener
> count exceeded recent records, and I thought perhaps it was the hostiles
> trying to flood me with requests.

By resetting counts you mean the reset of the stats when a source
disconnects?


> After the show, I attempted to check the error log to see if I could
> determine what caused the trouble, but the log is being flooded with what I
> presume is an unrelated error multiple times per second. I've never checked
> the log before, so it is entirely possible this has been happening the
> entire time the server has been up.
> 
> Other than today's disconnects, everything seems to be working fine, so the
> error doesn't seem to be causing any disruptions on its own, but it is
> preventing me from troubleshooting other issues.
> 
> root at radio:/var/log/icecast2# tail error.log
> [2019-06-24  22:31:21] EROR util/util_http_select_best Input string does
> not parse as KVA. Selecting first option.
> [...]
> 
> Searching didn't turn up much. A search for Icecast util_http_select_best
> turned up this Github page
> https://github.com/xiph/Icecast-Server/blob/master/src/util.h

That message is reported if a Accept:-header can not be parsed
(including the header is not present). Icecast then uses the default
("first option").

This header is used to allow Icecast sending a response in a format
preferred by the client. If none is provided Icecast will just respond
in the format that Icecast thinks is best.


If that error happens very often it is likely a client that floods the
server. See the access.log. It should indicate such a client.



> Searching icecast.xml for header, I find what I think is a default setting,
> and seems to be working just fine...
> 
>     <!-- Global header settings
>          Headers defined here will be returned for every HTTP request to
> Icecast.
> 
>          The ACAO header makes Icecast public content/API by default
>          This will make streams easier embeddable (some HTML5 functionality
> needs it).
>          Also it allows direct access to e.g. /status-json.xsl from other
> sites.
>          If you don't want this, comment out the following line or read up
> on CORS.
>     -->
>     <http-headers>
>         <header name="Access-Control-Allow-Origin" value="*" />
>     </http-headers>

This is not related to configuration. It's purely about the server and
the client negotiating options. See here:
https://en.wikipedia.org/wiki/Content_negotiation
(Relevant standard is RFC 7231 Section 5.3.2)


With best regards,

-- 
Philipp Schafft (CEO/Geschäftsführer) 
Telephon: +49.3535 490 17 92

Löwenfelsen UG (haftungsbeschränkt)     Registration number:
Bickinger Straße 21                     HRB 12308 CB
04916 Herzberg (Elster)                 VATIN/USt-ID:
Germany                                 DE305133015
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
URL: <http://lists.xiph.org/pipermail/icecast/attachments/20190626/424c1d97/attachment.sig>


More information about the Icecast mailing list