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

2043 Commits

Author SHA1 Message Date
Philipp Schafft
8e2fe8a3f7 Fix: Handle mount=NULL in config_find_mount() correctly. 2015-11-11 12:18:15 +00:00
Philipp Schafft
1653d7489a Fix: corrected comment about <shoutcast-mount>
When unset no default is used but the feature is disabled.
(The Shoutcast listen socket is not opened at all.)

Thanks to Jeremiah Rogers for pointing out.
2015-09-10 14:53:44 +00:00
Marvin Scholz
ae83ea8705 Fix two mistakes in the default config's comments 2015-08-31 22:31:31 +02:00
Philipp Schafft
f5d728d730 Fix: Include required headers 2015-08-10 08:54:21 +00:00
Marvin Scholz
16dac2505e Fix that global listener count could be negative under certain circumstances
This fixes a bug that could cause the global listener count of Icecast to
be negative. This was caused due to wrong handling of errors in the
format_prepare_headers function.

Fixes: #2199

Thanks a lot to Simeon Völkel (0xBD4E031CDB4043C9) for reporting
and investigating the bug.
2015-06-06 14:09:44 +02:00
Marvin Scholz
c35760cd50 Fix possible segfaults when header allocation fails
This fixes some possible segfaults that could happen if the header
(re)allocation fails.
2015-06-06 14:09:44 +02:00
Thomas B. Ruecker
2b9440d671 Clarify spelling, shamelessly lifted from Mailman3
Also adjust formatting a bit, kill some trailing spaces.
2015-05-25 13:12:08 +00:00
Thomas B. Ruecker
56bbc0d12c Fix issue with only "-" and whitespace in element
Fixes: #2198

If there is a single "-" or it is only accompanied by whitespace, then
it wouldn't get escaped as it was detected as as a number. This would
produce invalid JSON.
This makes the numbers part ignore such and thus ensures it gets escaped
as text.

There might be other corner cases related to number parsing, this should be investigated.
2015-05-25 12:56:45 +00:00
Thomas B. Ruecker
0b1ac3e9d5 Essential part of upstream pull req No. 20
https://github.com/doekman/xml2json-xslt/pull/20

 Some numeric values would not get formatted to valid JSON. This
 incorporates the suggestions from issue #15.

Also fixed whitespace of original patch.
Additional fix for related issue will follow.
2015-05-25 12:56:45 +00:00
Philipp Schafft
3d2ab9aec2 Fix: Handle case realloc() is used as free().
This (hopefully) corrects the usage of realloc() as free().
This patch is part of the series based on Denis Denisov's input.
2015-04-08 13:05:10 +00:00
Philipp Schafft
6605f4ddaa Fix: Let util_url_escape() handle NULL parameter.
This let util_url_escape() handle NULL passed as parameter.
In case the parameter is NULL it will also return NULL.

This patch also does some cleanup of the code such as migration
away from int and thus avoiding future failtures.

This is a re-apply of 3baa4e46aa
as git refuses to cherry-pick.
2015-04-08 10:25:25 +00:00
Philipp Schafft
c1f0eaff8a Fix: Fixed some smaller bugs such as leaks and performance improvements.
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.
2015-04-08 09:36:59 +00:00
Philipp Schafft
7402383448 Cleanup: move libcurl specifc code into curl.c
This cleans the libcurl usage up a bit. It moves common code used
to interact with libcurl into a single new file curl.[ch].

Notes:
* It does not alter any features nor fixes any bugs.
* Thew REVIEW about strdup(self->url) in event_url.c as been processed.
  According to the manpage for curl_easy_setopt()/CURLOPT_URL
  there is no need for us to copy.
* URL Auth as well as URL triggers have sent ICECAST_VERSION_STRING
  as User-Agent:, this has be corrected to what is set in the config
  file.
* As curl.c is now a single point for setting parameters all the TLS
  parameters should be reviewed and set (based on config).

Please test!
2015-04-08 07:44:36 +00:00
Philipp Schafft
a1f204c184 Cleanup: Renamed <kartoffelsalat> to <event-bindings>
The parent element for <event> was renamed from <kartoffelsalat>
to <event-bindings> as discussed on the mailinglist and on IRC.
2015-03-31 08:20:37 +00:00
Philipp Schafft
2661d4360e Cleanup: More space corrections 2015-03-31 08:14:42 +00:00
Philipp Schafft
8455dbde57 Cleanup: corrected a space 2015-03-31 08:03:28 +00:00
Philipp Schafft
bfbb8f207c Feature: playlist history for ICY based streams.
This patch adds support for history for ICY based streams.
Of cause this has the same limits for metedata as ICY has.

