1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-12-04 14:46:30 -05:00
Commit Graph

337 Commits

Author SHA1 Message Date
brendan
62ce258d46 Assign LGP to thread module
svn path=/trunk/thread/; revision=5138
2003-07-14 02:17:52 +00:00
brendan
12db251614 Assign LGPL to files (as implied by COPYING)
svn path=/trunk/net/; revision=5137
2003-07-14 02:14:59 +00:00
Karl Heyes
421df597fa Add log cycling on HUP signals. Currently reopens log files in append mode
so allows for continuing the log, or cycling just one log.   log filename
changes work as well.

svn path=/trunk/icecast/; revision=5129
2003-07-11 23:54:50 +00:00
Karl Heyes
d637781802 inverted logic used by some of the new functions fixed, locking updates
and some code cleanups

svn path=/trunk/log/; revision=5128
2003-07-11 23:36:49 +00:00
Karl Heyes
142c1b0609 don't terminate stream when debugging
svn path=/trunk/icecast/; revision=5127
2003-07-11 19:03:30 +00:00
Karl Heyes
d0e828a040 Modify logging framework for providing log cycling. By default the logging
is indefinite but here ices2 is capping the logs at around 2Meg, which is
currently fixed.

The renamed log filename is simple (xxx.old) but using a timestamp could
be implemented.  Explicit log re-opening (eg HUP handling) is implemented
but not currently used.

svn path=/trunk/log/; revision=5107
2003-07-09 02:45:22 +00:00
oddsock
78e3977e2d unused variable
svn path=/trunk/icecast/; revision=5104
2003-07-08 14:11:32 +00:00
oddsock
d5b71bce49 don't overwrite info in one yp with info from another :)
svn path=/trunk/icecast/; revision=5103
2003-07-08 14:11:01 +00:00
oddsock
c6caf7f19c more portable va_copy for win32
svn path=/trunk/net/; revision=5098
2003-07-08 02:39:33 +00:00
oddsock
b1cd3085f2 cleaned a bit
svn path=/trunk/icecast/; revision=5094
2003-07-07 22:04:29 +00:00
oddsock
8ce77fc778 win32 goodies
svn path=/trunk/icecast/; revision=5093
2003-07-07 22:02:39 +00:00
brendan
729d65ae52 va_copy is undefined on windows
svn path=/trunk/net/; revision=5092
2003-07-07 21:33:58 +00:00
brendan
ff09d9eaa9 The last of the convenience lib cleanups. A little forethought in designing
a keyboard macro made this one a lot easier.

svn path=/trunk/thread/; revision=5090
2003-07-07 20:38:34 +00:00
brendan
5685b9a866 MAX may be defined elsewhere
svn path=/trunk/avl/; revision=5086
2003-07-07 03:37:23 +00:00
brendan
fd289cfe4d httpp goes through the rinse cycle
svn path=/trunk/httpp/; revision=5085
2003-07-07 01:49:27 +00:00
brendan
1af405ee9c I missed a spot. And another one.
svn path=/trunk/avl/; revision=5084
2003-07-07 01:40:08 +00:00
brendan
8278b004fe net gets the namespace deep cleansing treatment.
I suspect all this may be unnecessary, only because I've never heard of this
before. But then, I don't do much library work, and better safe than sorry.

svn path=/trunk/net/; revision=5083
2003-07-07 01:32:42 +00:00
brendan
3833c824ae Namespace cleanup: _mangle exported symbols, declare others static.
This is tedious.

svn path=/trunk/avl/; revision=5082
2003-07-07 01:10:14 +00:00
brendan
cbfb283e6f Move MP3 headers back into format_mp3.c per Mike's desire.
I removed icy- support from the generic send headers function, as it is my
understanding that only MP3 sources use icy headers. PLEASE correct me
if I am wrong.

