]>
git.sesse.net Git - cubemap/log
Steinar H. Gunderson [Sun, 17 Nov 2019 18:59:12 +0000 (19:59 +0100)]
Release Cubemap 1.4.3.
Steinar H. Gunderson [Sun, 17 Nov 2019 18:52:23 +0000 (19:52 +0100)]
Always compile with -pthread.
Steinar H. Gunderson [Wed, 16 Oct 2019 16:56:14 +0000 (18:56 +0200)]
Allow (and forward) zero-byte UDP packets.
Steinar H. Gunderson [Sun, 13 Oct 2019 21:14:04 +0000 (23:14 +0200)]
Fix a crash when trying to get HLS fragments from a disconnected strema.
After the last patch, we would try to serve HLS fragments even if the
backend is down, but we had zeroed out the HTTP header, causing an
assertion failure with HTTP/1.1 clients (and an invalid HTTP response
for HTTP/1.0 clients). Fix by keeping the header and setting a special
“unavailable” flag instead (which allows us to keep sending HLS fragments).
Steinar H. Gunderson [Mon, 15 Apr 2019 07:33:36 +0000 (09:33 +0200)]
Keep the HLS backlog even if the stream header changes.
The typical case here is if we are streaming fMP4 and the encoder
has to restart. The regular (non-HLS) stream has to cut off the
backlog here, but HLS supports multiple headers, so we can add a
discontinuity to keep the backlog seekable.
I haven't actually found a client that will play correctly across
the discontinuity, but hls.js can at least _seek_ across it,
which is already useful.
Steinar H. Gunderson [Sat, 13 Apr 2019 12:38:14 +0000 (14:38 +0200)]
Fix an issue where HLS fragments would become too short when pts was low.
Steinar H. Gunderson [Sat, 22 Dec 2018 00:26:28 +0000 (01:26 +0100)]
Fix an ineffective assert.
Found by Coverity Scan.
Steinar H. Gunderson [Sat, 22 Dec 2018 00:25:36 +0000 (01:25 +0100)]
Silence an irrelevant Coverity Scan warning.
Steinar H. Gunderson [Sat, 22 Dec 2018 00:24:26 +0000 (01:24 +0100)]
Fix an unlikely leak in HTTPInput.
Found by Coverity Scan.
Steinar H. Gunderson [Sat, 22 Dec 2018 00:23:10 +0000 (01:23 +0100)]
Fix an unneeded comparison with zero.
Found by Coverity Scan.
Steinar H. Gunderson [Sat, 22 Dec 2018 00:21:50 +0000 (01:21 +0100)]
Fix serialization of Client::header_or_short_response_bytes_sent.
We used an uninitialized variable due to a typo. Found by Coverity Scan.
Steinar H. Gunderson [Fri, 21 Dec 2018 14:38:05 +0000 (15:38 +0100)]
Release Cubemap 1.4.2.
Steinar H. Gunderson [Thu, 1 Nov 2018 16:40:24 +0000 (17:40 +0100)]
Make integer parsing a bit prettier, and fix problems with backlogs larger than 32 bits.
Steinar H. Gunderson [Wed, 12 Sep 2018 21:03:05 +0000 (23:03 +0200)]
Release Cubemap 1.4.1.
Steinar H. Gunderson [Wed, 12 Sep 2018 17:58:33 +0000 (19:58 +0200)]
Fix 32-bit compilation issues.
Steinar H. Gunderson [Fri, 31 Aug 2018 23:23:06 +0000 (01:23 +0200)]
Release Cubemap 1.4.0.
Steinar H. Gunderson [Wed, 29 Aug 2018 07:34:00 +0000 (09:34 +0200)]
Some README updates.
Steinar H. Gunderson [Sun, 26 Aug 2018 14:56:22 +0000 (16:56 +0200)]
Force input encoding for UDP streams to raw already at config parsing.
Otherwise, it would be counted as src_encoding=metacube at the point
where we matched it up with serialized streams, causing problems with
the stream being dropped on reload.
Bug reported by Tore Sinding Bekkedal.
Steinar H. Gunderson [Sun, 8 Jul 2018 17:48:05 +0000 (19:48 +0200)]
Fix upgradability of keepalive status across exec.
Steinar H. Gunderson [Sun, 8 Jul 2018 17:47:26 +0000 (19:47 +0200)]
Add a TODO on Client::serving_hls_playlist.
Steinar H. Gunderson [Sun, 8 Jul 2018 17:44:07 +0000 (19:44 +0200)]
Fix that HTTP keepalive information would get lost across exec(), which could lead on crashes when a client had to skip data.
Steinar H. Gunderson [Thu, 17 May 2018 20:13:55 +0000 (22:13 +0200)]
Enable RX support for kTLS.
This bumps the TLS requirement to >= 4.17 (tested with 4.17.0-rc4),
and doesn't really help all that much (neither in performance nor
complexity), but there's no point in supporting a separate non-RX-capable
path for 4.13 through 4.16.
Includes updating tlse.c to the latest version.
Steinar H. Gunderson [Sun, 22 Apr 2018 18:19:27 +0000 (20:19 +0200)]
Make the Munin plugin stop count keepalive clients in the total.
Now that we have better control of HLS, it's better to just label
these as “unknown” and not count them in the stream total.
Steinar H. Gunderson [Sun, 22 Apr 2018 18:18:51 +0000 (20:18 +0200)]
Keep information about HLS downloads around for some time afterwards.
Gives _much_ more precise statistics for HLS clients, as they tend to
spend most of their time in idle (even with multiple connections).
Steinar H. Gunderson [Sun, 22 Apr 2018 18:18:02 +0000 (20:18 +0200)]
Do not close connections in keepalive across reloads.
Steinar H. Gunderson [Sun, 22 Apr 2018 16:33:56 +0000 (18:33 +0200)]
Correct the “bytes sent” counter for persistent connections in access.log.
Steinar H. Gunderson [Sun, 22 Apr 2018 15:18:33 +0000 (17:18 +0200)]
Update performance claims in README.
Update README; 10gig isn't even hard anymore these days, the kernels are so
fast. Andre Tomt verified ~40 Gbit/sec with kTLS on a quadcore 45W Xeon D,
with no particular tuning.
Steinar H. Gunderson [Sun, 22 Apr 2018 14:34:00 +0000 (16:34 +0200)]
Fix timeout behavior with persistent connections.
We'd either never time out clients (if the expiry check happened
while they were receiving a request) or time them out too soon
(based on the connection time instead of the time of last request end).
Steinar H. Gunderson [Tue, 17 Apr 2018 16:10:06 +0000 (18:10 +0200)]
Make the Munin plugin count downloading fragments as equivalent to the stream.
This doesn't really fix the full issue of counting HLS clients, but at least
it's a start.
Steinar H. Gunderson [Mon, 16 Apr 2018 19:06:25 +0000 (21:06 +0200)]
Unbreak header parsing; it was broken by the case-sensitivity fixes.
Steinar H. Gunderson [Tue, 10 Apr 2018 16:00:20 +0000 (18:00 +0200)]
Add a missing #include.
Reported by Marcus Nilsen.
Steinar H. Gunderson [Tue, 10 Apr 2018 15:58:38 +0000 (17:58 +0200)]
Flush after writing pending TLS data.
Cuts something like 600 ms away from the initial TLS handshake,
as we kept having unflushed data that would require waiting for
the 200 ms TCP_CORK timer.
Steinar H. Gunderson [Mon, 9 Apr 2018 20:56:24 +0000 (22:56 +0200)]
Make HTTP header parsing case-insensitive.
Steinar H. Gunderson [Mon, 9 Apr 2018 18:57:15 +0000 (20:57 +0200)]
Capitalize HTTP header names after dashes.
In particular, writing Content-Length instead of Content-length fixes a
problem where VLC's HTTP client would hang forever on our responses.
This makes HLS generally work in VLC, although it still starts playing
from the start instead of from the end.
Steinar H. Gunderson [Mon, 9 Apr 2018 18:28:31 +0000 (20:28 +0200)]
Send close_notify when closing a kTLS connection; fixes some warnings from GnuTLS.
Steinar H. Gunderson [Sat, 7 Apr 2018 10:04:38 +0000 (12:04 +0200)]
Try to fix some overflow issues on 32-bit platforms, where size_t is 32-bit. Untested.
Steinar H. Gunderson [Sat, 7 Apr 2018 09:15:50 +0000 (11:15 +0200)]
Fix a GCC warning.
Steinar H. Gunderson [Sat, 7 Apr 2018 09:14:51 +0000 (11:14 +0200)]
Replace map with unordered_map nearly everywhere, for speed.
Steinar H. Gunderson [Sat, 7 Apr 2018 00:58:10 +0000 (02:58 +0200)]
When doing persistent connections, explicitly flush the socket so that we do not get 200 ms extra delay for the last bytes due to TCP_CORK.
Steinar H. Gunderson [Fri, 6 Apr 2018 20:57:14 +0000 (22:57 +0200)]
Add support for serving HLS playlists.
This depends on the new Metacube PTS metadata block, which only
Nageru >= 1.7.2 serves at the moment. Lightly tested with iOS and hls.js;
does not work with VLC and mpv yet.
Steinar H. Gunderson [Thu, 5 Apr 2018 18:21:22 +0000 (20:21 +0200)]
Add support for deduplicating headers/short responses.
We don't do any of it right now, but it is relevant when we get HLS
playlists, which we may very well want to share between clients.
Steinar H. Gunderson [Wed, 4 Apr 2018 20:46:20 +0000 (22:46 +0200)]
Add ?frag=header for getting a HLS fragment of the header only (useful for fMP4).
Steinar H. Gunderson [Tue, 3 Apr 2018 22:40:33 +0000 (00:40 +0200)]
Support delivering fragments from the backlog; intended for HLS.
Steinar H. Gunderson [Tue, 3 Apr 2018 21:29:45 +0000 (23:29 +0200)]
Support HTTP/1.1 persistent connections (not that useful yet).
Steinar H. Gunderson [Fri, 6 Apr 2018 17:13:21 +0000 (19:13 +0200)]
Do not serialize prebuffering_bytes in StreamProto.
There's no need to do this now that we can't have zombie streams anymore
(to be honest, the reason used to be rather thin already; it probably was
rather unintentional).
Steinar H. Gunderson [Fri, 6 Apr 2018 17:11:03 +0000 (19:11 +0200)]
Automatically delete streams that are no longer in the configuration file.
Earlier, you had to mark this by setting src=delete, or the stream would linger
on in a sort of half-state; this was meant as a protection against configuration
messup. It has shown not to be that easy to mess this up in practice, so remove
it to make cleanup simpler.
Steinar H. Gunderson [Thu, 5 Apr 2018 15:58:22 +0000 (17:58 +0200)]
Use C++11 std::mutex and std::lock_guard instead of our RAII wrapper.
Steinar H. Gunderson [Thu, 5 Apr 2018 15:48:39 +0000 (17:48 +0200)]
Use in-class initialization for making it harder to forget to set a default.
Steinar H. Gunderson [Thu, 5 Apr 2018 07:48:46 +0000 (09:48 +0200)]
Use nullptr instead of NULL everywhere.
Steinar H. Gunderson [Thu, 5 Apr 2018 07:47:27 +0000 (09:47 +0200)]
Use unique_ptr a few places instead of explicit delete.
Steinar H. Gunderson [Thu, 5 Apr 2018 07:41:16 +0000 (09:41 +0200)]
Use C++11 right angle brackets.
Steinar H. Gunderson [Thu, 5 Apr 2018 07:40:42 +0000 (09:40 +0200)]
Use C++11 range-based for loops and auto wherever it makes sense.
Steinar H. Gunderson [Thu, 5 Apr 2018 07:40:07 +0000 (09:40 +0200)]
Open up for C++11.
Steinar H. Gunderson [Wed, 4 Apr 2018 22:49:20 +0000 (00:49 +0200)]
Update metacube2.h with the latest version (sync with Nageru).
Contains a new pts metadata block. We don't actually use it yet.
Steinar H. Gunderson [Wed, 4 Apr 2018 22:43:55 +0000 (00:43 +0200)]
Do some cleanup around EPOLL_CTL_MOD operations.
Steinar H. Gunderson [Tue, 3 Apr 2018 16:25:14 +0000 (18:25 +0200)]
Stop leaking TLS contexts.
Steinar H. Gunderson [Tue, 3 Apr 2018 16:24:00 +0000 (18:24 +0200)]
Add an example for a TLS port.
Steinar H. Gunderson [Sun, 1 Apr 2018 19:03:13 +0000 (21:03 +0200)]
Add server-side TLS support, through kTLS.
This, unfortunately, includes a (lightly patched) embedded copy of
the TLS library TLSe in tlse/, since it doesn't really work in any
other way.
Steinar H. Gunderson [Sun, 1 Apr 2018 00:44:02 +0000 (02:44 +0200)]
Bump version to 1.4.0-pre.
Steinar H. Gunderson [Sat, 31 Mar 2018 17:22:54 +0000 (19:22 +0200)]
Remove some code for pre-1.1.3 deserialization compatibility.
Steinar H. Gunderson [Sat, 31 Mar 2018 10:15:13 +0000 (12:15 +0200)]
Fix a spurious warning during deserialization of UDP streams.
Steinar H. Gunderson [Wed, 24 May 2017 19:28:51 +0000 (21:28 +0200)]
Release Cubemap 1.3.2.
Steinar H. Gunderson [Wed, 24 May 2017 19:24:57 +0000 (21:24 +0200)]
Fix a problem where streams with paths exactly 7 characters long get broken buffering behavior (served from start of backlog).
Steinar H. Gunderson [Fri, 22 Jul 2016 22:45:50 +0000 (00:45 +0200)]
Bump version number to 1.3.2-dev.
Steinar H. Gunderson [Fri, 22 Jul 2016 22:44:24 +0000 (00:44 +0200)]
Release Cubemap 1.3.1.
Steinar H. Gunderson [Fri, 22 Jul 2016 22:41:26 +0000 (00:41 +0200)]
Add latency statistics to the Munin plugin.
Steinar H. Gunderson [Sat, 16 Jul 2016 17:43:29 +0000 (19:43 +0200)]
Support Metacube metadata blocks, specifically timestamps.
Allows you to measure latency from encoder to reflector; specifically,
this is useful to figure out if you have a HTTP queue that keeps on
growing indefinitely.
Steinar H. Gunderson [Wed, 13 Jul 2016 22:50:28 +0000 (00:50 +0200)]
Bump version number to 1.3.1-dev.
Steinar H. Gunderson [Wed, 13 Jul 2016 22:48:52 +0000 (00:48 +0200)]
Release Cubemap 1.3.0.
Steinar H. Gunderson [Wed, 13 Jul 2016 18:59:25 +0000 (20:59 +0200)]
Fix verbosity checks on deserialization.
Steinar H. Gunderson [Wed, 13 Jul 2016 18:58:38 +0000 (20:58 +0200)]
Add some log suppressions I missed last time.
Steinar H. Gunderson [Wed, 13 Jul 2016 13:51:52 +0000 (15:51 +0200)]
Suppress HTTP input errors if there are too many of them; reduces log spam a fair bit.
Steinar H. Gunderson [Fri, 27 May 2016 08:13:26 +0000 (10:13 +0200)]
Fix a memory leak with raw inputs.
Steinar H. Gunderson [Fri, 27 May 2016 08:11:19 +0000 (10:11 +0200)]
Fix an issue where “http” could sneak into the Host: header.
Steinar H. Gunderson [Tue, 24 May 2016 22:15:40 +0000 (00:15 +0200)]
Remove input encoding for UDP streams.
Metacube input makes no sense for UDP; this was a bit too eager
copy-and-paste. And even worse, it had now become default.
Steinar H. Gunderson [Tue, 24 May 2016 22:10:39 +0000 (00:10 +0200)]
Fix a typo.
Steinar H. Gunderson [Mon, 9 May 2016 21:26:16 +0000 (23:26 +0200)]
Make the HTTP client send the right Host: header.
Steinar H. Gunderson [Mon, 18 Apr 2016 22:17:46 +0000 (00:17 +0200)]
Fix an issue where Metacube output would not include updated headers (e.g. on encoder restart).
Steinar H. Gunderson [Sat, 9 Apr 2016 23:15:21 +0000 (01:15 +0200)]
Add suppor for raw (non-Metacube) inputs over HTTP. Only really useful for TS.
Steinar H. Gunderson [Sat, 9 Apr 2016 23:15:00 +0000 (01:15 +0200)]
Explicitly specify proto2 syntax to silence a warning.
Philipp Kern [Sat, 2 Apr 2016 13:52:33 +0000 (15:52 +0200)]
Install the systemd service without obeying PREFIX.
Steinar H. Gunderson [Sun, 3 Apr 2016 23:54:44 +0000 (01:54 +0200)]
Bump versoin to 1.2.3-dev.
Steinar H. Gunderson [Fri, 1 Apr 2016 23:35:42 +0000 (01:35 +0200)]
Release Cubemap 1.2.2.
Steinar H. Gunderson [Fri, 1 Apr 2016 23:17:18 +0000 (01:17 +0200)]
Fix an issue where access.log would have the wrong timestamp.
The refactoring to use monotonic timestamps did not take into account
that the timestamps are used for the access log, so it'd contain
(roughly) time since boot instead of the actual time of day. Fixed by
measuring the offset between the two (although if the clock is wrong
at the time of logging, the connection time will be wrong -- as opposed
to if the clock is wrong at the time of connect, hard to say which is
the better). Reported by Joachim Tingvold.
While we are at it, change some of the timespec functions so that we
get slightly more precise timing in the logs (it could be about a second
off). For cosmetics only.
Steinar H. Gunderson [Mon, 28 Mar 2016 22:36:57 +0000 (00:36 +0200)]
Fix HTTP connections to IPv6 address literals.
Steinar H. Gunderson [Mon, 28 Mar 2016 22:35:39 +0000 (00:35 +0200)]
Up the Metacube block limit yet again; MP4 can create huge clusters.
Steinar H. Gunderson [Mon, 28 Mar 2016 22:35:08 +0000 (00:35 +0200)]
Add a missing compilation step to the README.
Steinar H. Gunderson [Wed, 17 Feb 2016 19:42:17 +0000 (20:42 +0100)]
Update email address.
Steinar H. Gunderson [Thu, 3 Sep 2015 19:14:41 +0000 (21:14 +0200)]
Add a configure script, for easier override of CXXFLAGS etc.
Steinar H. Gunderson [Thu, 3 Sep 2015 19:12:05 +0000 (21:12 +0200)]
Add missing libsystemd-dev package to HOWTO.
Steinar H. Gunderson [Sun, 30 Aug 2015 11:18:24 +0000 (13:18 +0200)]
Bump version number to 1.2.2-pre.
Steinar H. Gunderson [Sun, 30 Aug 2015 11:16:48 +0000 (13:16 +0200)]
Release Cubemap 1.2.1.
Steinar H. Gunderson [Sun, 16 Aug 2015 11:26:20 +0000 (13:26 +0200)]
Rename ping to gen204, and change the response type to a 204 No Response, since that is a bit more appropriate than a dummy one.
Steinar H. Gunderson [Sat, 15 Aug 2015 22:50:05 +0000 (00:50 +0200)]
Add a simple HTTP endpoint that returns a very short string.
The intention is for clients to be able to probe the endpoint
to figure out which server is the fastest. To this end,
it supports CORS headers so that XHR is allowed to differentiate
servers that are down from servers that respond properly.
Steinar H. Gunderson [Sat, 15 Aug 2015 22:27:33 +0000 (00:27 +0200)]
Rename header_or_error to header_or_short_response, as it will soon be able to contain pongs.
Similarly, rename the state from SENDING_ERROR to SENDING_SHORT_RESPONSE.
Steinar H. Gunderson [Mon, 10 Aug 2015 22:13:39 +0000 (00:13 +0200)]
Use libsystemd to inform systemd accurately about when the service is up and running.
Steinar H. Gunderson [Fri, 7 Aug 2015 22:20:00 +0000 (00:20 +0200)]
Remove std:: from all code in .cpp files, for consistency.
Steinar H. Gunderson [Fri, 7 Aug 2015 22:16:47 +0000 (00:16 +0200)]
Add a missing const.
Steinar H. Gunderson [Fri, 7 Aug 2015 20:54:50 +0000 (22:54 +0200)]
Better documentation of config options in cubemap.config.sample.
There were too many options that were basically undocumented by now;
add some hopefully helpful comments.
Steinar H. Gunderson [Fri, 24 Jul 2015 16:11:33 +0000 (18:11 +0200)]
Bump version number to 1.2.1-pre.