Commit Graph

195 Commits

Author SHA1 Message Date
ejurgensen
bd6f38282c [httpd] Main commit that adds multithreading to httpd
Also refactor streaming implementation to make it more like an output and to
let the design support multithreading.
2023-03-07 21:01:10 +01:00
ejurgensen
74f1b93b42 [httpd] Make http modules agnostic to evhttp 2023-03-07 21:01:10 +01:00
ejurgensen
2778088c52 [httpd] Refactor to use modules for daap, dacp, json api etc.
Removes a lot of code duplication which hopefully will make it easier to add
support for evhtp as http engine.
2023-03-07 21:01:10 +01:00
ejurgensen
316d932d99 [dmap] Move dmap_send_error() to dacp_send_error()
Means dmap_common doesn't need a dependency to httpd and http replying is kept
within httpd_xxx modules.
2023-03-07 21:01:10 +01:00
ejurgensen
23979d223c [httpd] Refactor http handlers so they are initialized centrally
Means regex.h doesn't need to be in httpd.h making it easier to e.g. experiment
with evhtp.
2023-03-07 21:01:10 +01:00
whatdoineed2do/Ray
48526c2ab7 [dacp] bug fix - play item from 'up next' when stopped 2022-09-03 01:32:01 +02:00
ejurgensen
54aa9c32cc [dacp] Listen for queue events to support json api metadata updates
Will only work for http and pipe sources

