Commit Graph

4515 Commits

Author SHA1 Message Date
Brad Keifer
28528abbcd Initial changes to support systems with single arg pthread_setname_np() 2025-11-05 11:36:37 +11:00
ejurgensen
ffa88286e4 [dacp] Fix artwork for radio statios sometimes not updating
When "Ignore artwork provided by radio stations" is enabled, only the
queue_item->title would be used to create the bogus track id for Remote.
However, that is the name of the radio stations, so doesn't change.

This fixes the issue by including queue_item->album (which is actually
the track title when it's a radio station).

Fixes #1938
2025-10-30 17:28:14 +01:00
ejurgensen
49171dac1a [artwork] Rename to artwork_get_by_file_id and artwork_get_by_group_id
For consistency with new artwork_get_by_queue_item_id
2025-10-27 22:54:11 +01:00
ejurgensen
09b9b0c7fc [airplay] Support artwork for non-library items, e.g. from Spotify search 2025-10-27 22:54:11 +01:00
ejurgensen
6f45f8b4a5 [dacp] Add support for non-library artwork, e.g. from Spotify searches
Fixes #1936
2025-10-27 22:54:11 +01:00
ejurgensen
921d4446d6 [artwork] Add function to get artwork for non-library queue items
Adds artwork_get_by_queue_item_id() and a source handler for getting artwork
from queue_item->artwork_url.
2025-10-27 22:54:11 +01:00
ejurgensen
5f526c7a7e [dacp] Fix segfault from invalid queries
When parsing a DACP request (pattern: ^/ctrl-int/[[:digit:]]+/playqueue-edit$)
with a command parameter being "move" and an edit-params parameter lacking a
colon, strchr(param, ':') at httpd_dacp.c:2038 will return NULL, and safe_atoi32
is called with its first parameter str being 1. This will bypass the NULL check
at src/misc.c:650 and causes a segmentation fault at the call to strtol at line
657.

Closes #1933
2025-10-08 19:49:01 +02:00
ejurgensen
b7e385ffe0 [httpd] Better logging of evbuffer_read() errors
Fixes #1931
2025-09-30 20:44:01 +02:00
ejurgensen
ec632e478c [xcode] Fix deprecations of ->pix_fmts and av_format_inject_global_side_data 2025-08-25 22:50:21 +02:00
ejurgensen
19012bf616 [misc] Fix deprecation warning about referencing xmlBuffer->content 2025-08-25 22:50:21 +02:00
ejurgensen
d051d787ba [scan] Use plist_get_unix_date_val() if available
plist_get_date_val is deprecated
2025-08-25 22:50:21 +02:00
Drew Thompson
d8485bf3c2 [scan] Add support for "empty" operand in smart playlists
"empty" will be parsed to SQL NULL
2025-08-25 19:14:31 +02:00
ejurgensen
753a027ce1 Merge pull request #1920 from owntone/connect_timeout
[misc] Prevent OwnTone from hanging when a connection can't be made
2025-08-23 17:23:15 +02:00
ejurgensen
a84f4e09a0 [misc] Prevent OwnTone from hanging when a connection can't be made
This change adds a default 3s timeout to net_connect().

Fixes #1916
2025-08-23 17:22:18 +02:00
ejurgensen
ba8212b175 [scan] Use libmount to detect filesystem mount events
Resolves issue #1897
2025-08-22 19:57:53 +02:00
ejurgensen
d16343bddc [scan] Revert libmount commits due to MacOS/FreeBSD build errors
Reverts 3be8e4f and e607019
2025-08-21 23:50:24 +02:00
ejurgensen
3be8e4f479 [scan] Fix wrong symbol name for non-libmount builds 2025-08-21 23:39:55 +02:00
ejurgensen
e607019a1c [scan] Use libmount to detect filesystem mount events
Resolves issue #1897
2025-08-21 23:31:10 +02:00
ejurgensen
324b6eb61a [spotify] Update librespot-c to 0.7
Uses an extended metadata request like go-librespot to get file id, which
should mean that Spotify works even when not in legacy mode (tcp mode).

Ref issue #1912
2025-08-21 23:10:23 +02:00
Alain Nussbaumer
b9d821b46a [web] Add followed artists to the Spotify music page #1538 2025-08-19 17:31:16 +10:00
ejurgensen
b612e12aca [spotify] Fix misplaced librespot-c legacy mode selector
OwnTone was supposed to default to the old raw tcp Spotify protocol, which
would have left it unaffected by Spotify breaking the http response to the
metadata request. However, the mechanism for defaulting was misplaced. This
should put it in the right place and fix #1912.

Of course, the new protocol is still broken, but hopefully that will be fixed
on Spotify's side.
2025-08-09 21:55:37 +02:00
ejurgensen
75c9db5f59 [jsonapi] Add client_id and client_secret to /api/spotify
Closes #1909
2025-08-03 20:54:10 +02:00
ejurgensen
7b91d43274 [scan] Fix for platforms without fcopyfile() or copy_file_range()
Add @cagney's fallback copy function. Use feature tests in configure.ac for
fcopyfile() and copy_file_range().

Fixes #1901
2025-07-27 22:40:33 +02:00
ejurgensen
5e4d40ee03 [dacp] Fix null dereference on missing mode param
Fixes #1907
2025-07-24 18:08:10 +02:00
ejurgensen
c09026f7c3 [spotify] Fix Bullseye breakage by updating librespot-c to 0.6 2025-06-21 00:21:49 +02:00
ejurgensen
4154a20cda [spotify] Don't log "Unexpected JSON" when getting a null element
Instead log a debug message. Ref issue #1892.
2025-05-21 23:28:08 +02:00
ejurgensen
b88df4b4e8 [airplay] Fix client name showing as blank when pairing with MacOS
Also include the X-Apple-HKP header in pair-pin-start like iOS does, just in
case.

Ref issue #1885
2025-05-17 01:19:27 +02:00
ejurgensen
7193d0a243 [spotify] Fix GCC 15 compile errors about implicit declarations
Resolves issue #1888
2025-05-16 23:49:09 +02:00
ejurgensen
ae5be5f83e [spotify] OAuth redirect to https://owntone.github.io/owntone-oauth/spotify/
From Nov 2025 Spotify will require that the OAuth redirect is to a https url,
so we go via a Github hosted intermediate page.

Ref issue #1858
2025-05-04 22:59:56 +02:00
ejurgensen
23c67a3eb6 [api] Fix setting output selected and volume at the same time
player_speaker_enable returned 1 on success, but code expected 0. With these
changes the implementation should be more resilient.

Closes #1884
2025-04-25 16:01:16 +02:00
ejurgensen
8e9e939e49 [player] Add log message if speaker_set() called with non-existent speaker id
Closes #1879
2025-03-28 22:24:19 +01:00
ejurgensen
f108e531bb [spotify] Config check for libcurl 7.83, needed for curl_easy_nextheader()
Resolves #1878
2025-03-20 20:33:11 +01:00
ejurgensen
d99342e586 [spotify] Make client_id and secret configurable
Closes #1877
2025-03-20 20:32:24 +01:00
ejurgensen
13a8f71c0c [parsers] Fix possible stack overflow from recursion
Closes #1873
2025-03-15 20:16:41 +01:00
Christian Meffert
aab6f6c718 [logger] Support logging with logfmt format 2025-02-25 20:08:11 +01:00
ejurgensen
4980218fc5 [spotify] Import version 0.5 of librespot-c 2025-02-24 19:58:09 +01:00
ejurgensen
038c741052 [spotify] Set the new protocol as experimental and fallback, old one as default 2025-02-23 23:43:51 +01:00
ejurgensen
2547336576 [spotify] Retry fix for connection retry 2025-02-23 23:27:50 +01:00
ejurgensen
aab49945d4 [misc] Distinguished logging of errors from getaddrinfo() 2025-02-23 23:27:50 +01:00
ejurgensen
b5977b5633 [spotify] Fix for connection retry during login 2025-02-23 23:27:50 +01:00
ejurgensen
3f9e400dbd [spotify] Import version 0.4 of librespot-c and remove password-based login
Experimental version to test new protocol
2025-02-23 23:27:49 +01:00
Christian Meffert
9b56727361 [spotify] Fix possible deadlock during Spotify scan (#1859) 2025-02-20 07:13:55 +01:00
ejurgensen
d64c30b5ab [logger] Fix more compile warnings on e.g. ARMv7 (ref #1863) 2025-02-18 20:17:59 +01:00
ejurgensen
200d9abc43 [logger] Fix compile warnings on e.g. ARMv7 (closes #1863) 2025-02-18 19:30:30 +01:00
Christian Meffert
5acf9dd336 [db] Add thread name/id to db wait unlock 2025-02-16 23:51:06 +01:00
Christian Meffert
5fec4bbe34 [logger] Add thread name and thread id to log messages 2025-02-16 23:51:06 +01:00
Alain Nussbaumer
c72dc48b1d [api] Stop playback once last item is removed from the queue 2025-02-16 12:37:58 +01:00
ejurgensen
792e04b47d [artwork] Allow longer tokens in auth headers towards online sources
Fixes "Cannot make request for online artwork, auth header is too long" error
2025-02-11 16:44:47 +01:00
ejurgensen
71d48452d8 [mpd] Fix bug in 28.11 (and .10?) where "mpc enable/disable" toggles
Fixes #1847
2025-02-05 09:16:26 +01:00
ejurgensen
591a0b6b83 [spotify] Allow for longer tokens (fixes #1846) 2025-02-04 19:39:25 +01:00