output/httpd: add config option "dscp"
Closes https://github.com/MusicPlayerDaemon/MPD/issues/1401
This commit is contained in:
parent
219c416a1e
commit
be72d45356
|
@ -994,6 +994,13 @@ It is highly recommended to configure a fixed format, because a stream cannot sw
|
|||
- Binds the HTTP server to the specified port.
|
||||
* - **bind_to_address ADDR**
|
||||
- Binds the HTTP server to the specified address (IPv4, IPv6 or local socket). Multiple addresses in parallel are not supported.
|
||||
* - **dscp_class CLASS**
|
||||
- Sets a DSCP (`Differentiated Services Code Point
|
||||
<https://en.wikipedia.org/wiki/Differentiated_services>`__)
|
||||
class for outgoing traffic. This can either be a name
|
||||
(``CS*``, ``LE``, ``AF*``, ``EF``) or numeric (decimal or
|
||||
hexadecimal). A reasonable choice for this setting is ``CS3``
|
||||
("broadcast video").
|
||||
* - **encoder NAME**
|
||||
- Chooses an encoder plugin. A list of encoder plugins can be found in the encoder plugin reference :ref:`encoder_plugins`.
|
||||
* - **max_clients MC**
|
||||
|
|
|
@ -28,11 +28,13 @@
|
|||
#include "Page.hxx"
|
||||
#include "IcyMetaDataServer.hxx"
|
||||
#include "event/Call.hxx"
|
||||
#include "net/DscpParser.hxx"
|
||||
#include "util/Domain.hxx"
|
||||
#include "util/DeleteDisposer.hxx"
|
||||
#include "config/Net.hxx"
|
||||
|
||||
#include <cassert>
|
||||
#include <stdexcept>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
@ -49,6 +51,15 @@ HttpdOutput::HttpdOutput(EventLoop &_loop, const ConfigBlock &block)
|
|||
website(block.GetBlockValue("website", "Set website in config")),
|
||||
clients_max(block.GetBlockValue("max_clients", 0U))
|
||||
{
|
||||
if (const auto *p = block.GetBlockParam("dscp_class"))
|
||||
p->With([this](const char *s){
|
||||
const int value = ParseDscpClass(s);
|
||||
if (value < 0)
|
||||
throw std::runtime_error("Not a valid DSCP class");
|
||||
|
||||
ServerSocket::SetDscpClass(value);
|
||||
});
|
||||
|
||||
/* set up bind_to_address */
|
||||
|
||||
ServerSocketAddGeneric(*this, block.GetBlockValue("bind_to_address"), block.GetBlockValue("port", 8000U));
|
||||
|
|
Loading…
Reference in New Issue