[Icecast-dev] icecast2 HEAD method support
Philipp Schafft
phschafft at de.loewenfelsen.net
Mon Jan 7 09:19:59 UTC 2019
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
--
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-dev/attachments/20190107/6a6a1f33/attachment.sig>
More information about the Icecast-dev
mailing list