I also added code in the mp3 function to convert ice-audio-info bitrate to
an icy-br header. ice-audio-info is for YP, icy-br for clients. Perhaps we
should send both to clients though?

svn path=/trunk/icecast/; revision=5079
2003-07-06 15:27:50 +00:00
brendan
004152cf7a Write a newline after the m3u entry (patch by Paul Bryan).
svn path=/trunk/icecast/; revision=5067
2003-07-05 06:36:16 +00:00
giles
a2400995a0 Add a name mangling mechanism so we can safely compile in code we share with applications that might link with use. Currently only hooked up for the timing liblet, but thread is the real target.
Basically we define _mangle() in config.h, and use that in timing.h (if available) to prepend the package name to all the symbols in the header and including C files. It's thus fairly invisible.

Unfortunately the prefix is hardwired, so it's another thing that has to be maintained by hand (not that is changes often, but we can't make it a macro). AH_VERBATIM seems to be the only way to add a macro that takes arguments, and it explicitly doesn't do shell expansion. Further, @PACKAGE@ substitution doesn't happen on config.h.in. Insert standard autotools frustration here.

svn path=/trunk/timing/; revision=5060
2003-07-04 23:18:26 +00:00
brendan
7c40c8ae92 Get everthing in make dist, and remove bitkeeper cruft
svn path=/trunk/avl/; revision=5050
2003-07-03 12:59:06 +00:00
brendan
e21a3fc19e Convert ice headers to icy headers for MP3 streams.
TODO: rewrite ice-audio-info bitrate tag to icy-br.

svn path=/trunk/icecast/; revision=5045
2003-07-03 01:39:59 +00:00
brendan
205d225b73 When relaying MP3 we reported the source metainterval as well as our own,
causing stuttering in some clients. Thank goodness icecast uses an
odd metainterval, or this bug would never have been discoverd :)

svn path=/trunk/icecast/; revision=5044
2003-07-03 01:36:06 +00:00
Karl Heyes
f6efb106de this was never used and it's handled elsewhere anyway
svn path=/trunk/net/; revision=5042
2003-07-02 21:29:08 +00:00
brendan
26e3be189a finish what we started re: resolver
svn path=/trunk/net/; revision=5026
2003-07-01 18:49:07 +00:00
Karl Heyes
7fda8c6afb infinite loop/memory leak fix for private streams when yp is enabled
svn path=/trunk/icecast/; revision=5019
2003-06-29 18:12:09 +00:00
oddsock
4b92ae2baa - add_yp_info moved into yp.c
- all yp adds/touches are now done within a single thread.
  This should eliminate any "thread growth" issues and make
  things behave much nicer when yp problems arise.  We should
  eventually change the add/touches to non-blocking sockets,
  which will be needed for large numbers of streams doing adds/touches.

svn path=/trunk/icecast/; revision=5012
2003-06-26 13:33:55 +00:00
oddsock
abb6cddbf0 - added startup of yp add/touch thread
svn path=/trunk/icecast/; revision=5011
2003-06-26 13:33:15 +00:00
oddsock
fb9292658b - fixed small memory leak
svn path=/trunk/icecast/; revision=5010
2003-06-26 13:32:34 +00:00
oddsock
303c11197f - moved add_yp_info into yp.c
- most of the yp processing now moved into the yp add/touch thread
- use ice/icy-public rather than ice/icy-private to coorespond to libshout and general convention
- memory leak fixed with audio-info

svn path=/trunk/icecast/; revision=5009
2003-06-26 13:32:04 +00:00
oddsock
dd6af7e848 - force touches when vorbis metadata changes
svn path=/trunk/icecast/; revision=5008
2003-06-26 13:31:38 +00:00
oddsock
428c1f1f36 - force touches when mp3 metadata is updated via admin interface
svn path=/trunk/icecast/; revision=5007
2003-06-26 13:31:17 +00:00
Karl Heyes
f2e1bc2419 handle error returned from listening sockets, can cause busy looping
svn path=/trunk/icecast/; revision=4986
2003-06-20 18:50:24 +00:00
Karl Heyes
ea2dc4a67f ermmm, let's use the right operator.
svn path=/trunk/httpp/; revision=4963
2003-06-18 15:52:25 +00:00
Karl Heyes
032ad5d9ff minor cleanup, removes compiler warning, makes it static, and doesn't
re-evaluate string length each time.