See: #766
2015-03-28 18:14:41 +00:00
Philipp Schafft
961453b0de Added config option for history size.
This adds a <max-history> config option to the <mount> section.
Default is a history size of 4.

See: #766
2015-03-28 17:34:35 +00:00
Philipp Schafft
06fe442c2d Fixed off-by-one error in playlist truncation.
The playlist truncation (may_tracks) was off by one.
This fixes the problem.
2015-03-28 17:33:09 +00:00
Philipp Schafft
5f77b35d14 Initial patch for playlist history support.
This allows to store a history of played songs along the source
object and report it as part of the status XML.

Additional work needs to be done to make this configurable.
Also format_mp3.c needs work to support this.

A generic song changed handler should be implemented to handle this
in a nice way.
That one should also be the point to call logging_playlist().

See: #766
2015-03-28 16:15:49 +00:00
Philipp Schafft
8d513db405 Added operation mode (omode) "strict".
This adds the operation mode "strict". It does not yet have
any specific features and alias the "normal" mode.
This change is mostly to make the setting of "strict" valid
so it can be used already.
2015-03-27 11:15:22 +00:00
Philipp Schafft
5dac23adda Renamed config file SSL references to TLS.
As we do not support any SSL version but TLS this renames
all TLS related config options. Docs still need to be updated.
Close still uses 'ssl' internally e.g. for variable names.
This should be changed on a later patch.
2015-03-27 11:08:50 +00:00
Thomas B. Ruecker
99e11adac3 Remove stray space that managed to sneak in 2015-03-01 17:11:31 +00:00
Thomas B. Ruecker
671c2366cf Fixed log messages and comments
* Reworded many log messages for better understanding.
 * Adjusted some version targets as we won't have a 2.4.2 release.
 * Added some FIXME comments
2015-03-01 16:55:27 +00:00
Thomas B. Ruecker
314aa9660d remove some spurious tabs and replace with spaces
Fix variable alignment if necessary.
2015-03-01 16:55:27 +00:00
Philipp Schafft
c1034058f6 Fix: do not close(-1) on Keep-Alive clients 2015-03-01 16:53:17 +00:00
Philipp Schafft
5e8b24785e Fix: Use correct malloc function 2015-03-01 15:53:57 +00:00
Philipp Schafft
e870c21384 Cleanup: some style corrections. 2015-03-01 15:52:37 +00:00
Marvin Scholz
e0c05ef8a9 Fix another memory leak in xslt loader
This fixes another memory leak, which was caused by not freeing
the admin_path when a subsequent xslt file was loaded.
2015-03-01 15:35:14 +01:00
Marvin Scholz
06545b25c0 Fixed memory leaks in custom xslt loader
This fixes some memory leaks in the xslt loader,
additionally it now makes no copy of the URI if not needed.
2015-03-01 14:30:19 +01:00
Marvin Scholz
0709b4e66d Only look for admin include if no local found
This switches the behaviour introduced with the last commit
so that now the admin folder is only checked for includes if
in the specified path none is found.
2015-02-25 16:11:42 +01:00
Marvin Scholz
5b416b311c Add support for 'admin' includes from web XSLT files
This adds support for including xslt files that are in the admin
directory in an xslt file which is in the webroot, without having to
specify the full path.

For example:

    <xsl:include href="includes/head.xsl"/>

will look inside the admin directory (foo/bar/admin/includes/header.xsl)
and include it, if it's found. If not it will as usual look for it in
the directory where the xslt file is located. This enables us to have
common files like the header, footer, json stuff, etc. in the admin
directory, so we don't need to have an extra copy in the web folder.

Note:
The configuration value for the admin directory is requested
every time an xslt is requested (if not in the cache).
Additonally it should be noted that the includes are not cached.
2015-02-25 15:49:01 +01:00
Philipp Schafft
225c6f240a Fix: do not FTBFS in case OpenSSL support is not compiled in 2015-02-23 21:43:07 +00:00
Thomas B. Ruecker
65e5bc64a2 Icecast default config improvement.
Trying to make it really clear so that more users get it right.
2015-02-18 06:30:30 +00:00
Thomas B. Ruecker
bb51e8326f Sync configure.in to the new win32 structure.
res directory was removed
2015-02-15 09:09:09 +00:00
Thomas B. Ruecker
8be01705ee Cleaning up win32 directory of unused files
We haven't been using VS6 to build Icecast for a while.
We won't be bringing back the management UI, as everything is now
accessible through either web-ui or start menu.

