Changes from 2.4.2 build 167/168 to 2.4.7 build 256:
(31st March 2015)
- Added multiple 1.x source client support - see the DNAS's 'View Source Connection Details' on the Server Summary page in the interim if needed for the password value to be used or http://wiki.winamp.com/wiki/SHOUTcast_Server_Source_Support
- Added ability for listeners to be provided the 'backupfile or 'streambackupfile' when no source connected (see documentation for usage)
- Added 'backuploop' and 'streambackuploop' options (default = 0 to keep looping) for controlling the number of consecutive backup file play loops
- Added 'backuptitle' and 'streambackuptitle' options for use with the no source backup file support
- Added validation of the passwords to ensure the colon character is a special case that is not used
- Added a server admin page to show the advert group details of the currently active streams as well as the status of advert pulls
- Added visual indication whether a client may play adverts and if it has played any adverts
- Added extra parameter checking of the banning / reserved IP actions (including fixing a DNAS lockup / crash due to bad data in some cases)
- Added banning a client connection by IP / DNS to also block access to most of the API methods from the server
- Added better debug logging of the banning / reserved client access control
- Added server admin page to allow for toggling the debug options on / off whilst the DNAS is running without the need to manually edit the config file
- Added options to enable / disable all of the debugging options on the server admin page
- Added 'streamlisted' and 'streamlistederror' (if applicable) to the stats responses for getting the stream's listed status
- Added automatic downloading of newer DNAS builds and related changes to the new version update messages
- Added auth / metrics / adverts traffic to the bandwidth tracking page and methods
- Added checks to prevent trying to publically list un-supported streams e.g. OGG Vorbis and NSV which are now marked as private
- Added the uptime indication to all of the admin pages for better consistency
- Added extra handling to better detect the stream bitrate from sources (primarily Icecast relays)
- Added clearing the cached stats / playlist responses to the 'clearcache' admin method
- Added a generic html5 audio player to the bottom of the stream summary and admin summary pages as a quick way to check what the stream is playing (mp3 streams only and relies on the browser default implementation)
- Added caching of the public stats and other commonly accessed pages and resources (1 sec) and playlist (5 sec) responses from the server to improve response times under heavy loads
- Added 'startrelays' and 'kicksources' admin modes for batch starting configured relays and batch stopping of all connected sources
- Adding a lot of extra parameter validation based on reproduceable crashes and input validation failures
- Added support for additional genres on the appropriate DNAS pages, api responses and listener connections (how to access this will follow later)
- Added basic support on the Linux build to get some form of crash report with it creating a file like /tmp/sc_serv_segfault_<pid>.log (where <pid> is the process id)
- Added better debug output for tracking transitions into and out of the advert plays as well as the number of successful plays
- Added a debug column when admetricsdebug=1 is set for better tracking of advert issues in addition to the tooltip shown in the connected column
- Added 'referer' and 'x-forwarded-for' values to the listener stats api responses (user request)
- Added option on the server admin summary page for manually checking for new versions of the DNAS
- Added the current log and conf files to the server admin summary page so it is easier to see what is being used
- Added extra 1.x source title UTF-8 conversions which should improve handling of non UTF-8 titles
- Added support to provide PSAs for listeners assigned an advert group but there is available advert group to play on advert triggers
- Added better checking of advert inserts and frame syncing for AAC based streams to improve playback
- Added better memory handling which reduces per-listener and web request memory usage by up to 50% (primarily via structure re-packing and reducing duplication)
- Added support for new YP requirements and interaction
- Changed handling of relays from other 2.x DNAS to reduce CPU usage when active (gives a 50% CPU reduction on the RPi build!)
- Changed when successful title updates are logged to avoid confusion if it subsequently fails
- Changed the public stream status page (index.html?sid=0) to show a bit more information about the active streams (user request)
- Changed the public status page text for YP error code 480 to make it clearer why a stream is not listed
- Changed the log level for bad title updates from error to warning
- Changed some of the threading error messages to be more consistent
- Changed all static images provided by the DNAS to come from <server>/images/* for improved caching and speeds up some page loads
- Changed 'server' to 'stream' where appropriate on the public and admin pages for better consistency
- Changed 'admin login' to 'stream login' and some other related changes for better consistency
- Changed invalid bitrates from the source to be reported as 'unknown' instead of '0'
- Changed the http handler hand-off to the admin.cgi handler to save some compute cycles (micro-optimisation)
- Changed the ordering of the http page handling to detect commonly used pages a bit quicker (micro-optimisation)
- Changed the ordering of the http requests and checks done to speed up commonly accessed pages (in-addition to caching changes)
- Changed some of the curl instances to only be created when actually needed and to not be done for private stream instances
- Changed the advert title display on the song history page to make it clearer what is sent to the clients to make it clearer when an advert title trigger was received and what the listener is sent once its processed
- Changed the error messages when core authhash values are missing in the YP responses instead of showing a generic 400 error message
- Changed 'streampath' handling to filter some inappropriate values seen including self-referencing addresses
- Changed the flow of things in the HTTP request handling to reduce the processing time of such requests
- Changed some common listener response strings to be initialised once instead of every time
- Changed title updates to filter out duplicate title updates where applicable
- Changed all url / ip config value checking to be done consistently and applied to all applicable cases
- Changed the Windows builds timer resolution to a preferred method which will not affect the system wide timer resolution (that was a bad thing to be doing)
- Changed the station name link to shoutcast.com to use the now preferred method
- Changed the 'songhistory' default from 10 to 20 to provide an average of an hour's song history
- Changed the 'metainterval ' default from 8192 to 16384 to better match other broadcasting platforms
- Changed the display of the log / config files on the admin pages to just show the filename and not a complete / partial filepath with the full path as the tool tip for the items
- Changed to show the relay icon for Icecast connections on the listener list so all known relays are clearly visible
- Changed to cache the user-agent of the valid client connection to save re-querying them in other parts of the DNAS
- Changed 'stream url' to 'website' on the stream summary and admin pages
- Changed the timeout for advert pulls to resolve a number of pull failures
- Changed the server sources page layout and added some additional information and reference links
- Changed the ordering of some of the options on the server admin summary page
- Changed logging output to ignore some empty messages that were incorrectly being generated
- Changed internal handling of logging to reduce it's resolution which provides a small CPU usage reduction
- Change accessing /stats without the 'sid' parameter to follow the 1.x style of stream picking to ensure a valid response is provided
- Changed how some parts of the server are built to prevent data being modified when it should not
- Changed w3c log archive name to better distinguish from normal log archive naming
- Changed the /currentsong and /nextsong responses to not attempt to be compressed as most cases will not be smaller and wastes time to determine this
- Changed the Windows event log handling when running as a Windows service to remove superfluous information
- Fixed all reproducible memory and object leaks
- Fixed not being able to transition back to the stream on source re-connect if a listener is being provided the backup file
- Fixed crash on close (and possibly during running) when trying to clean-up source and client connections (race-condition)
- Fixed rare crash on close if processing some of the web requests just after start-up
- Fixed crash if the listener client could not be created
- Fixed a number of stability and memory allocation issues under high connection loads (a lot of work for a single changelog entry!)
- Fixed banning issues which allowed some clients still to connect despite being in the ban list
- Fixed some rare relay starting failures when using a forced configuration reload
- Fixed minor issues with the HTML of the admin pages
- Fixed double-pumping of some title updates via 'admin.cgi?sid=#&mode=updinfo' (mainly affected XML updates)
- Fixed the refresh page timer showing the DNAS uptime in some instances
- Fixed a wrong message being provided for some failed SC2 source connections
- Fixed empty title updates not being allowed (introduced in the last build
- Fixed some web requests not being restarted correctly in some cases
- Fixed a number of crashes on closing due to some in-progress web requests not being aborted when needed or under high connection loads at the time of closing
- Fixed a number of issues if there are issues within libcurl creating connections which could lead to unexpected lockups
- Fixed redirection failures on invalid ban / reserved list / user-agent admin pages due to poor input data
- Fixed loop-back addresses being added to the invalid ban / reserved list when already treated as a special case
- Fixed possible issue with relay failure handling
- Fixed wrong name being stored in the w3c log archive
- Fixed anything obvious found from re-checking the source code via valgrind, cppcheck and manual checking
- Fixed playback skipping issues with WMP due to variations in handling between Windows 7 and Windows 8.x and newer with ICY vs HTTP instances
- Fixed reserved IP handling not working correctly due to checking the wrong value in some cases
- Fixed to make sure we do not miss the YP maximum update interval
- Fixed loading of local files to make use of the relative path fixes (remnent of issues present in 2.4.1 / 2.4.2)
- Fixed generation of the 'host' header value on relay connections to include the port and clean up the address as per RFC specifications
- Fixed crash when processing the empty lines after a "HTTP/1.1 100 Continue" header
- Fixed ID3v1.x tag removal not working correctly on intro and backup file cleanup
- Fixed adverts not being triggered reliably when using a 2.x based source
- Fixed adverts not being triggered correctly when running as a private stream in any of the cdn modes
- Fixed all other reported advert related handling issues
- Fixed handling of some externally sent admin.cgi requests incorrectly getting a redirect response
- Fixed 'songhistory' not being updated on a configuration reload
- Fixed failures to transition into an advert with a 1.x listener client (e.g. format mis-match) then blocking later advert transitions
- Fixed YP connections from being processed via the auth handling
- Fixed title updates via 'admin.cgi?sid=#&mode=updinfo' not always working or not being providing the expected HTTP response (affected some LiquidSoap uses)
- Fixed our OpenSSL and libcurl instances to be built correctly for SNI (Server Name Indication)
- Fixed the wrong log file being shown and reported as being used if the DNAS has to use it's fallback handling to try to ensure a log file will be generated
- Fixed display issues of long intro and backup filepaths in the admin pages
- Updated icons for recognised clients as well as setting a warning icon for some likely stream rippers on the listeners list
- Updated the YP maintenance code and message reporting
- Updated to the latest cacert.pem
- Updated to OpenSSL 1.0.2a
- Updated to libcurl 7.41.0
- Removed the experimental 'streamportlegacy' option as this is no longer needed now with the multi-1.x source support that was added
- Removed the state_GetStreamData debug output for SC1 sources
- Removed incorrect header message on the debug options page
- Removed "Connection:close" for some of the admin page actions header response to speed up some page loads
- Removed the Windows builds dependency on the supporting dlls in the Microsoft.VC90.CRT folder
- Removed 'autoauthhash' functionality due to coming authhash management changes
- Removed the authhash removal action due to coming authhash management changes
- Removed 'email' functionality due to coming authhash management changes
- Removed SSLv2 and SSLv3 support in our OpenSSL and libcurl instances
- Remove direct use of gethostbyname(..)
- Removed AIM, IRC and ICQ support from the web pages and api responses (they have not been supported by the YP for a number of years)
- Other code cleanup, minor bug fixes, page cleanups and anything else to improve stability, useability and responsiveness of the server