svn path=/trunk/httpp/; revision=4961
2003-06-18 11:13:11 +00:00
Karl Heyes
a4d20515f1 remove file descriptor leak when IPv6 is being used.
svn path=/trunk/net/; revision=4960
2003-06-18 11:05:49 +00:00
brendan
e49e587c01 gcc 3.3 warns: dereferencing type-punned pointer will break strict-aliasing rules
svn path=/trunk/httpp/; revision=4906
2003-06-09 22:30:09 +00:00
Karl Heyes
b41664426c Lets put this in the right place.
svn path=/trunk/net/; revision=4889
2003-06-06 11:19:50 +00:00
Karl Heyes
b4cdad000d Another net change, making it more bullet-proof, before could silently miss
data. so now we allocate enough space for the write to succeed fully.

svn path=/trunk/icecast/; revision=4888
2003-06-06 00:05:19 +00:00
brendan
57f344b1e3 whoops
svn path=/trunk/net/; revision=4887
2003-06-05 19:18:00 +00:00
brendan
7fce0b586b Karl's sys/select.h patch for fbsd. It must be under another std include on
OS X for some reason.

svn path=/trunk/net/; revision=4886
2003-06-05 19:02:36 +00:00
brendan
6431c0c6a9 Karl's patch for freebsd, minus the sys/select.h test which breaks on OS X.
Also enables IPV6 in libshout!

svn path=/trunk/httpp/; revision=4884
2003-06-05 17:09:12 +00:00
oddsock
a8d602fe33 fixed check for regular file type in win32-specific code
svn path=/trunk/icecast/; revision=4879
2003-06-05 04:15:58 +00:00
brendan
47cef92fcc Karl's patch for a namespace collision he reports on some BSD systems.
svn path=/trunk/net/; revision=4861
2003-06-03 18:29:23 +00:00
Michael Smith
9e8e9a5024 Fix some function comments, sock_write_string() and sock_write may NOT be
called with a non-blocking socket

svn path=/trunk/net/; revision=4845
2003-05-29 12:18:04 +00:00
brendan
494f8fc2b6 Fix curl version test.
YP is enabled by default but automatically turned off if the curl test fails
(unless --enable-yp is explicitly passed to configure, in which case configure
will fail if the curl test fails).

svn path=/trunk/icecast/; revision=4831
2003-05-28 15:04:53 +00:00
Michael Smith
018d0a2700 Fix lots of warnings in new admin stuff - primarily wrong types in printf
format strings.

svn path=/trunk/icecast/; revision=4830
2003-05-28 13:43:48 +00:00
oddsock
8f84c0188a some win32-isms
and a bad free that valgrind yelled at me about

svn path=/trunk/icecast/; revision=4711
2003-05-15 23:19:57 +00:00
oddsock
27c0af2b1d infrastructure for new web-based admin interface
new config option <adminroot>

restructured code a bit in admin.c for a bit better extendability

svn path=/trunk/icecast/; revision=4708
2003-05-15 21:03:32 +00:00
Michael Smith
8527ed7b43 Implementation of aliases contributed by Paul Donohue <icecast@TopQuark.net>
svn path=/trunk/icecast/; revision=4629
2003-04-23 12:44:29 +00:00
Michael Smith
5c5155b8d9 Only consider a path a candidate for file-serving if it exists AND is a normal
file (not a directory, etc.)

