The URL is constructed considering Protocol, TLS Mode, Host, and Port.
This considers:
- The Host:-header as provided by the client,
- The effective listensocket of the client,
- Global configuration.
This works for:
- Playlist generation,
- Admin authed playlist generation,
- Stats based XSLT.
It also unifies code:
- Default stats values.
Not yet included:
- YP requests.
This generates error pages based on IDs. This allows to reuse errors
and add more advanced information to them.
This patch also makes Icecast send in plain text OR HTML based
on the clients Accept:-string.
This is a first commit to correct minor problmes reported by
Denis Denisov. There is likely another commit to correct some more
such problems.
Thank you Denis Denisov.
This adds to all responses:
* "Accept-Encoding: identity"
* "Connection: close"
* "Allow: GET, SOURCE" or "Allow: GET" (on admin pages)
This is to generate some infrastructure for Icecast to tell futur
source clients what is supported.
"Upgrade: TLS/1.0" should be added later when upgrade support is present.
See: #2152
This avoids a endless loop in a spin lock that has not been inited
yet if fserve engine was not started up by the time it was sent to
go down. This happened if icecast couldn't read the config because
the file was corrupted or non-existent.
Closes: #2144
Please test this very carefully.
Some pointers what should be in the tests (NOT complet list):
- request to 'static' web/ and admin/ pages.
- requests to playlist generation.
- requests to streams.
- requests to admin/ manipulation functions.
- test everything with at least 8kB of extra headers, then reduce in 1kB (or 512B) steps.
- see if response is correct OR 500 is returned.
- run under valgrind or similar to see no buffer overflow or similiar will happen.
- take a cookie!
svn path=/icecast/trunk/icecast/; revision=19300
This is currently not implemented for SOURCE and STATS clients as
I suspect to break them. This needs some more research.
close#1639, see #1870 and #1885.
svn path=/icecast/trunk/icecast/; revision=18464
just in a sleep loop which means most clients getting to it have to wait. We
now just start the thread when there is work to do. There is also some small
cleanup for the off_t type usage as well.
svn path=/icecast/trunk/icecast/; revision=15124
need a large number of mountpoints to trigger a truncation. Allow file
serving thread to process a list of blocks for sending back to
the client. Then build the block list in the stats engine for returning.
svn path=/icecast/trunk/icecast/; revision=14812