[Icecast-dev] icecast2 HEAD method support
Dingyuan Wang
gumblex at aosc.io
Mon Jan 7 12:13:35 UTC 2019
I need to monitor individual stream availability, and parsing XMLs is
too much complex.
Currently I use:
curl -s --max-time 1 -w '%{http_code}' -o /dev/null
http://somehost/stream.mp3 | grep -q 200
2019/1/7 17:19, Philipp Schafft:
> Good morning,
>
> On Mon, 2019-01-07 at 15:17 +0800, Dingyuan Wang wrote:
>> Hello,
>>
>> Currently sending a HEAD request to an icecast2 server returns a 400.
>
> Yes. This is correct for both 2.4.x and 2.5.x.
>
>
>> Are there plans to implement HEAD support, in order to simplify server
>> status monitoring for example?
>
> There is some discussion on it. Both on IRC as well as on the ticket
> system. See e.g. here:
> https://gitlab.xiph.org/xiph/icecast-server/issues/2223
>
>
> Beside that HEAD would be nice for status checking HEAD has two big
> disadvantages in reality:
> * People often argue that it would be less stress for the server
> to answer a HEAD request on a sourced mountpoint than a GET
> request. This is not exactly true. What causes most stress to
> the server is attaching the client to the source. This is needed
> in both cases.
> * Because of the stateless nature of HTTP the response to a HEAD
> request can become invalid even before it reached the client. So
> the use of HEAD is very limited. Cache validation and server
> monitoring are the only use cases I know of. The problem however
> is that people often try to use it to find out about the
> resource itself. E.g. it has been seen in the wild that people
> try to use it to find out about the resource's size or
> content-type to detect which part of their software should do
> the GET request. This is invalid as per HTTP specs as well as
> totally broken with anything but perfectly static files. The
> correct solution for this is that software MUST NOT depend on
> HEAD request (or the also often seen double-GET pattern).
>
> While HEAD would be nice for checking the status of a stream it could
> get people into a sphere of implementing broken clients. This is why it
> has not yet been done. There is discussion on if it might be useful to
> implement HEAD without any source related data. Which would allow status
> checking but nothing else. There is also discussion on other
> alternatives:
> * OPTIONS requests (maybe even OPTIONS requests to the *-resource)
> (both implemented in current master/2.5.x),
> * GET request with zero size byte range (someone want to test this
> with me and document the results?),
> * Using the old or new admin interface to query for the status of
> a resource,
> * Using the STATS interface to get *live* updates on the server's
> status,
> * Using events/URL auth to run code in case of a status change.
>
> What is the best solution depends on your specific use case. I tried to
> answer as general as "HEAD request support".
>
> I hope my answer will help you. Feel free to join us on IRC[0] or ask
> again here on the list about your specific problem so we can find a
> specific solution that works best for you.
>
>
> With best regards,
>
> [0] #icecast on freenode, see https://icecast.org/contact/#contact-info
>
More information about the Icecast-dev
mailing list