svn path=/trunk/icecast/; revision=4616
2003-04-18 14:59:26 +00:00
oddsock
0a1ba85795 printf to stdout not valid with our win32 binary, so lets now use something that will work on win32. note that these should only be used up to the point at which logging is started, then everything should go there.
also added a new stat to represent what is currently being sent to the yp server as "what's playing"

svn path=/trunk/icecast/; revision=4613
2003-04-17 03:23:18 +00:00
Karl Heyes
9431588c99 admin.h is needed for the tarball or else it will fail to compile icecast
svn path=/trunk/icecast/; revision=4612
2003-04-17 01:03:32 +00:00
oddsock
2c2576ed4e - fixed alot of yp logic. timeouts now work properly so the tolerance of
the unavailability of yp servers is much much better now.

- new icecast config option <yp-url-timeout> to specify the timeout

- url encoding is now fixed so that the yp data is formatted much nicer (and is correct :))

- added url encoding for some fields that were not url-encoded

- modified util_dict_urlencode() to not url-encode the key (still does the value)

- new curl option (CURLOPT_NOSIGNAL) which prevents curl from using signals when
  timeouts are hit.  This new option needs curl 7.10 at least.

svn path=/trunk/icecast/; revision=4603
2003-04-11 03:00:24 +00:00
Michael Smith
801ab0bc3e What was I on when I wrote this? oddsock pointed out that util_url_escape()
was chronically broken

svn path=/trunk/icecast/; revision=4602
2003-04-10 14:28:02 +00:00
Michael Smith
2cb0db8e80 Don't pass 0x1 as a pointer to a syscall. oops.
svn path=/trunk/net/; revision=4593
2003-04-08 12:09:57 +00:00
Michael Smith
81cd2d50f5 Implement killsource admin command, to kill sources. Doesn't always do much,
ices (as an example) will auto-reconnect.

svn path=/trunk/icecast/; revision=4571
2003-03-31 12:54:44 +00:00
Michael Smith
ed019c0cd6 Remove locking from refbuf: we used a single global lock for all of them, which
caused significant lock contention with many sources. Further, a single refbuf
is never used by more than one source (and hence one thread), so the locking
was unneeded.

Fix a nasty bug in source.c:_compare_clients() - was casting a void pointer
to the wrong type, and hence all the tree-maintaince comparisons were totally
wrong (but due to the exact nature of the bug this wasn't causing any active
problems until...)

Add another admin command to kill a client - remove it using an id. Note that
many clients will do auto-reconnect, so this may not be sufficient on its own,
we might need a ban (possibly temporary) function.

svn path=/trunk/icecast/; revision=4569
2003-03-30 13:52:27 +00:00
brendan
8651aabcbb First crack at making YP/curl optional.
svn path=/trunk/icecast/; revision=4552
2003-03-27 17:10:14 +00:00
Karl Heyes
8c866378d8 Add package wide CFLAGS, typically used for the pthread options
svn path=/trunk/log/; revision=4543
2003-03-26 22:13:54 +00:00
Karl Heyes
18c2baad5a tabs needed for Makefile
svn path=/trunk/log/; revision=4521
2003-03-21 23:54:09 +00:00
Michael Smith
ca6a611be4 Fix ordering of some calls in source shutdown, silly bug.
Remove wrong comment.

svn path=/trunk/icecast/; revision=4513
2003-03-19 07:59:32 +00:00
Michael Smith
35e22a005a Fix lack of null terminator in audio info/stats stuff.
svn path=/trunk/icecast/; revision=4512
2003-03-19 07:55:42 +00:00
Karl Heyes
0b1a75fd31 better fix for cases with missing inet_aton
svn path=/trunk/net/; revision=4500
2003-03-17 16:47:20 +00:00
Michael Smith
3b2df1d0d9 Brendan was getting pissed off about inconsistent indentation styles.
Convert all tabs to 4 spaces. All code must now use 4 space indents.