Fixes #1433
2022-03-22 20:57:43 +01:00
ejurgensen
228c8e7920 [daap] Move daap_query_parse_sql() into dmap_common.c/h, drop daap_query.c/h 2022-01-29 17:46:40 +01:00
ejurgensen
53ee9a3c39 [daap] Coverity fixups 2022-01-20 20:17:38 +01:00
chme
8becdee8f1 [db] Refactor db_query_fetch_* functions to take the output parameter
first and the input parameter as last parameter
2021-12-28 07:23:56 +01:00
chme
a65ee4462e [db] Refactor fetching query result into generic function
Additionally changes the return value in case the end of the result set
is reached.
2021-12-28 06:55:35 +01:00
ejurgensen
c96dc1fcff [dacp] Fix support for device-volume (speaker volume buttons)
Closes #613
2021-05-26 23:20:40 +02:00
ejurgensen
5f1686695a [-] Name update forked-daapd -> owntone throughout the code 2021-04-24 23:54:20 +02:00
ejurgensen
7871d71a9c [misc] Add utility network functions, incl configurable addr binding
Also make misc.c/h a bit less messy.
2021-03-31 23:55:25 +02:00
ejurgensen
695927de2a [artwork] Remove old artwork_get_xxx in favor of new which has a format arg 2020-11-18 23:23:05 +01:00
ejurgensen
68022d5c10 [dacp] Change update id's more often
Sometimes the artwork changes, but the album does not (especially likely if we
are in a row of "Unknown album"-tracks)
2020-05-11 21:39:02 +02:00
ejurgensen
de1b1c3805 [cfg] Remove hardcoding of strings for unknown album etc
Now configurable, since we don't have real localisation
2020-05-11 17:02:14 +02:00
ejurgensen
08b2eb8d4c [dacp/player] Change support for prevent-playback and busy (ref issue #934)
Adds support for dcmp.device-busy, and also changes handling of
device-prevent-playback so it matches iTunes better.
2020-04-10 21:01:41 +02:00
ejurgensen
dfd2a4ab14 [dacp] Increase current revision number even if there are no open requests
This change aligns with iTunes behavior. It also means that a client that is
not long polling can use the revision number (cmsr) value to check for changes.
2020-01-12 01:06:34 +01:00
ejurgensen
92dee0386d [daap/dacp] Workaround so that libevent cleans up when a long poll is disconnected
See https://github.com/ejurgensen/forked-daapd/issues/870
2020-01-12 01:06:34 +01:00
ejurgensen
4fa7eb98a0 [daap/dacp] Fix for memleak when client hangs up 2020-01-12 01:05:59 +01:00
ejurgensen
cc78926721 [dacp] Support for volumeup, volumedown and mutetoggle (issue #873)
Mute toggle only supported via enable/disable
2020-01-03 23:40:16 +01:00
ejurgensen
af1bc27dd5 [dacp] Support for dmcp.device-prevent-playback (issue #855) 2020-01-03 19:36:35 +01:00
ejurgensen
80b183c7ff [dacp] Fix for genres that have single quotes in their name (fixes #869) 2020-01-03 19:05:48 +01:00
chme
6e5d6791ff [player/dacp/mpd/jsonapi] Combine seek commands into one with mode param
Also changes relative seeking behavior:
- seeking behind the the current track only switches to the previous
track, if we are not more than 3 seconds into the current track,
otherwise starts current track from the beginning
- seeking beyond the current track will start the next track from the
beginning
2019-10-20 14:36:21 +02:00
ejurgensen
e1a0e366cf [dacp] Make sure Remote updates images from metadata pipes 2019-09-20 21:47:17 +02:00
ejurgensen
87ca6363ae [player/input] Refactor - WIP
* Open input sources earlier
* Gapless playback
* Remove fixed 44100/16 from player
* Complete restructure player internals
2019-03-18 23:06:08 +01:00
chme
116c315a84 [player] Rename struct spk_info to player_speaker_info 2019-01-22 17:47:15 +01:00
chme
7252b3e509 [db] Add support to add items to the queue at specified position 2018-09-16 09:36:43 +02:00
chme
3ca5402638 [dacp] Only return requested number of queue item (fixes #556) 2018-09-13 21:11:41 +02:00
ejurgensen
93730281f4 [dacp] Map discrete-pause to playpause command handler 2018-09-07 21:40:23 +02:00
ejurgensen
3ba92aa860 [httpd] Better logging of unauthorized requests 2018-09-07 17:01:32 +02:00
ejurgensen
b6e1269cf2 [raop/dacp/player] Support for Airplay speakers to register volume updates
Implements Active-Remote, which is sent to the speaker, so it can use this
to tell us who it is when it makes dacp request with a device-volume update.
2018-05-27 16:12:20 +02:00
ejurgensen
646bf37f17 [dacp] Add support for play + stop commands
These commands are not used by Remote, but some Airplay speakers are
able to make them (e.g. my Sony STR-DN1040).

Also prepare being able to set the device volume property.
2018-05-14 23:09:04 +02:00
chme
7dd8955a92 [filescanner] Add http stream to the library prior to adding to a
persistent playlist
2018-04-15 22:09:28 +02:00
chme
2b5fa56bf9 [dacp] Add missing call to "db_queue_enum_end" in error case 2018-03-08 21:50:41 +01:00
chme
93879c6f90 [player] Refactor speaker enumerate callback 2018-02-10 09:04:18 +01:00
chme
ef52f4ddc0 Rework user rating updates 2017-12-15 19:08:32 +01:00
Wolfgang Scherer
bbc5d3787e [mpd] rating sticker translator 2017-12-15 19:08:32 +01:00
chme
f696229fff [player/dacp/mpd] Pass additional information to speaker enum callback 2017-12-03 10:46:03 +01:00
chme
8d130cdc7c [listener] Support passing multiple events in a single notify call 2017-11-18 07:15:45 +01:00
ejurgensen
a6fab4ac0d [httpd/mpd] Adjustments to commit #69ff42f 2017-11-15 23:13:20 +01:00
ejurgensen
3d5aeda7aa [httpd] Implement "trusted_networks" option
Some clients aren't really capable of authenticating + some users probably
don't want to enter a password for the web interface. This option allows
clients on for instance the local network to connect without authentication.
2017-11-12 21:29:57 +01:00
ejurgensen
6d937469f5 [httpd] Decrease log level of stream complete messages 2017-11-11 22:20:09 +01:00
ejurgensen
473a29ef8a [httpd] More refactoring, reduce code duplication in the httpd_xxx modules 2017-11-11 22:20:09 +01:00
ejurgensen
709d99d4c4 [httpd] Major refactor of the httpd request handling
Make it easier to add new parameters later, get rid of redundant code, clean
up, align between httpd_xxx modules and introduce new bugs. Yes, the refactor
got a bit out of hand.
2017-11-11 22:20:09 +01:00
ejurgensen
0ebdd89715 [httpd_dacp] Log unrecognised requests 2017-11-11 22:20:09 +01:00
ejurgensen
d9f6097886 [httpd_dacp] Update to align with master 2017-11-11 22:20:09 +01:00
ejurgensen
725319789e [httpd_dacp] Add debug logging of our playstatusupdates
Might help trace why some remotes sometimes show incorrect status
2017-11-11 22:20:09 +01:00
ejurgensen
eff9e6ebeb [httpd] Add promiscuous mode option, i.e. no auth requirements
For people who want to avoid the web login, or want to get around pairing
problems. This is also added because commit #e59a1a1 means that all
Remotes are now subject to auth, not just those with a user-agent name that
starts with "Remote".
2017-11-11 22:20:09 +01:00