release v0.19.4
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJUa674AAoJECNuiljG20USNMUQAIpl0/cJI98dljXWZ4uzaRoc JMPTvWkVUP9qBN3VnNISR+2NXsL7iGO6rXh9MACpfv8mcOf+/jg8LCX/3/RzDkP+ lnhFqQ+xnl3TUjwpABKM2lU87I8QXamtCbxEvONTpcH4Dt/GVfBolrlzBu1G17cF 7f07uZntpz/Dhtg0SWCVLS+QDGQtDNCgpXcfGlxWsGfEBWKAC+Aifv+2QDA0nXOU WfOU2r3vV3UNmQSu0/O6cyB5Du01SVVYSa5BNpLu3o6CHawAhVcTXdLX12JSDahk Qjy9VAF9bX+odZJ9M4xAlRBZYZWKfiZ6Dt0FevevqAllkd2GlQJPXWWXWXJ4PWd+ a3K/js1hLgCIO2qk8aDKaFGTOnVk5F5eFN6d+jh5gwcuFiGa0CcSWxaCEe7vBVy3 CTukuUBlgN4hA9gBNNvJrpbV+BO8ZY1LkS6w3E95Qz3VrwclTl5qKW2+6TYLMKBA VIBQM8TwOHAKyhn50vhBfk6Zz6c28LkrMc0Ycm5xFD1I3fC6E62vqDVfBUMr9HJi fG3PmxcrSTH8ZKgSADjF7DtR0M5munUrQhw7w0pwXUpKuDvUg3nIHulu88Dl9rZq MDODNRpBkQwGXs9i4SxLTSA9nQtlAh3x3mqtjOf1i2jhkuSJ8R8jQne+8wDaT0Bt dXD9h+qc/8+FOnrB0uYd =LYOC -----END PGP SIGNATURE----- Merge tag 'v0.19.4'
This commit is contained in:
commit
26382713c2
15
NEWS
15
NEWS
@ -5,6 +5,15 @@ ver 0.20 (not yet released)
|
|||||||
* output
|
* output
|
||||||
- pulse: set channel map to WAVE-EX
|
- pulse: set channel map to WAVE-EX
|
||||||
|
|
||||||
|
ver 0.19.4 (2014/11/18)
|
||||||
|
* protocol
|
||||||
|
- workaround for buggy clients that send "add /"
|
||||||
|
* decoder
|
||||||
|
- ffmpeg: support opus
|
||||||
|
- opus: add MIME types audio/ogg and application/ogg
|
||||||
|
* fix crash on failed filename charset conversion
|
||||||
|
* fix local socket detection from uid=0 (root)
|
||||||
|
|
||||||
ver 0.19.3 (2014/11/11)
|
ver 0.19.3 (2014/11/11)
|
||||||
* protocol
|
* protocol
|
||||||
- fix "(null)" result string to "list" when AlbumArtist is disabled
|
- fix "(null)" result string to "list" when AlbumArtist is disabled
|
||||||
@ -127,6 +136,12 @@ ver 0.19 (2014/10/10)
|
|||||||
* install systemd unit for socket activation
|
* install systemd unit for socket activation
|
||||||
* Android port
|
* Android port
|
||||||
|
|
||||||
|
ver 0.18.18 (2014/11/18)
|
||||||
|
* decoder
|
||||||
|
- ffmpeg: support opus
|
||||||
|
* fix crash on failed filename charset conversion
|
||||||
|
* fix local socket detection from uid=0 (root)
|
||||||
|
|
||||||
ver 0.18.17 (2014/11/02)
|
ver 0.18.17 (2014/11/02)
|
||||||
* playlist
|
* playlist
|
||||||
- don't allow empty playlist name
|
- don't allow empty playlist name
|
||||||
|
@ -127,7 +127,7 @@ public:
|
|||||||
* a local (UNIX domain) socket?
|
* a local (UNIX domain) socket?
|
||||||
*/
|
*/
|
||||||
bool IsLocal() const {
|
bool IsLocal() const {
|
||||||
return uid > 0;
|
return uid >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned GetPermission() const {
|
unsigned GetPermission() const {
|
||||||
|
@ -41,7 +41,7 @@ Client::AllowFile(Path path_fs, Error &error) const
|
|||||||
instance */
|
instance */
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (uid <= 0) {
|
if (uid < 0) {
|
||||||
/* unauthenticated client */
|
/* unauthenticated client */
|
||||||
error.Set(ack_domain, ACK_ERROR_PERMISSION, "Access denied");
|
error.Set(ack_domain, ACK_ERROR_PERMISSION, "Access denied");
|
||||||
return false;
|
return false;
|
||||||
|
@ -61,7 +61,16 @@ translate_uri(Client &client, const char *uri)
|
|||||||
CommandResult
|
CommandResult
|
||||||
handle_add(Client &client, gcc_unused unsigned argc, char *argv[])
|
handle_add(Client &client, gcc_unused unsigned argc, char *argv[])
|
||||||
{
|
{
|
||||||
const char *const uri = translate_uri(client, argv[1]);
|
const char *uri = argv[1];
|
||||||
|
if (memcmp(uri, "/", 2) == 0)
|
||||||
|
/* this URI is malformed, but some clients are buggy
|
||||||
|
and use "add /" to add the whole database, which
|
||||||
|
was never intended to work, but once did; in order
|
||||||
|
to retain backwards compatibility, work around this
|
||||||
|
here */
|
||||||
|
uri = "";
|
||||||
|
|
||||||
|
uri = translate_uri(client, uri);
|
||||||
if (uri == nullptr)
|
if (uri == nullptr)
|
||||||
return CommandResult::ERROR;
|
return CommandResult::ERROR;
|
||||||
|
|
||||||
|
@ -510,6 +510,13 @@ static const char *const opus_suffixes[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const char *const opus_mime_types[] = {
|
static const char *const opus_mime_types[] = {
|
||||||
|
/* the official MIME type (RFC 5334) */
|
||||||
|
"audio/ogg",
|
||||||
|
|
||||||
|
/* deprecated (RFC 5334) */
|
||||||
|
"application/ogg",
|
||||||
|
|
||||||
|
/* deprecated; from an early draft */
|
||||||
"audio/opus",
|
"audio/opus",
|
||||||
nullptr
|
nullptr
|
||||||
};
|
};
|
||||||
|
@ -130,7 +130,7 @@ get_remote_uid(int fd)
|
|||||||
socklen_t len = sizeof (cred);
|
socklen_t len = sizeof (cred);
|
||||||
|
|
||||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) < 0)
|
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) < 0)
|
||||||
return 0;
|
return -1;
|
||||||
|
|
||||||
return cred.uid;
|
return cred.uid;
|
||||||
#else
|
#else
|
||||||
|
@ -46,7 +46,11 @@ AllocatedPath
|
|||||||
AllocatedPath::FromUTF8(const char *path_utf8)
|
AllocatedPath::FromUTF8(const char *path_utf8)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_GLIB
|
#ifdef HAVE_GLIB
|
||||||
return AllocatedPath(Donate(), ::PathFromUTF8(path_utf8));
|
char *path = ::PathFromUTF8(path_utf8);
|
||||||
|
if (path == nullptr)
|
||||||
|
return AllocatedPath::Null();
|
||||||
|
|
||||||
|
return AllocatedPath(Donate(), path);
|
||||||
#else
|
#else
|
||||||
return FromFS(path_utf8);
|
return FromFS(path_utf8);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user