Commit Graph

2099 Commits

Author SHA1 Message Date
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
Julien BLACHE
e016ced119 Authenticate Remote clients by their pairing-guid
Remote clients have a waiver for HTTP authentication; they are authenticated
by their pairing-guid given during the pairing process.
2010-01-30 17:30:22 +01:00
Julien BLACHE
115d28e24a Parse pairing response and save pairing GUID
The pairing GUID will be used later on to authenticate the Remote
instance when it logs in.
2010-01-30 17:30:22 +01:00
Julien BLACHE
b35c4749a2 Maintain a db connection in main.c for Remote pairing agent 2010-01-30 17:30:22 +01:00
Julien BLACHE
dfa3db7732 Use struct pairing_info in struct remote_info 2010-01-30 17:30:22 +01:00
Julien BLACHE
d384bc13a3 Handle database upgrade v5 -> v6 2010-01-30 17:30:22 +01:00
Julien BLACHE
762d80e0bb Add Remote pairing info storage facility
This brings schema_version to 6.
2010-01-30 17:30:22 +01:00
Julien BLACHE
07a71b4e94 Reorganize httpd_daap
Some code moved around for clarity, no functional changes.
2010-01-30 17:30:22 +01:00
Julien BLACHE
7ec27a30eb Use DMAP routines from dmap_helpers.c 2010-01-30 17:30:22 +01:00
Julien BLACHE
eca166feaa Move DMAP routines to a dedicated module 2010-01-30 17:30:22 +01:00
Julien BLACHE
29fb23893d DAAP update request requires a session-id 2010-01-30 17:30:21 +01:00
Julien BLACHE
b9a2e10272 Modify DAAP update request debug messages 2010-01-30 17:30:21 +01:00