svn path=/trunk/avl/; revision=4492
2003-03-15 02:10:19 +00:00
Michael Smith
bd9c2383c5 Bugfix: source shutdown did things in the wrong order, could lead to clients
ending up connecting to a source which didn't exist.

Add 'moveclients' admin command to move all clients from one source to
another (without shutting the old source down)

svn path=/trunk/icecast/; revision=4489
2003-03-14 07:59:58 +00:00
brendan
1198cbb982 Typo (no sleeping between select()s waiting for connections)
svn path=/trunk/icecast/; revision=4478
2003-03-12 05:40:45 +00:00
Karl Heyes
a3268b8d2f avoid freeing a thread structure a second time.
svn path=/trunk/thread/; revision=4477
2003-03-12 03:59:55 +00:00
Michael Smith
596922217b Fix relay stream listing. Remove seperate relay password, there's no
need for it.

svn path=/trunk/icecast/; revision=4464
2003-03-10 22:20:16 +00:00
Karl Heyes
df4431766a reduce include file namespace clutter for libshout and the associated
smaller libs.

svn path=/trunk/avl/; revision=4456
2003-03-09 22:56:46 +00:00
Michael Smith
0d40f034d2 Listing of current mountpoints in admin interface.
svn path=/trunk/icecast/; revision=4455
2003-03-09 14:12:24 +00:00
Michael Smith
eba22526aa Support listening on multiple sockets.
svn path=/trunk/icecast/; revision=4454
2003-03-09 11:27:06 +00:00
Karl Heyes
5565b331da include the automake config.h file if the application defines one
svn path=/trunk/avl/; revision=4450
2003-03-08 16:05:38 +00:00
Michael Smith
a3716577ec Check the right variable for password in icy logins
svn path=/trunk/icecast/; revision=4447
2003-03-08 05:38:52 +00:00
Michael Smith
8c750aaee4 Set another parameter in the icy protocol parse that logging expects
svn path=/trunk/httpp/; revision=4446
2003-03-08 05:27:17 +00:00
Michael Smith
e921a67bd1 create /icy_0 (and incrementing numbers) for incoming icy protocol connections
if the / mountpoint is taken

svn path=/trunk/icecast/; revision=4445
2003-03-08 05:02:13 +00:00
Michael Smith
b2b618c62f Added support for shoutcast login protocol (ewww...)
svn path=/trunk/httpp/; revision=4444
2003-03-08 04:57:02 +00:00
Karl Heyes
8682dba672 more on the XIPH_CFLAGS. For the smaller libs like thread etc put any
passed flags into the compiling rules.  Also configure in libshout now
sets up the XIPH_CFLAGS

svn path=/trunk/avl/; revision=4439
2003-03-08 00:46:59 +00:00
Michael Smith
b520eb3272 Implement listing of all currently connected clients on a mountpoint
svn path=/trunk/icecast/; revision=4434
2003-03-07 14:57:36 +00:00
Michael Smith
d1e8e7bfb7 Send a user-agent header on normal relay requests as well.
svn path=/trunk/icecast/; revision=4417
2003-03-06 14:52:09 +00:00
Michael Smith
f8783aedac Check admin password against the correct username
svn path=/trunk/icecast/; revision=4416
2003-03-06 14:46:33 +00:00
Michael Smith
a79f0b6cae Split admin stuff out into a seperate file, add various utility functions there.
rename util_url_escape to util_url_unescape, and write a util_escape function
that actually DOES escape things. Fix all the callers of the function to call
the correct one of these two.

svn path=/trunk/icecast/; revision=4414
2003-03-06 14:17:33 +00:00
brendan
45c5bff8bb BitKeeper go bye-bye
Whoops, broke thread include path

svn path=/trunk/net/; revision=4413
2003-03-06 05:56:03 +00:00
brendan
3274bc38d4 Require NO_THREAD to be defined to turn off locking in avl and net
According to Karl, defining nops with do{}while(0) is a la mode.

