Commit Graph

2010 Commits

Author SHA1 Message Date
Julien BLACHE 07146e3261 Handle database upgrade v7 -> v8 2010-03-06 19:10:49 +01:00
Julien BLACHE 224ef48137 Make album groups persistent
Store groups (only album groups supported at the moment) in the DB,
so their ids are persistent for the duration of the forked-daapd session.

Those ids are used to, among other things, retrieve artwork, so we must
provide ourselves some persistence here.

This brings us to schema version 8.
2010-03-06 19:02:49 +01:00
Julien BLACHE 88dde32fc7 Recompute all songalbumids at startup
Due to the two Murmur64 implementations for 64 and 32bit machines, the
hash is not compatible when moving the SQLite DB between 32/64 bit hosts.

So we'll recompute all the songalbumids at startup, just in case.
2010-03-06 18:59:58 +01:00
Julien BLACHE 0e9a8674d9 Handle database upgrade v6 -> v7 2010-03-06 17:29:48 +01:00
Julien BLACHE facb9957d8 Move daap_songalbumid() to its now-unique callsite 2010-03-06 17:29:48 +01:00
Julien BLACHE 748cca63be Maintain songalbumid inside the files table
songalbumid is used a lot in queries from Remote; computing the hash for
each row is a major waste of time on big libraries and slow machines, so
let's store the hash in the table.

This brings us to schema version 7.
2010-03-06 17:29:37 +01:00
Julien BLACHE 20c57d5289 Implement DAAP auto-logout
And advertise it.
2010-03-06 10:30:59 +01:00
Julien BLACHE 8c2def5ef5 Move daap_session_kill() higher up
No functional changes.
2010-03-06 10:29:53 +01:00
Julien BLACHE affbae1c47 Make evbase_httpd non-static
Make the httpd event base available to httpd protocol handlers.
2010-03-06 10:27:39 +01:00
Julien BLACHE c9e91532b3 Get rid of the intermediate buffer in itunes_pairing_hash()
No need to build the string to be hashed in advance, it can just
be written piece by piece to the md.
2010-02-22 17:49:24 +01:00
Julien BLACHE 2dde2f180d Revert "Add a fail_cb to evhttp_request for connection failures"
The fail_cb extension was actually never needed; we've migrated away from
it, so let's clean that up now.

This reverts commit 1ffcbdae27.
2010-02-14 09:36:55 +01:00
Julien BLACHE 18abda3a97 Use evhttp_connection's closecb instead of our fail_cb extension
The closecb callback of evhttp_connection does what we need, so no need
to use that extension anymore.
2010-02-14 09:34:29 +01:00
Ace Jones b474166e8d Add ffmpeg patch for TV metadata 2010-02-13 11:27:45 +01:00
Julien BLACHE 16b5277f75 Rewrite MPEG4 streaming hints 2010-02-13 11:15:09 +01:00
Julien BLACHE c7053bb0d3 Add a note about metadata/tag editors
Thanks to Ace Jones for bringing that up.
2010-02-12 19:10:37 +01:00
Julien BLACHE 8c569d59dd Add a note about optimizing MPEG4 files 2010-02-10 19:40:38 +01:00
Ace Jones a92dc076e8 Add a test facility for DMAP
Add a /dmap-test handler that sends back a list containing test values
for all standard DMAP types (string + all integer types).
2010-02-10 18:29:26 +01:00
Julien BLACHE 056f4b6997 Reindent dmap_add_field()
Fix indentation in dmap_add_field(), no functional changes.
2010-02-10 18:29:26 +01:00
Julien BLACHE 3280fd5cf9 Get rid of magic hash values for filtering query parameters
Some metadata were filtered out from the reply by directly checking
for their hash, including the hash value in the code. Remove the magic
values and compare dfm->field against the relevant dmap_* field as for
other special cases.
2010-02-10 18:29:26 +01:00
Julien BLACHE 2524eb0f8f Rework special cases in daap_reply_songlist_generic()
Use a pointer comparison instead of strcmp(), now that the fields
have been separated out from the field map.
2010-02-10 18:29:26 +01:00
Julien BLACHE 3df34fe9a8 Remove mper special case in daap_reply_groups()
mper was so far the only LONG we really cared about, but dmap_add_field()
now has proper support all DMAP types. This special case can go.
2010-02-10 18:29:26 +01:00
Ace Jones cfabc9a456 Update DMAP fields
Update field types, add new fields (commented out). This fixes a number
of mis-assigned types. Update generated from the result of a /content-codes
request.
2010-02-10 18:29:26 +01:00
Ace Jones b4b89dd937 Break out the dmap_field_map struct into two structs
Introduce struct dmap_field holding the field tag, description and
DMAP type and use it in struct dmap_field_map to replace the tag,
desc and type fields.