Proper Windows service handling remains on todo list for 2.5.0.
2015-02-15 08:35:40 +00:00
Thomas B. Ruecker
f2de6e9677 Fixed whitespace mistakes in NSIS script 2015-02-15 08:23:39 +00:00
Thomas B. Ruecker
6744fc3c70 Include dllbundler for easier/automated packaging
Copied by permission from the quake2world project.
2015-02-15 08:09:43 +00:00
Thomas B. Ruecker
da74c6407e Adding NSIS script to git.
This script helps package Icecast into a Windows installer.
It is used for the mingw32 builds of Icecast.
2015-02-15 08:09:02 +00:00
Philipp Schafft
1e80611d1c Sync submodules 2015-02-10 21:26:33 +00:00
Philipp Schafft
a1e5d2ab8a Cleanup: connection.c:776: warning: unused variable expectcontinue 2015-02-10 21:20:58 +00:00
Philipp Schafft
36d10121cf Feature: Support PUT with chunked transfer encoding.
This adds the Transfer-Encoding chunked to PUT support.

Please test carefully. Will add PUT to Allow: header after testing.

Have fun.

Closes: #2088
2015-02-10 21:18:52 +00:00
Philipp Schafft
79cb147c4a Cleanup: unbreak 100-continue a bit.
This tries to unbreak the 100-continue thing a bit.
Proper headers are send in case of 100-continue. Also the 200 OK
was moved to the end of the stream.
The client may even be reused. But I'm not sure we only do
'End of stream' in cases we are not on an undefined state of the
client. Do we as of now support anything that give us EOS without
a fatal socket state (error or shutdown)?

At least this unbreaks 100-continue with active TLS that was broken
as hell as we sent the header in clear over the socket. Not checking
if it was transmitted completly or something. Using lowlevel socket
calls (in contrast to the connection level calls that would have
handled the TLS just fine).

While this seem sto be a huge improvement to the situation I kindly
ask you to do a lot testing on this. Both with SOURCE as well as
PUT clients.
2015-02-10 09:44:11 +00:00
Philipp Schafft
d6908eb024 Fix/Cleanup: Answer SOURCE/PUT requests with a real 200-OK.
We have answered SOURCE/PUT requests with a simple
"HTTP/1.0 200 OK\r\n\r\n" while we should answer with complet
headers. This commit corrects this.

Interoperability:
This will work for two classes of clients:
 * Super dumb ones not checking the response and will just send
   data and hope the socket is still open.
 * Those with a real parser.
 * Shoutcast clients (indepnded code path).
 * All libshout, curl, wget, ... based clients.

This *could* break:
 * Clients that check for the exact returned message. However
   as we start with the same string this should work.
   Only client that check for the string including the End-of-header
   CRLF sequense may break.

Please test careful before release.
2015-02-10 09:12:33 +00:00
Philipp Schafft
9cf6d9313c Sync common/ 2015-02-10 08:46:44 +00:00
Philipp Schafft
9e975d56cb Fix: Do not show <listener> tags on admin/stats.xsl 2015-02-09 14:25:45 +00:00
Philipp Schafft
91eb78fc3a Feature: Expose TLS status in <listener> tags.
This exposes the TLS status as <tls> tag in the <listener> tag.
The tag contains a bool ("true" or "false"). TLS mode, version and
other parameters are out of the scope of this tag and may be added
as independed tags in later commits.
2015-02-09 12:14:16 +00:00
Philipp Schafft
927ccf5213 Cleanup: corrected comment TAGs 2015-02-09 12:06:29 +00:00
Philipp Schafft
c89a5714fb Cleanup: Converted tag <Listeners> to lowercase.
This converts the <Listeners> tag to lowercase on listclients admin
command. This is to align with stats.xml which already uses lowercase.
See: #2097
2015-02-09 12:03:00 +00:00
Philipp Schafft
765ceabe81 Fix: Detect socket errors on TLS based source connections 2015-02-07 12:21:31 +00:00