svn path=/trunk/avl/; revision=4412
2003-03-06 02:35:12 +00:00
brendan
cbfe325c2f Use gnu archive ACX_PTHREAD macro to figure out how to compile thread support.
Also make it possible to build libshout without threads, albeit without locking
in the resolver or avl trees.
New option --disable-pthread too.

svn path=/trunk/avl/; revision=4411
2003-03-06 01:55:20 +00:00
brendan
f5059c261e rwlocks were not getting destroyed when avl nodes or trees were freed.
avl.h already includes thread.h

svn path=/trunk/avl/; revision=4410
2003-03-06 00:59:41 +00:00
brendan
ea307d20f7 Remove some namespace pollution
svn path=/trunk/thread/; revision=4409
2003-03-05 19:52:10 +00:00
Michael Smith
d13ebde7a3 Allow rereading config files.
Lots of new locking happening so that it's safe to have the config file
disappear under the rest of the program

Does NOT affect currently-running sources at the moment

svn path=/trunk/icecast/; revision=4406
2003-03-05 13:03:35 +00:00
Michael Smith
4c08a155c7 Make various thread structures omit the bits only used in debug mode.
Some of these are pretty heavily used, so saving 10-20 bytes each can be
quite significant.

No functional differences.

svn path=/trunk/thread/; revision=4401
2003-03-04 15:31:34 +00:00
Michael Smith
fc4f7f2435 doh! This one compiles.
svn path=/trunk/icecast/; revision=4398
2003-03-03 13:09:47 +00:00
Michael Smith
823c5e23c0 Fix buffer-queue length handling (was missing from refbuf_queue_add, which it
used as well as refbuf_queue_insert).

svn path=/trunk/icecast/; revision=4397
2003-03-03 13:04:34 +00:00
Michael Smith
5252a14068 Fix various minor bugs in per-mountpoint configs.
svn path=/trunk/icecast/; revision=4385
2003-03-02 10:36:24 +00:00
Michael Smith
c359faf1de More features:
-- per mountpoint listener maxima
  -- static configuration of mountpoint fallbacks
  -- stream dumping (write incoming stream to disk)

Fixed some warnings that other people introduced.

svn path=/trunk/icecast/; revision=4383
2003-03-02 10:13:59 +00:00
oddsock
1d84364c5a win32 doesn't support line buffering with setvbuf() properly, so for win32
lets just set it to no-buffering for logs.

svn path=/trunk/log/; revision=4381
2003-02-27 03:02:30 +00:00
oddsock
ce167cc6bb whoops...stats can't have spaces in them, since XML can't have spaces in the tags
also, handle case where a client sends a bad ice-audio-info string (variable but no value)

svn path=/trunk/icecast/; revision=4380
2003-02-27 03:01:12 +00:00
oddsock
1658f1717e added parsing of new icy-audio-info header which will be used to
communicate things like samplerate/quality/number of channels to
icecast2. This info will be then forwarded to the yp servers for
better stream info.

also factored out some logic in source_main into common functions

added a few new routines into util.c (taken from Brendan's
updates to libshout)

svn path=/trunk/icecast/; revision=4379
2003-02-26 23:52:23 +00:00
Michael Smith
680e56bf7b mp3 metadata relaying now works (lots of bugs fixed)
svn path=/trunk/icecast/; revision=4366
2003-02-25 09:40:34 +00:00
Michael Smith
47b1d160ae Commit fix for segfault in buffer length handling code.
svn path=/trunk/icecast/; revision=4365
2003-02-24 14:56:49 +00:00
Michael Smith
5019130d27 Max queue length for clients is now
a) based on total bytes in queue, not total number of buffers in queue
    b) configurable (defaults to 100 kB)

mp3 metadata relaying (inline). Untested.

svn path=/trunk/icecast/; revision=4364
2003-02-24 13:37:15 +00:00