Julien BLACHE
42f39938d5
Start implementing DAAP updates
...
Stall update requests if revision-number == current revision. This is a
first step that is necessary to get clients to work properly (eg Remote).
2010-01-28 19:20:00 +01:00
Julien BLACHE
7ddd135e2b
Extend close detection to incoming connections
...
Stock evhttp has no means to detect when an incoming connection gets
closed by the client; it will notice the connection has gone down only
when sending back a reply.
For DAAP update requests working as a push mechanism with an HTTP request
stalled by the server until there actually is an update available, we need
to be notified when a connection goes down so we can perform proper cleanup
and not retain memory.
Do so by extending the close detection mechanism used for outgoing connections
and the connection failure callback we already have in place for streaming.
2010-01-28 19:19:31 +01:00
Julien BLACHE
f425eddb62
Clean up remote list at deinit
2010-01-28 19:19:16 +01:00
Julien BLACHE
4321cffc87
Make queries on daap.songalbumid:0 a no-op
...
Remote makes queries with daap.songalbumid:0, which doesn't make sense. Make
that a no-op.
2010-01-27 18:31:13 +01:00
Julien BLACHE
21098d4c89
Fix query and path for playlist #1
...
The query was erroneously put into the path column; also change the query
for 1 = 1 instead of disabled = 0 which is redundant.
2010-01-27 18:29:59 +01:00
Julien BLACHE
b5b9f92d97
Fix HTTP error return in daap_session_find()
2010-01-27 12:18:22 +01:00
Julien BLACHE
eae5370c08
Log HTTP (non-DAAP, non-RSP) requests
2010-01-26 18:15:08 +01:00
Julien BLACHE
4701817333
Replace strlcpy() with evutil_snprintf() in evhttp
...
Get rid of strlcpy() and its implementation entirely, it doesn't buy anything
over snprintf(). Use evutil_snprintf() so as to match the rest of the code.
2010-01-26 17:54:45 +01:00
Julien BLACHE
98cb978b9b
Set capability atoms to true in server-info reply
...
Capability atoms like mslr, msbr and friends should be set to true; it
seems their presence in the reply is actually enough, though.
2010-01-25 18:33:25 +01:00
Julien BLACHE
7e3b6957b2
Move the pairing agent to the main thread
...
The pairing agent doesn't need a thread of its own, the main thread can host
it. Move it there and save a thread.
2010-01-25 17:55:11 +01:00
Julien BLACHE
854abd8026
Specify field width for pairing hash
...
No field width was specified when the 128bit hash is converted to a string;
make sure we get 8 hex digits per 32bit hash component.
2010-01-25 17:51:17 +01:00
Julien BLACHE
e6234c35ad
Fix field width for 64bit library name hash
...
Was 8 hex digits, should have been 16 hex digits.
2010-01-25 17:47:37 +01:00
Julien BLACHE
672e4697ae
Handle database schema upgrade from v4 to v5
...
Force a library rescan to fixup media_kind for regular videos.
2010-01-24 11:16:31 +01:00
Ace Jones
12e0c9268d
Unspecified videos are "movies", media_kind=2
...
media_kind=2 (Movies) indicates a regular video, that is, a video that
isn't a TV Show (media_kind=64).
Also fix up the system playlist for Movies, and that brings us to DB
schema_version 5.
2010-01-24 11:11:08 +01:00
Julien BLACHE
f85fa927c8
Dereference library directories before processing
...
The filescanner dereferences symlinks as it encounters them, but it did
not dereference the top-level library directories given in the config.
Also the playlist scanner always dereferences the filenames.
As a result, there was a mismatch between the paths in the files table and
the paths in the playlistitems table if the library directory given in the
config contain a symlink somewhere along the way.
2010-01-24 10:54:52 +01:00
Julien BLACHE
022bebe1d9
Send back mslr in server-info reply, indicating login is required
...
At least FrontRow honours this atom of the server-info reply.
2010-01-24 10:53:49 +01:00
Julien BLACHE
4aa207533e
Ignore empty lines in M3U playlists
2010-01-23 18:41:54 +01:00
Julien BLACHE
cc75bd6eef
Add *.swp (vim swap files) to ignore list
2010-01-22 19:03:47 +01:00
Julien BLACHE
d3fe586d5b
Remove a special case for playlist #1
...
Not needed anymore, now that playlist #1 has been turned into a smart
playlist.
2010-01-22 19:02:29 +01:00
Ace Jones
1af1cf51c7
Return special playlists in playlist list response
2010-01-21 17:56:44 +01:00
Julien BLACHE
67b3a8c2da
Handle database schema upgrade from v3 to v4
2010-01-21 17:54:50 +01:00
Ace Jones
3fef4334bb
Add support for smart playlists and some default ones
...
Add system playlists for Music, Movies, TV Shows, equivalent to iTunes.
2010-01-21 17:52:51 +01:00
Julien BLACHE
fefdb23409
Simplify DB init routine
2010-01-21 17:51:44 +01:00
Julien BLACHE
944bf3f132
Check database version first, if that fails, try DB init
...
Doing it the other way around is a guaranteed way to run into issues when
a schema upgrade is needed.
2010-01-21 17:51:00 +01:00
Julien BLACHE
87abc3f432
Avoid useless double attempt at converting string to integer
...
Fixup dmap_add_field() and one of its callers to avoid making two useless
attempts at converting a string to an integer in some cases.
2010-01-20 18:34:36 +01:00
Julien BLACHE
ba251b16ae
Start keeping track of DAAP sessions
...
This will soon be required as we'll need to keep some knowledge about
the session in some cases. This also makes us a bit more compliant.
2010-01-20 18:24:52 +01:00
Julien BLACHE
f126b04521
Tell libavl to free() ITML <-> DB mappings
...
The mappings should be free()d with the standard free() when we are
done with the tree. This fixes a memory leak.
2010-01-20 18:19:51 +01:00
Julien BLACHE
2cb67743fc
Add service type to the "ALL FOR NOW" message
2010-01-20 18:17:04 +01:00
Julien BLACHE
9757521555
Document the Remote pairing process
2010-01-17 11:16:17 +01:00
Julien BLACHE
d47c205452
Feed .remote files to the Remote pairing agent
2010-01-17 10:52:58 +01:00
Julien BLACHE
3c7456f545
Add Remote pairing services start/stop
2010-01-17 10:52:58 +01:00
Julien BLACHE
c191aff5cd
Add remote_pairing.[ch] to sources
2010-01-17 10:52:58 +01:00
Julien BLACHE
625b8e3177
Add a pairing agent for Remote
...
Remote is the iPod/iPhone application that can act as a remote control for
iTunes. Remote must be paired with an iTunes instance before it can control
it; this pairing process includes a challenge/response autentication.
This pairing agent makes it possible to pair Remote with a forked-daapd
instance. It is the very first step for Remote support.
2010-01-17 10:52:58 +01:00
Julien BLACHE
04f4622086
Add generic mDNS browsing + resolving facility
2010-01-17 10:52:58 +01:00
Julien BLACHE
2b2ec87e7e
Add the "remote" logdomain for Remote pairing
2010-01-17 10:52:58 +01:00
Julien BLACHE
73fa690fd4
Advertise the _touch-able._tcp service
...
_touch-able._tcp is the service used by Remote.app to discover and identify
libraries it interacts with.
2010-01-17 10:52:58 +01:00
Julien BLACHE
d228e0dcb8
Rename servername variable to a more appropriate libname
2010-01-17 10:52:58 +01:00
Julien BLACHE
b918d14e38
Fix group_entries list traversal
2010-01-17 10:52:58 +01:00
Julien BLACHE
dd1712abdc
Use glibc endianness-related headers if available
...
BSD headers aren't working properly on kFreeBSD, so use the glibc ones.
2010-01-17 10:52:58 +01:00
Julien BLACHE
bf2c2b68c0
Revert "Remove default playlist & special case"
...
This reverts commit af95cee79b
.
The default playlist is actually used by iTunes, so revert its removal. I
misremembered it being there for RSP.
2010-01-14 17:39:56 +01:00
Julien BLACHE
af95cee79b
Remove default playlist & special case
...
The default playlist (called "Library") doesn't actually have a purpose; I
though it was needed for RSP (SoundBridge) but it doesn't look like it makes
any difference with or without this playlist.
2010-01-13 19:56:15 +01:00
Ace Jones
1b34c9d555
Always set media_kind, for real
...
The problem is, you can't set INITIAL values for the file scanner, because
the filescanner doesn't fill in values on top of already existing values.
2010-01-13 19:45:04 +01:00
Julien BLACHE
ed3dbc1f35
Fill in the watch_info struct only when it's needed
2010-01-12 18:50:04 +01:00
Julien BLACHE
364b22c030
Implement directory rescanning on top of kqueue/kevent for FreeBSD
2010-01-12 18:45:44 +01:00
Julien BLACHE
69bae139bb
Make push_dir()/pop_dir() accept a stack as first argument
2010-01-12 18:45:31 +01:00
Julien BLACHE
79cdb4f9aa
Make forked-daapd build on GNU/kFreeBSD
2010-01-10 17:49:01 +01:00
Ace Jones
d96cdd7400
Add DAAP request handler for databases/###/groups (albums)
...
As of now we only support album groups, but there may be more than
album groups.
2010-01-10 14:43:23 +01:00
Ace Jones
5cfbe75bae
Add database code for groups queries
2010-01-10 14:43:22 +01:00
Ace Jones
e033d35195
Rework error handling in daap_reply_playlists()
...
Kill a bit of code duplication in the error handling.
2010-01-10 14:43:22 +01:00
Ace Jones
ac82b176a0
Rework error handling in daap_reply_songlist_generic()
...
Kill a bit of code duplication in the error handling.
2010-01-10 14:43:22 +01:00