The main changes are listed below but there is a lot of noise from behind the scenes
work like quicker stats updates, code re-arranging and infrequent used code like the
allocation code which is not usually compiled in.
Implement scatter-gather IO, initially for flv wrapping as that will make a lot of
use of it and should save a lot of memory copies. The icy metadata should also be a
candidate for this.
Add better handling to relays with multiple servers and fallbacks. Problem entries
can be skipped when restarting.
Fixup build system for mingw32 cross compile. VC was getting too annoying but should
still be an option if needed later. This now allows us to build with newer dependent
libs without much extra work. The GUI component is not built now (VC specific) but
it was of limited use and most win32 users configure the service.
svn path=/icecast/branches/kh/icecast/; revision=18147
Mostly internal updates dealing with a quick response then termination of client. A
few possible leaks cases plugged and guards for invalid cases. Trying out an updated
stats API to avoid lookups (only partly used currently). Reduced memory copies on xsl
requests by writing direct to refbufs.
svn path=/icecast/branches/kh/icecast/; revision=18080
mostly fixes, mainly to do with workers handling relays, startup, shutdown, restarting
and how those listeners are processed. The handling of auth clients if services become
slow/unresponsive. some code cleanup, reduce some lock contention, code duplication and
fine tuning of certain limits.
svn path=/icecast/branches/kh/icecast/; revision=17788
removed the relay recanning in the slave thread as that is handled by the worker clients
now. A few internal cleanups with worker processing and stats.
svn path=/icecast/branches/kh/icecast/; revision=17711
possible corruption with short-send of non-ogg metadata, specifically the
write merged block.
the slave stream listing was not honouring non-hidden attributes or auth
The smaller parts are mainly code re-organisation, a backward compatibility
option and options for IP handling.
svn path=/icecast/branches/kh/icecast/; revision=17364
and looks to be working well. the rest are various fixes that have accumulated
from bug reports.
svn path=/icecast/branches/kh/icecast/; revision=17267
mountpoints are accessed (useful for those /mount/index.html). The rest is
mainly pointer corruption fixes for relay updating/restarting/removal, stream
parsing for non-ogg streams and stats updating.
svn path=/icecast/branches/kh/icecast/; revision=17198
for access log skipping and global bandwidth limiting if specified. Buffers for
mpeg streams are made to be on frame boundaries which should help with listener
moves.
svn path=/icecast/branches/kh/icecast/; revision=17097
. fix worker stalled bug if source exits and new listener connects. A deadlock
on the source tree is possible.
. a few small changes to locking scope.
. NULL pointer fix with a stopped relay without a fallback but with listeners
still on it
. make fh_node use a tree for quick lookup. This is not like the sources.
. a few other smaller fixes and consistency checks implemented.
. 2 patches from moo, fixes#1646, #1648. still need to assess a third but is
not critical.
svn path=/icecast/branches/kh/icecast/; revision=16933
lock imbalance fix with workers > 1, seemed to affect FBSD.
moved sources count change for relays as that was increasing over restarts.
memory leak plugged on source_t removal.
double free prevented on listener_remove
auth_cmd stall fix.
small code cleanup
svn path=/icecast/branches/kh/icecast/; revision=16858
possible. Add back in the avl tree of listeners so that lookups can be done
quickly as we only use it now for deletion. Some minor issues for SC compat.
svn path=/icecast/branches/kh/icecast/; revision=16772
. memory corruption fix in stats/threading.
. fix for the excessive page flush bug leading to higher bandwidth than expected
with vorbis streams from certain source clients.
. avoid the ::ffff: part from IPv6 within an IP.
The other main change is the YP thread which is started from a dummy client
handle instead of the slave thread. it should now only startup from the worker
if there is work scheduled. Whether the slave thread can reduce wakeups would
need to be investigated.
command auth was updated but the performance results are similar to URL auth.
Other some internal code cleanups are also done. stats seems to be working much
better now.
karl.
svn path=/icecast/branches/kh/icecast/; revision=16691
use by the file handles, and some compile-time debug code to check for memory
usage.
. We can now fall back to file again without the original stream being present.
. Listener specific intro content can now come via auth listener_add.
. The relay updates for the retry, timeout and disable settings were missed
svn path=/icecast/branches/kh/icecast/; revision=16593
reload or server exit. small changes for win32, the icecast service should
be working better and I've updated the libogg to 1.1.4 for the build.
svn path=/icecast/branches/kh/icecast/; revision=16352
workers (as specified in the xml) instead of the one thread per source model.
This affects most files as they tend to interact with a client to some degree
but some of those are in minor ways.
The most significant changes are in :-
- file serving engine. There is no separate thread now, so the client reads
and sends are driven from the worker, this includes the error responses.
- The source client and listener processing. The source client details have
to stay around until the listeners are processed.
- slave engine. relays are always allocated a client on the worker, with a
thread created just for the connection phase. Makes it easier to handle when
switching to another relay source.
svn path=/icecast/branches/kh/icecast/; revision=16219
include build failures, ogg handling problems, and memory corruption.
The only new feature is that metadata updates can take a url arg now. The
refbuf cleanup still needs confirming but it is required to prevent the ogg
stream header pages disappearing. Other cleanups have occurred to help
merging to trunk and clean up valgrind reporting.
svn path=/icecast/branches/kh/icecast/; revision=15607
removal work for stats, video preview merge (not built by default) and a couple
of bug fixes from reported feedback.
svn path=/icecast/branches/kh/icecast/; revision=15372
buffer to the fserve engine, using a callback for 200 OK. Create a client_t
even on reaching the client limit as that allows for sending response via
fserve, should help with SSL migration work later
svn path=/icecast/branches/kh/icecast/; revision=9634