This enables semi-automated updates of the DMAP fields information
from the output of a /content-codes request.
2010-02-10 18:29:20 +01:00
Julien BLACHE d8bd8e5381 Rewrite dmap_add_field() to handle properly all DMAP types 2010-02-10 18:21:32 +01:00
Ace Jones 20d08d8a49 Add safe_atou32() and safe_atou64() 2010-02-10 18:21:32 +01:00
Ace Jones 0607e82a42 Add missing DMAP types and correct existing types
Most of the unsigned DMAP types were missing and assignments were incorrect
between signed and unsigned types. Fix all of this, and add (preliminary)
support for the new types.
2010-02-10 18:21:32 +01:00
Julien BLACHE d4fb2091c8 Use an enum for DMAP types 2010-02-10 18:21:32 +01:00
Julien BLACHE 42dd7ddd00 Kill code redundant with dmap_add_field()
This code in daap_reply_songlist_generic() is redundant with code
in (new) dmap_add_field() and can be removed, with a tweak: we must
ensure the val integer is always 0 if not used to override a value in
the transcoding case.
2010-02-10 18:21:32 +01:00
Julien BLACHE a5a46b8a53 Fix lseek() return value handling
lseek() returns an off_t and not an int, using an int to store and
test the return value means we'll error out when the position in the file
gets past INT_MAX.
2010-02-10 18:19:32 +01:00
Julien BLACHE 2b4f07195a Kill leftover includes 2010-02-06 07:25:44 +01:00
Julien BLACHE 71a40c5149 Simplify the iTunes pairing hash using standard MD5
The pairing hash actually uses standard MD5, so let's simplify the
code by using a standard MD5 implementation. Now that function is
readable and understandable by mere mortals.

Thanks to Jeff Sharkey for posting that simplified version.
2010-02-05 18:39:03 +01:00
Julien BLACHE 2f385bff2c Add libgcrypt, check for it and perform global initialization 2010-02-05 18:38:39 +01:00
Julien BLACHE cb4320791b Use eventfd instead of pipes if available
eventfd has less overhead than a pipe, works as a counter and uses a
single fd. Use it on Linux if available (that should be pretty much
always given the glibc and kernel requirements).
2010-02-04 18:52:13 +01:00
Julien BLACHE 274dccf66c Reduce STREAM_CHUNK_SIZE to a more manageable 64k
512k might be a bit too much, as it can take time to read 512k from the
filesystem (and we're using a blocking read) or from the decoder. Going
down to 64k will make this more manageable and improve the response time
when streaming to multiple clients at the same time.
2010-02-02 21:09:56 +01:00
Julien BLACHE 848dd41993 serve_file() is broken due to evbuffer_read()
If we ever need to serve files for a web interface or otherwise, serve_file()
will need to be fixed to not use evbuffer_read().
2010-02-02 21:09:56 +01:00
Julien BLACHE 6e5f49bdf9 Use transcode variable to check for transcoding status 2010-02-02 21:09:56 +01:00
Julien BLACHE 825569dc88 Rework failure path in httpd_stream_file()
Kill code duplication, make it all clearer.
2010-02-02 21:09:56 +01:00
Julien BLACHE f0239951e1 Replace evbuffer_read(); should not be applied to files
evbuffer_read() is really meant to read from sockets and not regular
files. It also looks like evbuffer_read() was causing issues with large
files, locking up a little below 2 GB for an unknown reason (couldn't
reproduce).
2010-02-02 21:09:56 +01:00
Julien BLACHE 3fc40bc29e Enable Large File Support on platforms that need it 2010-02-02 21:09:56 +01:00
Julien BLACHE 1a3620d0a4 Handle DMAP long type properly in dmap_add_field() 2010-02-02 21:09:56 +01:00
Julien BLACHE 58faeaceca Integer types cleanup
Try to be a bit more strict about integer types, use off_t or int64_t for
file size and file offsets.

Replace safe_ato*() by safe_atoi32() and safe_atoi64(), fix integer types
at call sites to match.
2010-02-02 21:09:56 +01:00
Julien BLACHE 5d41d2d99c Move file_size to an int64_t, matching other types (off_t) 2010-02-02 21:09:55 +01:00
Julien BLACHE 516909545b Include config.h in all C files 2010-02-02 21:09:55 +01:00
Julien BLACHE 1df7ec1b7c Use posix_fadvise() to hint the OS when streaming raw file
Hinting the OS about our behaviour shouldn't make a big difference in
performance but it will help the OS manage its disk cache and can reduce
memory pressure on small systems.
2010-02-02 21:09:55 +01:00
Julien BLACHE 7047126f51 Kill useless va_copy checks 2010-02-02 21:09:55 +01:00
Julien BLACHE 8ac5f48fe6 Wire up DACP support 2010-01-30 17:30:22 +01:00
Julien BLACHE a52ff42697 Introduce stub DACP protocol implementation 2010-01-30 17:30:22 +01:00
Julien BLACHE 168144c1e0 Make daap_session_find() non-static so DACP can use it 2010-01-30 17:30:22 +01:00
Julien BLACHE 9f1c849241 Add logdomain for DACP 2010-01-30 17:30:22 +01:00
Julien BLACHE 44bf308701 Waive HTTP authentication on the library for Remote
DAAP queries from Remote won't need HTTP authentication as they all
require a valid session-id; Remote can only obtain a valid session-id
if its pairing-guid is known to us (it did pair successfully with us).
2010-01-30 17:30:22 +01:00