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
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
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
Julien BLACHE
2924a98f1a
Fix pairing_cb() - readd event after pairing
2010-01-30 17:30:21 +01:00
Julien BLACHE
2c6ceac486
Rework code flow in httpd_gen_cb()
2010-01-30 17:30:21 +01:00
Julien BLACHE
78275ae432
Remove useless include
2010-01-30 17:30:21 +01:00
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
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
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
Ace Jones
cac2c032f6
Add the daap.songalbumartist DMAP field
2010-01-10 12:11:00 +01:00
Ace Jones
e948f69d0d
Add safe_atoull()
2010-01-10 12:09:29 +01:00
Julien BLACHE
5b5e142c22
Replace inotify with kqueue on FreeBSD - stub
...
Start replacing inotify in the filescanner with kqueue. Only a stub at
this point, kqueue/kevent doesn't deliver nearly as much information
as inotify does. This will require some work, and someone willing to
do that work.
2010-01-09 13:48:52 +01:00
Julien BLACHE
9695c11186
Add an opaque pointer to watch_info
...
Used on FreeBSD to hold a pointer to the kevent struct.
2010-01-09 13:45:33 +01:00
Julien BLACHE
5681793534
Replace signalfd with kqueue for FreeBSD
2010-01-09 13:44:56 +01:00
Julien BLACHE
8d7c566d95
Use m_realpath(path) instead of realpath(path, NULL)
2010-01-09 13:44:10 +01:00
Julien BLACHE
b9d8a5880a
Introduce m_realpath() to replace realpath(path, NULL)
2010-01-09 13:43:29 +01:00
Julien BLACHE
3724f943b9
Use sys/endian.h on FreeBSD
2010-01-09 13:42:59 +01:00
Julien BLACHE
99df67b53c
Include sys/param.h for PATH_MAX
2010-01-09 13:42:23 +01:00
Julien BLACHE
6c38cd2ef5
Add missing sys/types.h & sys/stat.h for stat & friends
2010-01-09 13:41:51 +01:00
Julien BLACHE
6033e29348
Use standard pipe() syscall on non-Linux platforms
2010-01-09 13:41:14 +01:00
Julien BLACHE
2f99797d9a
Use sizeof(void *) instead of __WORDSIZE
2010-01-09 13:39:45 +01:00
Julien BLACHE
613717f6b8
Fix a format string mismatch (long vs uint64_t)
2010-01-09 13:38:41 +01:00
Julien BLACHE
cdf0e2f9a5
Fix incorrect log domain
2010-01-09 11:14:23 +01:00
Julien BLACHE
cefa51b5c6
Fix signal handler - readd event to event loop
2010-01-09 11:03:16 +01:00
Julien BLACHE
11f6b1e78f
Kill duplicate fclose()
2010-01-09 11:00:41 +01:00
Julien BLACHE
5887cc2e27
Kill dead variables in signal_cb()
2010-01-08 12:29:13 +01:00
Ace Jones
fc971974f0
Fill in media_kind=1 for music
...
Also move item_kind initialization further up.
2010-01-06 18:41:27 +01:00
Julien BLACHE
974a74a833
Update copyright notices for 2010
2010-01-05 19:34:00 +01:00
Julien BLACHE
60a06dfb0a
Change album and album_artist column definitions to be NOT NULL
...
Unfortunately SQLite doesn't support adding constraints with ALTER TABLE,
so this constraint cannot be added upon upgrade.
2010-01-05 19:23:52 +01:00
Julien BLACHE
26d603aa61
Introduce generic database upgrade function
2010-01-05 19:18:30 +01:00
Julien BLACHE
db0bff61c7
Remove -y option, as it doesn't actually exist
2010-01-05 18:32:00 +01:00
Julien BLACHE
d273c72a4b
Add database upgrade to populate album_artist for every file
...
Bump schema_version to 3, even though this isn't exactly a schema upgrade.
2010-01-05 18:25:23 +01:00
Ace Jones
67e3739bc2
Allow DMAP queries on daap.songalbumid
2010-01-05 18:25:23 +01:00
Ace Jones
f2965f8ac6
Make daap_songalbumid available as a function inside SQLite
2010-01-05 18:25:18 +01:00
Ace Jones
d3350713d1
Return daap.songalbumid as a hash of the album_artist + album
...
iPhone remote will later want to query by album. Instead of doing a
fulltext query, it uses a 64-bit hash of the album + album_artist. It
is not necessary to use the same hash algorithm that iTunes uses. The
important thing is that we can later respond to a query=('daap.songalbumid:xxx')
with this value.
2010-01-04 18:00:05 +01:00
Ace Jones
19a244095a
Add daap_songalbumid() to generate the songalbumid hash
...
Make it an inline function as it's a short function and has only got
2 call sites.
2010-01-04 17:59:21 +01:00
Julien BLACHE
8ef57bbb41
Add the MurmurHash2, 64bit version
...
Hash algorithm by Austin Appleby, <http://murmurhash.googlepages.com >
2010-01-04 17:58:28 +01:00
Ace Jones
e16d8a9747
Use the 'artist' field for 'album_artist' if there is no album artist set
2010-01-04 17:56:20 +01:00
Ace Jones
117ee15e44
Add handler for DMAP extra_data requests
...
iPhone Remote uses the following requests to get cover art for
songs and albums:
/databases/#/items/#/extra_data/artwork
/databases/#/groups/#/extra_data/artwork
For now, we will return the valid and correct response that we
have "No content". In the future, the real artwork could be
extracted and returned here.
2010-01-03 18:55:32 +01:00
Julien BLACHE
d20fdbda95
Cast pANTLR3_STRING to char * to avoid printf-format warnings
2009-12-31 22:21:56 +01:00
Julien BLACHE
046e3d6d90
Fixup DPRINTF() format strings
2009-12-31 22:21:19 +01:00
Julien BLACHE
5e338b033a
Add missing trk_id argument to DPRINTF() calls
2009-12-31 22:20:48 +01:00
Julien BLACHE
61c6627713
Mark DPRINTF() as a printf-like function
2009-12-31 20:39:51 +01:00
Julien BLACHE
207e85c6c0
Regain root privileges to unlink PID file at exit
2009-12-31 20:19:13 +01:00
Julien BLACHE
1ac46983b9
Use setegid/seteuid to be able to regain root privileges
2009-12-31 20:19:13 +01:00
Julien BLACHE
662ba32d35
Fix ret/iret variables usage
2009-12-31 20:12:36 +01:00
Julien BLACHE
8feeecd895
Send a Content-Length header when plainly streaming a whole file
...
That is, don't send a Content-Length if we're decoding a whole file,
as we do not know the exact size in this case.
Based on a patch by Ace Jones.
2009-12-31 16:50:19 +01:00
Julien BLACHE
a91b1ef46e
Reindent dmap_query_fields, no code changes.
2009-12-31 16:50:19 +01:00
Ace Jones
ddc4c667ea
Enable DMAP queries on com.apple.itunes.mediakind
...
Used by Remote on the iPhone.
2009-12-31 16:41:10 +01:00
Ace Jones
995c212dc7
Support query filter in playlist list query
...
iTunes uses query filters in DAAP containers requests, so support that here.
2009-12-30 18:53:55 +01:00
Ace Jones
040e760789
Add support for Remote, the iPhone remote control for iTunes
...
Remote needs the same DAAP query quirk as iTunes and supports the
same codecs.
2009-12-30 18:49:52 +01:00
Ace Jones
abbba5cf47
Fix typo in DAAP error message
2009-12-30 18:47:41 +01:00
Ace Jones
76fc069f22
Fix missing argument to debug call
2009-12-30 18:46:41 +01:00
Julien BLACHE
ff03c2679d
DMAP comparison against empty string needs to check against NULL too
...
'dmap.foo!:' -> (dmap.foo <> '' AND dmap.foo IS NOT NULL)
'dmap.foo:' -> (dmap.foo = '' OR dmap.foo IS NULL)
2009-12-29 22:04:49 +01:00
Julien BLACHE
8025db2dc2
Allow negation operator for string comparisons in DMAP queries
2009-12-29 19:10:51 +01:00
Julien BLACHE
f56884015f
Allow empty values in DMAP queries for string fields
2009-12-29 19:10:22 +01:00
Julien BLACHE
371725b0da
Fix segfault in db_file_update
...
Fix wrong type (%Q instead of %d) for tv_episode_sort and tv_season_num in
the SQL query for db_file_update().
2009-12-27 08:19:16 +01:00
Julien BLACHE
a52dcd264c
Force a full rescan after DB migration
2009-12-27 08:17:25 +01:00
Julien BLACHE
7cb0eec5d5
Don't increase play count if not streaming at least half of the file
...
When streaming AAC/MP4 files that aren't stream-optimized (metadata at the
end of the file), clients will seek through the file to grab the metadata
prior to playing the file, causing the play count to increase by 2 or 3.
To counter that, do not increase play count if not streaming at least half
of the file.
2009-12-26 09:57:37 +01:00
Julien BLACHE
403153f64b
Reindent the dmap_fields table, no code changes
2009-12-26 09:28:28 +01:00
Ace Jones
000e13b7ee
Return TV metadata in DMAP response
2009-12-26 09:23:13 +01:00
Julien BLACHE
66716841ea
Handle database schema upgrade from v1 to v2
2009-12-26 09:20:51 +01:00
Julien BLACHE
42a7715c69
Reindent data tables, no code changes
2009-12-26 08:44:55 +01:00
Ace Jones
a0ec19ada6
Add TV metadata to the database
...
With this, we're bumping SCHEMA_VERSION to 2.
2009-12-26 08:39:39 +01:00
Ace Jones
2ae6fcd864
Pick up TV-related metadata in MP4 video files
...
TV-related metadata as found in TV shows bought on the iTunes store, for
instance.
At the time of writing, ffmpeg doesn't support this yet. Until it does,
contact Ace Jones <ace.jones1@yahoo.com> for patches and instructions.
2009-12-26 08:31:12 +01:00
Ace Jones
a0b015f1e4
Accomodate TV meta-data in internal structures
...
Add new fields for TV-related metadata to struct media_file_info and
struct db_media_file_info.
2009-12-26 08:28:28 +01:00
Ace Jones
30e07abae3
Check chdir() return value to silence a warning
2009-12-24 21:28:41 +01:00
Ace Jones
d231faff2d
Handle DAAP activity request
...
Reply to the DAAP /activity request with 204 / No content. Used by iTunes to
ping the server while streaming.
2009-12-20 14:43:28 +01:00
Julien BLACHE
72b1237500
Send a Content-Length header when streaming
...
Patch by Ace Jones <ace.jones1@yahoo.com>.
2009-12-08 21:46:47 +01:00
Julien BLACHE
ff89ce0183
Add support for end offset in Range header
...
Honor end offset provided in the Range header and do not stream more than
what the client asked for.
Based on a patch by Ace Jones <ace.jones1@yahoo.com>.
2009-12-08 21:42:48 +01:00
Julien BLACHE
b9e7df5be3
Return a proper Content-Type when streaming videos
...
Clients like Front Row expect video/<type> for video streaming, whereas iTunes
likes application/x-dmap-tagged when streaming audio.
Based on a patch by Ace Jones <ace.jones1@yahoo.com>.
2009-12-08 21:04:30 +01:00
Julien BLACHE
df2cbea9b2
Add supported codec list for Front Row and QuickTime
...
Patch from Ace Jones <ace.jones1@yahoo.com>.
2009-12-08 20:45:57 +01:00
Julien BLACHE
38c502cb7e
Properly close the raw file that was streamed when cleaning up after streaming
...
Report & fix by Ace Jones <ace.jones1@yahoo.com>
2009-12-08 19:54:48 +01:00
Julien BLACHE
ab760903b1
Use stream_end() to do the cleanup in stream_fail_cb()
...
Introduce a new 'failed' parameter to stream_end() as some actions shouldn't
be done when cleaning up after a connection failure.
2009-12-08 19:52:51 +01:00
Julien BLACHE
6114c31c61
Hook up iTunes library scanner
2009-11-28 10:55:43 +01:00
Julien BLACHE
3154416415
Integrate iTunes library scanner as an optional component
2009-11-28 10:55:43 +01:00
Julien BLACHE
d923e8d73b
Add iTunes Music Library XML scanner
2009-11-28 10:55:43 +01:00
Julien BLACHE
3ff067da4e
Add itunes_overrides parameter
2009-11-28 10:55:43 +01:00
Julien BLACHE
a6cbb2a8ec
Introduce db_file_id_byfilebase and db_file_id_byfile
...
File id lookup by basepath + filename and filename only.
2009-11-28 10:55:43 +01:00
Julien BLACHE
66cd10dc52
Introduce db_file_id_byurl and share code with db_file_id_bypath
2009-11-28 10:55:42 +01:00
Julien BLACHE
ecb2991881
Add db_pl_fetch_bytitlepath
2009-11-28 10:55:42 +01:00
Julien BLACHE
04ce09e5be
Rename db_pl_add_item -> db_pl_add_item_bypath
...
For consistency with db_pl_add_item_byid & similar database functions.
2009-11-28 10:55:42 +01:00
Julien BLACHE
a45f46f3eb
Introduce db_pl_add_item_byid()
2009-11-28 10:55:42 +01:00
Julien BLACHE
1a397ca79b
Check that db_pl_fetch_byquery only gets 1 query result
2009-11-28 10:55:42 +01:00
Julien BLACHE
6a1c01fa15
Allow playlists from different files to have the same title
2009-11-28 10:55:42 +01:00
Julien BLACHE
8f07db5c10
Add support for FLAC files with ID3v2 tags.
...
Patch from Wolfgang Holler <woelfs@googlemail.com>.
2009-11-18 20:14:03 +01:00
Julien BLACHE
946758cec7
Rework iTunes 9 absolute request uri fix
2009-11-14 11:23:03 +01:00
Julien BLACHE
f8f183f2f6
Fixup iTunes 9 Request-URI before processing
...
iTunes 9 sends requests with a Request-URI like
daap://10.1.1.20:3689/server-info
The DAAP server expected the Request-URI to be just /server-info, and so
couldn't match the request to any handler.
In addition, evhttp would declare this request a proxy request which also
broke keep-alive handling resulting in the server closing the connection
after the reply. iTunes doesn't like that.
2009-11-13 21:53:47 +01:00
Julien BLACHE
6cc9abadbd
Skip files that have no audio streams
2009-11-01 12:52:30 +01:00
Julien BLACHE
9b56d51f92
Avoid divide-by-zero for files with duration < AV_TIME_BASE
2009-11-01 12:51:50 +01:00
Julien BLACHE
c36b3c360d
Fix DAAP request regexps - IDs can (thankfully) be more than 1-digit long
2009-11-01 12:39:11 +01:00
Julien BLACHE
9229f3dff9
Flush log as we go.
2009-10-04 12:08:46 +02:00
Julien BLACHE
aa52f1d30b
Add license and copyright statement to -v/--version and usage message
2009-09-21 19:52:05 +02:00
Julien BLACHE
11909725e2
Use ffmpeg's memory allocator for transcode buffer
...
ffmpeg's allocator ensures the allocated memory is properly aligned for
any kind of optimized operation used in ffmpeg.
2009-07-24 08:19:31 +02:00
Julien BLACHE
2323fd302c
Fix memory leak (transcode buffer)
2009-07-24 08:18:53 +02:00
Julien BLACHE
1bd3b3a076
Fix paths and rename the project
2009-06-12 13:00:34 +02:00
Julien BLACHE
e1c0b6d4b7
Move *_offsetof() macro definitions to db.h
2009-06-11 23:17:17 +02:00
Julien BLACHE
1f92052409
Rename the songs table
2009-06-11 23:03:53 +02:00
Julien BLACHE
3cadbdb1e3
Remove unused db_file_fetch_bypath()
2009-06-11 20:46:11 +02:00
Julien BLACHE
0ad20e5220
Rework process_media_file() and related DB support routines
...
Avoid pulling all the file info from the DB in process_media_file() as
anything besides the file id and timestamp is not used at all.
2009-06-11 20:44:22 +02:00
Julien BLACHE
0a8c171187
Store playlist items paths instead of resolving to file ids
...
This allows for more dynamic playlists now that files can move
around while we're running.
2009-06-11 20:27:31 +02:00
Julien BLACHE
3b7ff30c1b
Remove useless force_update field in media file info
2009-06-11 19:15:22 +02:00
Julien BLACHE
c918c5c689
Always rescan directories to update playlists
2009-06-11 19:11:03 +02:00
Julien BLACHE
538d81b402
Always rescan and update playlists
...
This is needed to keep relative playlist items up to date in the
database when the playlist file moves around.
2009-06-11 19:04:21 +02:00
Julien BLACHE
c589d92b14
Use db_get_count() wherever applicable; simplify db_{pl,files}_get_count() prototypes
2009-06-11 18:41:50 +02:00
Julien BLACHE
2d1c35b855
Count playlist items on the fly
2009-06-11 18:28:01 +02:00
Julien BLACHE
30204cbb76
Remove unused toplevel watch attribute
2009-06-11 17:36:13 +02:00
Julien BLACHE
c81b33bd02
Bring db_watch_delete_bywd() prototype back in line with other db_watch_delete_by*()
2009-06-11 17:35:32 +02:00
Julien BLACHE
582f0e6746
Handle inotify events for directories
2009-06-11 17:35:25 +02:00
Julien BLACHE
07e22d8870
Add watch query/enumeration
2009-06-11 16:44:49 +02:00
Julien BLACHE
129ca8dfff
Add watch deletion by path/match/cookie routines
2009-06-11 16:15:35 +02:00
Julien BLACHE
267ab7cb1a
Rename db_query_get_count() to db_get_count()
...
Make that a generic helper, given it's used outside queries.
2009-06-11 15:45:49 +02:00
Julien BLACHE
cef1636415
Add watch-moving routines
2009-06-11 15:42:51 +02:00
Julien BLACHE
87aa24454d
Add watch-marking routines
2009-06-11 15:24:10 +02:00
Julien BLACHE
56127b3ecc
Add file and playlist disable-by-match routines
2009-06-11 15:09:10 +02:00
Julien BLACHE
34b0c22e46
Handle symlink-to-directory creation
2009-06-11 13:51:19 +02:00
Julien BLACHE
279fb95979
Watch for IN_CLOSE_WRITE in addition to IN_MODIFY and IN_CREATE
...
When receiving IN_CREATE or IN_MODIFY, there's no guarantee the file is
in its final state. Similarly, IN_MOVED_TO doesn't guarantee the file is
available when we receive it. And it actually isn't.
Watching for IN_CLOSE_WRITE fixes all that.
2009-06-11 13:45:02 +02:00
Julien BLACHE
467b177c17
Handle IN_DELETE, IN_MOVED_FROM and IN_MOVED_TO for files
2009-06-10 22:28:59 +02:00
Julien BLACHE
d63da9f08f
Add file and playlist enable/disable routines
2009-06-10 22:28:54 +02:00
Julien BLACHE
9ff8913dd6
Add file and playlist deletion (by path) routines
2009-06-10 22:28:49 +02:00
Julien BLACHE
ac96ac6baf
Move to the SQL database for storage of inotify watch info
2009-06-10 22:28:49 +02:00
Julien BLACHE
a9697eccdf
Add storage of inotify watch info
2009-06-10 22:28:43 +02:00
Julien BLACHE
bfa2488343
Add support for disabled files and playlists
2009-06-10 19:11:12 +02:00
Julien BLACHE
177fb35d81
Add missing argument to DPRINTF() call
2009-06-10 19:11:12 +02:00
Julien BLACHE
94421b0b1b
Handle IN_IGNORED events in inotify callback
2009-06-10 19:10:44 +02:00
Julien BLACHE
cbab1f80e0
ie->len is 0 for events reported on the watch subject
...
ie->len is non-0 only when the event is being reported for a file or
directory inside a watched directory.
2009-06-10 19:10:37 +02:00
Julien BLACHE
c8cc6bd603
Run event loop for each directory and each playlist when scanning in bulk mode
2009-06-10 19:04:18 +02:00
Julien BLACHE
4e38d168e1
Set and check database schema version
2009-06-10 19:04:18 +02:00
Julien BLACHE
ab1f9db6b3
Remove unused L_LOCK logdomain
2009-06-10 19:04:18 +02:00
Julien BLACHE
7314dd21c7
Purge old files and playlists after bulk scan
2009-06-10 19:04:18 +02:00
Julien BLACHE
4e3b29f502
Remove the old database code
2009-06-10 19:04:18 +02:00
Julien BLACHE
a200703393
Switch to the new database code
2009-06-10 19:04:18 +02:00
Julien BLACHE
f2c677462b
Add new database code
2009-06-10 19:04:12 +02:00
Julien BLACHE
52d3fd1064
Clear evkeyvalq structs before use; fix crasher
2009-06-07 19:06:59 +02:00
Julien BLACHE
149d5432c6
Rework error handling and cleanup
2009-06-07 19:06:59 +02:00
Julien BLACHE
0ff33f12d6
Move mDNS services registration out of main()
2009-06-07 19:06:59 +02:00
Julien BLACHE
f3c0145346
Move runas down into daemonize()
2009-06-07 19:06:59 +02:00
Julien BLACHE
f39c48b989
Cleanup options and add long options
2009-06-07 19:06:59 +02:00
Julien BLACHE
6e64e54429
General main.c cleanup
2009-06-07 19:06:59 +02:00
Julien BLACHE
64cd2ee383
Factor out RSP query parameters handling
2009-06-07 19:06:59 +02:00
Julien BLACHE
c59217f58e
Remove the unused L_PARSE logdomain
2009-06-07 19:06:58 +02:00
Julien BLACHE
2cc5f6928e
Remove the unused smart parser
2009-06-07 19:06:58 +02:00
Julien BLACHE
8b5a25c972
Remove/disable last users of the smart parser
2009-06-07 19:06:58 +02:00
Julien BLACHE
91e34a77c8
Use the new ANTLR parser for RSP queries
2009-06-07 19:06:58 +02:00
Julien BLACHE
f9d9964914
Add new ANTLR parser for RSP queries
...
This parser actually supports way more than is needed for RSP proper,
as mt-daapd was piggybacking on the RSP queries for its smart playlists.
As I don't have (yet?) the RSP specs, better safe than sorry here. This
will be revisited at some point. Or not.
2009-06-07 19:06:51 +02:00
Julien BLACHE
272d8bca04
Fix error message
2009-06-07 19:06:51 +02:00
Julien BLACHE
68c74e6a88
Replace the mxml RSP root element hack by a better one
...
There's no proper way to add attributes to the root XML element in mxml;
the best way to do that is to create the root element like we would
create any other element and put the whole "? ... ?" stuff in there.
2009-06-07 19:06:51 +02:00
Julien BLACHE
4872077319
Make the file scanner non-recursive
2009-06-07 19:06:51 +02:00
Julien BLACHE
ffb5a2fb06
Make wd2path static
2009-06-07 19:06:51 +02:00
Julien BLACHE
977afbbc5e
Add workaround for empty XML tags in RSP replies
...
The SoundBridge does not support empty XML tags (<foo/>) and treats anything
containing such tags as invalid. Adding an empty string to the element works
around that, in that mxml won't produce empty tags in this case.
Hackish, but dealing with a hackish implementation on the other side :)
2009-06-07 19:06:51 +02:00
Julien BLACHE
28350ae9a6
Look for a query or filter parameter in DAAP queries
...
The filter is passed in the query parameter if it's a search, but if it's
a browse it's in the filter parameter.
2009-06-07 19:06:51 +02:00
Julien BLACHE
7642b1c6d7
Use the new ANTLR parser for DAAP queries
2009-06-07 19:06:50 +02:00
Julien BLACHE
68db2ae7c2
Add new ANTLR parser for DAAP queries
2009-06-07 19:06:46 +02:00
Julien BLACHE
cefd3f3d1d
Make dmap_fields_hash static
2009-06-01 18:01:24 +02:00
Julien BLACHE
512731c9dc
Turn DPRINTF into a wrapper to a generic logging function
...
DPRINTF() made a generic logging function taking a va_list called
vlogger() and reimplemented as a wrapper on top of vlogger().
2009-06-01 16:01:47 +02:00
Julien BLACHE
c3a5222f84
Log libevent errors through our own logger
2009-05-09 17:14:07 +02:00
Julien BLACHE
11f18eaf6f
Remove unneeded log.c from evhttp copy
2009-05-09 17:14:07 +02:00
Julien BLACHE
be0ac2b103
Add missing cleanup calls
2009-05-09 17:14:07 +02:00
Julien BLACHE
7b3b538ea6
Rename L_REND to L_MDNS
2009-05-09 17:14:07 +02:00
Julien BLACHE
d384f3c395
Rename E_INF to E_INFO
2009-05-09 17:14:07 +02:00
Julien BLACHE
b6f23a8273
Remove old error logging facility
2009-05-09 17:14:07 +02:00
Julien BLACHE
11fd038d16
Use new logger facility
2009-05-09 17:14:06 +02:00
Julien BLACHE
3a2a218a0f
Introduce new logger
2009-05-09 17:14:01 +02:00
Julien BLACHE
2127aff906
Use a single log domain on DPRINTF() calls
2009-05-05 20:28:40 +02:00
Julien BLACHE
803ca7e59f
Rename foreground to background and change logic accordingly
2009-05-05 17:54:20 +02:00
Julien BLACHE
10bb9dec57
Remove useless daapd.h
2009-05-05 16:22:11 +02:00
Julien BLACHE
d2999aafec
Add missing stdint.h include to ff-dbstruct.h
2009-05-05 16:21:39 +02:00
Julien BLACHE
c85f9ed7dd
Move main event base extern declaration to mdns_avahi.c where it's used
2009-05-05 16:10:49 +02:00
Julien BLACHE
524bdd3f0d
Remove old config framwork include and wrappers
2009-05-05 16:10:44 +02:00
Julien BLACHE
9fce6d7abd
Use new config framework in main.c
2009-05-05 15:53:36 +02:00
Julien BLACHE
c1a2bf6fcf
Remove conf_*() usage in DB module
2009-05-05 15:45:48 +02:00
Julien BLACHE
ed0ff0c136
Unlink PID file on exit
2009-05-04 17:51:42 +02:00
Julien BLACHE
be4286b2e8
Remove -export-dynamic libtool flag now that we don't have plugins anymore
2009-05-04 17:48:31 +02:00
Julien BLACHE
8e14495bc2
Remove unused struct tag_stats (STATS)
2009-05-03 13:33:16 +02:00
Julien BLACHE
d1449a875b
Get rid of the global struct tag_config (CONFIG) config
2009-05-03 13:32:00 +02:00
Julien BLACHE
2530c3512b
Rename webface_cb() to httpd_gen_cb()
2009-05-03 12:26:01 +02:00
Julien BLACHE
cd6f87401a
Rename struct stream_chunk to struct stream_ctx
2009-05-03 12:19:04 +02:00
Julien BLACHE
ed7c848702
Remove I/O layer
2009-05-03 12:10:17 +02:00
Julien BLACHE
07fb43ca8c
Remove I/O layer init/deinit
2009-05-03 12:09:25 +02:00
Julien BLACHE
f0ca987d78
Replace io_* routines by standard I/O functions
2009-05-03 12:08:14 +02:00
Julien BLACHE
e8843a99aa
Remove util.[ch]
2009-05-03 11:38:32 +02:00
Julien BLACHE
1e0ffb6808
Remove use of util_* routines, last user
2009-05-03 11:37:30 +02:00
Julien BLACHE
9ef8acfa28
Remove old webserver
2009-05-03 11:20:12 +02:00
Julien BLACHE
6aca074f82
Remove plugin infrastructure
2009-05-03 11:20:07 +02:00
Julien BLACHE
baf529dbf2
Remove plugins directory
2009-05-03 11:20:02 +02:00
Julien BLACHE
2be04db4d2
Remove RSP output plugin
2009-05-03 11:16:58 +02:00
Julien BLACHE
ef1c2b2b89
Remove DAAP output plugin
2009-05-03 11:16:58 +02:00
Julien BLACHE
89eead66f6
Remove ssc-ffmpeg plugin
2009-05-03 11:16:58 +02:00
Julien BLACHE
417b5e0ce3
Remove ssc-script plugin
2009-05-03 11:16:58 +02:00
Julien BLACHE
81cb0efa81
Stop loading plugins, we don't need plugins anymore
2009-05-03 11:16:58 +02:00
Julien BLACHE
2fb7537346
Register RSP and DAAP services in main()
2009-05-03 11:16:58 +02:00
Julien BLACHE
c76c8165ce
Enable httpd on the configured port
2009-05-03 11:16:58 +02:00
Julien BLACHE
d46bb295c5
Disable old webserver
2009-05-03 11:16:58 +02:00
Julien BLACHE
a1afb0d390
Use evhttp_send_reply_chunk_with_cb() to stream files
...
This evhttp extension makes it possible to schedule chunks one after
the other when (part of) the previous chunk has been written to the
client.
2009-05-03 11:16:58 +02:00
Julien BLACHE
7a37732658
Add a variant of evhttp_send_reply_chunk() with a callback on evhttp_write_buffer()
...
evhttp_write_buffer() used by evhttp_send_reply_chunk() can take callback
executed when (part of) the buffer has been written. Using this callback to
schedule the next chunk avoids buffering large amounts of data in memory.
2009-05-03 11:16:58 +02:00
Julien BLACHE
1d152decf7
Use evhttp_request->fail_cb to stop streaming if the client closes the connection
...
This is an extension to evhttp. Without this, we cannot know that the client
closes the connection, and we keep pushing chunks while the underlying
evhttp_request has been freed, leading to a segfault.
2009-05-03 11:16:57 +02:00
Julien BLACHE
1ffcbdae27
Add a fail_cb to evhttp_request for connection failures
...
The callback will be executed if a failure (timeout, read error) is detected
on an incoming connection.
This can be used to detect a client closing the connection while engaged in a
chunked reply and actively pushing chunks to the client. Without this
notification, it is impossible to know if/when a connection gets closed and
react appropriately (ie. stop pushing chunks) resulting in a segfault.
2009-05-03 11:16:57 +02:00
Julien BLACHE
e4fe084619
Use embedded evhttp
2009-05-03 11:16:57 +02:00
Julien BLACHE
6bce4e08ca
Import evhttp from libevent 1.4.10
2009-05-03 11:16:57 +02:00
Julien BLACHE
c9868175fd
Implement URI encoding quirk for iTunes and Roku
...
iTunes and Roku devices do not encode + as %2B in the query string and
do not encode space as + either in the query string (though at least the
Roku encode space as %20 everywhere). This needs to be worked around or
browse queries fail to parse because + was decoded as space when the query
really needs a + character.
2009-05-03 11:16:57 +02:00
Julien BLACHE
09ef188d90
Add authentication to web interface, RSP and DAAP
2009-05-03 11:16:57 +02:00
Julien BLACHE
dc68de86dd
Add HTTP Basic auth support
2009-05-03 11:16:57 +02:00
Julien BLACHE
cd636cf42d
Add base64 decoding routine
2009-05-03 11:16:57 +02:00
Julien BLACHE
7a601d7daa
Enable streaming of transcoded content
2009-05-03 11:16:57 +02:00
Julien BLACHE
2c2498b6b4
Add transcoding infrastructure
2009-05-03 11:16:57 +02:00
Julien BLACHE
22092f555b
Add L_XCODE log domain
...
Log domain for anything transcoding-related.
2009-05-03 11:16:57 +02:00
Julien BLACHE
e5cc417e96
Add DJB hash function to misc.[ch] and use it
2009-05-03 11:16:51 +02:00
Julien BLACHE
0a1c4545dc
Move safe_ato[il]() to misc.[ch]
2009-04-30 14:46:37 +02:00
Julien BLACHE
91414c10d7
Use a hashtable for dmap fields lookup
...
The hashtable is built around an AVL tree and the DJB hash function;
the AVL tree is built at init time and the init routine checks for
collisions.
2009-04-30 13:57:40 +02:00
Julien BLACHE
c071a58c3c
Wire up DAAP support
2009-04-30 13:57:40 +02:00
Julien BLACHE
00876facde
Introduce DAAP protocol implementation
...
Same restrictions as RSP at the moment:
- no transcoding
- no authentication
2009-04-30 13:57:34 +02:00
Julien BLACHE
f332f992aa
Document HTTP client quirks known to mt-daapd
2009-04-28 18:00:27 +02:00
Julien BLACHE
651d946cc2
Implement RSP streaming.
2009-04-28 18:00:27 +02:00
Julien BLACHE
f05a55e7fc
Implement HTTP chunked streaming
...
Transcoding is not supported yet.
In the current state of affairs, we will crash if the client closes the
connection before the tranfser is done. This is a limitation of evhttp,
it is not possible to detect this condition. This will need to be fixed
in evhttp.
2009-04-28 18:00:21 +02:00
Julien BLACHE
5e8275a998
Wire up RSP support
2009-04-25 23:02:21 +02:00
Julien BLACHE
718631bab5
Introduce RSP protocol implementation
...
Lacks a couple of things:
- actual streaming
- transcoding
- authentication
2009-04-25 23:02:15 +02:00
Julien BLACHE
21209bd040
Make sp_parse() second argument (term) const
...
The term (filter) argument is strdup()'d and that copy gets destroyed by
the parsing.
2009-04-25 16:27:59 +02:00
Julien BLACHE
6ed689d1c9
Move FILTER_TYPE_* definitions to smart-parser.h, where they belong
2009-04-25 16:27:59 +02:00
Julien BLACHE
29db6de1bb
Fixup prototype for db_enum_fetch_row()
...
Second argument is actually a pointer to a pointer to a struct
db_media_file_info, and not a simple pointer.
That code sucks. Plain and simple. Will be taken out and shot at the
earliest occasion. Someone badly needs to take "Pointers 101", among
a lot of other 101 courses. Sigh.
2009-04-25 16:27:58 +02:00
Julien BLACHE
bdcb5b88dc
Rename struct tag_packed_m3ufile and struct tag_packed_mp3file
2009-04-25 16:27:58 +02:00
Julien BLACHE
5fc698c94f
Add L_RSP log domain
2009-04-25 16:27:58 +02:00
Julien BLACHE
9d1cd9117f
Enable new HTTP server alongside the old webserver
2009-04-25 16:27:58 +02:00
Julien BLACHE
095350e6eb
Introduce new evhttp-based HTTP server
2009-04-25 16:27:47 +02:00
Julien BLACHE
c9494a898e
Add L_HTTPD for new evhttp-based HTTPd implementation
2009-04-24 15:45:44 +02:00
Julien BLACHE
7afc55307d
Change prototype and return values for new file scanners
2009-04-24 15:45:44 +02:00
Julien BLACHE
92362068c6
Remove old file scanner (mp3-scanner)
2009-04-24 15:45:43 +02:00
Julien BLACHE
3a38e62f8a
Remove/replace mp3-scanner.h include
2009-04-24 15:45:43 +02:00
Julien BLACHE
1a0e1731e4
Remove iTunes XML playlist parsing code
2009-04-24 15:45:43 +02:00
Julien BLACHE
69d6acad37
Remove support for iTunes XML playlist
...
No plans for OS X nor Windows in the near future, and those are most
probably useless on other platforms.
2009-04-24 15:45:43 +02:00
Julien BLACHE
831016bb05
Use new m3u scanner
2009-04-24 15:45:43 +02:00
Julien BLACHE
1a0f1317e2
Add rewritten scan_static_playlist() as scan_m3u_playlist()
...
Get rid of the I/O layer, better code.
2009-04-24 15:45:43 +02:00
Julien BLACHE
4a9d89c007
Rename struct tag_m3ufile into struct playlist_info
2009-04-24 15:45:43 +02:00
Julien BLACHE
bc5a3db08a
Rename scan-url.c to filescanner_urlfile.c
2009-04-24 15:45:43 +02:00
Julien BLACHE
0a61b5a51d
Rewrite .pls/.url file parser
...
Get rid of the I/O layer, ameliorate bitrate parsing, restructure code.
2009-04-24 15:45:33 +02:00
Julien BLACHE
1eaa3979e6
Add missing db_deinit() calls
2009-04-20 16:41:06 +02:00
Julien BLACHE
c4f8c7c254
Use new file scanner
2009-04-20 16:41:06 +02:00
Julien BLACHE
c0e3c1bc5f
Introduce new file scanner
...
The new file scanner has inotify support and runs in its own thread, including
for performing the initial rescan.
2009-04-20 16:41:01 +02:00
Julien BLACHE
57c698fce9
Export scan_static_playlist()
2009-04-19 19:39:15 +02:00
Julien BLACHE
bbab963fe2
Use new conffile code in main.c; remove wrappers
2009-04-19 19:39:15 +02:00
Julien BLACHE
bacdddb82f
Use -v for version information
2009-04-19 19:39:11 +02:00
Julien BLACHE
5e48a8bb6a
Remove -k/kill_server option
2009-04-19 19:38:41 +02:00
Julien BLACHE
362db5003b
Remove config file conversion code
2009-04-19 19:37:48 +02:00
Julien BLACHE
8e4b2db99e
Export cfg structure
2009-04-19 19:37:47 +02:00
Julien BLACHE
e3ab6de328
Replace old config code, remove old code
...
Activate the new confuse-based config code, add compatibility functions
for the old config code.
2009-04-19 19:37:47 +02:00
Julien BLACHE
a17e23010a
Introduce new confuse-based conffile support
2009-04-19 19:37:47 +02:00
Julien BLACHE
9f2e088d57
Add more .gitignore stuff
2009-04-19 19:37:47 +02:00
Julien BLACHE
e8c9a04376
Remove OS abstraction layer
...
Migrate daemon startup code in main.c, migrate functions with a single
callsite to that file. Remove setpgrp() usage in favor of setsid(), remove
configure check for setpgrp().
2009-04-19 19:37:42 +02:00
Julien BLACHE
9d026442b2
Remove alternate plugin load paths
2009-04-19 19:37:41 +02:00
Julien BLACHE
3ec2cc0f00
Stop the TXT record encoding madness
...
Use a proper string array to pass the TXT record fields, get rid of the
encoding stuff.
Changes the plugin API.
2009-04-19 19:37:41 +02:00
Julien BLACHE
2e2dbc6964
Free mDNS group entries in mdns_deinit()
2009-04-19 19:37:41 +02:00
Julien BLACHE
b3b66449bc
Build the string list for the mDNS TXT record once in mdns_register
...
Instead of rebuilding the string list at every regitration, build it once
and for all in mdns_register().
2009-04-19 19:37:41 +02:00
Julien BLACHE
8718f856df
Remove unused, unfinished, useless UPnP code
2009-04-19 19:37:41 +02:00
Julien BLACHE
6db32640ef
Remove no-op os_deinit()
2009-04-19 19:37:41 +02:00
Julien BLACHE
54c01d3b57
Move signal processing to the main loop using signalfd
2009-04-19 19:37:41 +02:00
Julien BLACHE
0292b9c625
Fix memory leak
2009-04-19 19:37:41 +02:00
Julien BLACHE
39e5b11bec
Remove old Avahi mDNS backend
2009-04-19 19:37:41 +02:00
Julien BLACHE
97faadf6dd
Enable new mDNS backend
2009-04-19 19:37:35 +02:00
Julien BLACHE
97cb82faf7
Add new Avahi mDNS backend with libevent integration.
2009-04-08 14:57:34 +02:00
Julien BLACHE
8a351e5bf8
Manage explicit event bases
2009-04-08 14:57:29 +02:00
Julien BLACHE
02f960b25b
Fix Avahi races
...
Switch from custom thread + SimplePoll to ThreadedPoll, ensuring proper
locking of the polling thread.
2009-04-07 14:03:13 +02:00
Julien BLACHE
df0013a166
Introduce libevent for running the main loop
...
Start the gradual libevent conversion.
2009-04-07 12:53:04 +02:00
Julien BLACHE
3b4e0d8f74
Add missing ;
2009-04-07 11:40:14 +02:00
Julien BLACHE
b3cffd491d
Add and use io_urlencode() to replace %U format spec for io_open()
...
Stopgap to replace the %U modifier until something happens with the whole
io_* stuff.
2009-04-05 22:42:03 +02:00
Julien BLACHE
687be1cbb6
Remove compat.[ch]
2009-04-05 19:15:44 +02:00
Julien BLACHE
7098dfbab3
Fix various trivial compiler warnings
2009-04-05 19:03:29 +02:00
Julien BLACHE
ea36855793
Fix format specifiers for 64bit integers
...
Use "%" PRIu64 from inttypes.h instead of "%lld" which is incorrect on 64bit
platforms.
2009-04-05 18:54:59 +02:00
Julien BLACHE
f4721a6cec
Add explicit -export-dynamic
...
mt-daapd needs an explicit -export-dynamic so its symbols are made visible
to the plugins at load time.
2009-04-05 18:54:59 +02:00
Julien BLACHE
081a13bbea
Fix ffmpeg API breakage
...
avcodec_audio_decode() has been removed in favor of avcodec_decode_audio2();
output buffer size must be passed to the function.
2009-04-05 18:54:59 +02:00
Julien BLACHE
888bf11d2f
Replace %U format by %s
...
%s format specifier means the string must be URL encoded. Replace it by a
simple %s for the time being until plans about the I/O layer become clearer.
2009-04-05 18:54:59 +02:00
Julien BLACHE
e318858d44
Fill in type & codectype for .url/.pls
2009-04-05 18:54:59 +02:00
Julien BLACHE
c2ffed5e2b
Remove unused iconv-dependent code.
...
The code was mainly used by the MP3 scanner.
2009-04-05 18:54:59 +02:00
Julien BLACHE
d8a9772afc
Remove/replace non-gcc compiler-specific defines and pragmas
...
Remove MSVC-specific defines and pragmas, use __attribute__((packed)) where
needed.
2009-04-05 18:54:58 +02:00
Julien BLACHE
3dd76cf9e9
Remove unneeded prototypes
2009-04-05 18:54:58 +02:00
Julien BLACHE
625ffd2112
Work around ffmpeg bugs in metadata support for some formats
...
Fall back to the legacy format-specific scanners for WMA, FLAC and Musepack,
as ffmpeg doesn't report metadata for FLAC nor Musepack and has bugs with
some WMA variants.
2009-04-05 18:54:58 +02:00
Julien BLACHE
3a53a068af
Initialize ffmpeg in main()
...
ffmpeg needs to be initialized before scanning songs at startup. As a
consequence, the ffmpeg plugin does not need to call av_register_all()
itself anymore.
2009-04-05 18:54:58 +02:00
Julien BLACHE
c9107ed48c
Remove unneeded id3tag.h include
2009-04-05 18:54:58 +02:00
Julien BLACHE
f14ba228ec
Remove Ogg Vorbis file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
056f788c99
Remove MP3 file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
9f45181bb3
Remove AAC file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
84a132d166
Remove WAV file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
23802f1866
Remove AIFF file scanner
2009-04-05 18:54:58 +02:00
Julien BLACHE
a3e83775b3
Enable ffmpeg file scanner
...
Replace all file scanners with the new ffmpeg file scanner. Keep pls and
url exceptions.
2009-04-05 18:54:49 +02:00
Julien BLACHE
8dce7ee0f3
Add comments pertaining to the type, codectype and description fields
...
Better document the type, codectype and description fields, noting they
equivalent DAAP fields and usage/restrictions.
2009-04-05 10:24:10 +02:00
Julien BLACHE
10037ff7cf
Rename struct tag_mp3file
...
That struct is badly named, rename it to struct media_file_info and keep
the typedef as-is for now.
2009-04-05 10:10:24 +02:00
Julien BLACHE
0187b5d405
Make ffmpeg mandatory
2009-04-05 10:06:03 +02:00
Julien BLACHE
f5dd1bec13
Add an ffmpeg-based file scanner
...
Use ffmpeg's (starting with SVN 20090301) new metadata API to extract
metadata from virtually all formats supported by ffmpeg. That will allow
to get rid of some dependencies and some open-coded routines that aren't
maintainable.
2009-04-05 09:51:40 +02:00
Julien BLACHE
2cb11e8f42
Fix typos in help output
2009-04-02 13:24:09 +02:00
Julien BLACHE
1b98e3c036
Fix Avahi mDNS backend
...
Fix Avahi polling:
- use avahi_simple_poll_loop() in rend-avahi.c:rend_poll() instead
of reinventing yet another type of wheel;
- start RendezVous thread after daemonizing, so the thread actually
runs after we've daemonized.
Also handle Avahi daemon restarts, as it's good practice and easy to do.
... And /that/, my friends, is how we do that ...
2009-04-02 13:22:23 +02:00
Julien BLACHE
464bd414a1
Properly guard bytes_written against NULL
...
ws_copyfile() can be called with bytes_copied == NULL but did not
check for this condition before using bytes_copied after an IO error,
leading to a segfault.
2009-04-02 13:17:16 +02:00
Julien BLACHE
46acba0edb
Fix ilst atom parsing
...
Fix ilst children parsing; when parsing children, we're already 8 bytes
into the ilst atom, so take that into account.
2009-04-02 13:16:07 +02:00
Julien BLACHE
93a97956a0
Change return type to boolean
...
Use a boolean return type instead of returning -1 with an unsigned return type.
2009-04-02 13:14:54 +02:00
Neil Spring
7565b02229
Properly reset XML scanner state between scans
...
Fix indexing of multiple XML files by resetting path_found for each
XML file.
2009-04-02 13:10:19 +02:00
Chris Pitchford
54d441f57c
Fix handling of URIs in io_open()
...
Fix io_open()'s handling of options in URI, fixing the "filenames with a
question mark are not scanned" bug.
Patch by Chris Pitchford, cpitchford on the Firefly forum.
2009-04-02 13:07:36 +02:00
Jeremy Kerr
7c1752d871
Fix a bad return value in ws_addarg()
...
Fix a bad return value in ws_addarg() when updating a header value,
leading the caller to believe an out of memory condition happened.
2009-04-02 13:01:19 +02:00
Nico Golde
567bd3ee03
Fix integer overflow, CVE-2008-1771
...
Fix integer overflow leading to heap-based buffer overflow causing a
remote Denial of Service and possibly allows to execute arbitrary code.
2009-04-02 12:59:31 +02:00
Nico Golde
5d227e85c5
Fixup taglib_tab_free_strings() invocation
...
Fixup taglib_tab_free_strings() invocation; the function never took an
argument to start with, so fix that up as it now breaks the build.
2009-04-02 12:29:49 +02:00
Julien BLACHE
b80b81adae
Don't clobber LIBS with -ldl
2009-04-02 12:18:53 +02:00
Julien BLACHE
3a55c153b8
Move wavstreamer to tools
2009-04-02 12:18:47 +02:00
Julien BLACHE
023e034020
Don't clobber LDFLAGS with iconv
2009-04-02 11:42:39 +02:00
Julien BLACHE
1c97e73351
Remove embedded copy of getopt
2009-04-02 11:08:41 +02:00
Julien BLACHE
cfdb37c07c
Remove Mac OS conditional code
2009-04-02 11:06:29 +02:00
Julien BLACHE
c3fb950737
Remove WIN32 conditional code
2009-04-02 11:04:33 +02:00
Julien BLACHE
b59f936390
Remove barely-used bsd-snprintf.[ch]
2009-04-01 19:26:19 +02:00
Julien BLACHE
fc8038de6b
Get rid of unused restart.[ch]
2009-04-01 19:17:05 +02:00
Julien BLACHE
242d41fd0d
Remove unused uici code
2009-04-01 19:16:28 +02:00
Julien BLACHE
d3b4d80284
Remove SVN keywords
2009-04-01 19:16:21 +02:00
Julien BLACHE
36a0217199
Use pkg-config for TagLib
2009-04-01 19:16:20 +02:00
Julien BLACHE
b4deba68b6
Use pkg-config for libFLAC
...
Don't use FLAC_CFLAGS because it contains -I/usr/lib/FLAC which breaks
anything using assert(), due to FLAC's own assert.h.
2009-04-01 19:16:20 +02:00
Julien BLACHE
22e646099a
Use pkg-config for Ogg/Vorbis
2009-04-01 19:16:20 +02:00
Julien BLACHE
2fd4b744a7
Use pkg-config for id3tag
2009-04-01 19:16:20 +02:00
Julien BLACHE
5f682ca276
Remove unused SSL support
...
Unused, and anyway OpenSSL is not compatible with the GPL.
2009-04-01 19:16:20 +02:00
Julien BLACHE
7ce2e75859
Use pkg-config to check for libavcodec & libavformat
2009-04-01 19:16:20 +02:00
Julien BLACHE
2daa9835a3
Update includes for newer ffmpeg versions
2009-04-01 19:16:19 +02:00
Julien BLACHE
098ab7d736
Make SQL mandatory and sqlite3 the default (and only) backend
2009-04-01 19:16:19 +02:00
Julien BLACHE
c0d395b7f9
Remove unused NSLU2 flag
2009-04-01 19:16:19 +02:00
Julien BLACHE
eb5cccca06
Make MDNS mandatory and Avahi the default (and only) backend
2009-04-01 19:16:19 +02:00
Julien BLACHE
185864e799
Remove custom memory debug facility
2009-04-01 19:16:19 +02:00
Julien BLACHE
ca1c461419
Remove gdbm database backend
2009-04-01 19:16:19 +02:00
Julien BLACHE
1d71d95332
Remove x bit
2009-04-01 19:16:19 +02:00
Julien BLACHE
e2a31b40a2
Remove obsolete sqlite v2 SQL backend
2009-04-01 19:16:19 +02:00
Julien BLACHE
a278c5998c
Remove non-Avahi mDNS backends
2009-04-01 19:16:13 +02:00
Julien BLACHE
3a8c7b3c41
Get rid of Apple's RendezVous mDNS implementation
2009-04-01 15:36:55 +02:00
Julien BLACHE
1ca30657ac
Remove unneeded script
2009-04-01 15:36:55 +02:00
Julien BLACHE
b4fe0300b4
Remove test drivers
2009-04-01 15:36:37 +02:00
Julien BLACHE
180cc2eb5a
Get rid of win32 code
2009-04-01 14:48:27 +02:00
Ron Pedde
f3d1caff93
Fix 3 large memory leaks
2007-10-29 05:48:42 +00:00
Ron Pedde
e842f38fce
fix windows blocking socket issue, work around problem with temp update table not being seen by fetch thread during db update
2007-10-24 05:44:35 +00:00
Ron Pedde
c8d09bc310
Make rsp update session status, to help kick off rescans
2007-10-24 04:06:52 +00:00
Ron Pedde
d75e1f8d48
Update playcounts for transcoded files
2007-10-24 03:59:34 +00:00
Ron Pedde
a8b6d93c07
Add count value to smart playlists, closing #150
2007-10-23 04:52:25 +00:00
Ron Pedde
fffe34e5eb
Fix bogus error messages on web config
2007-10-23 04:23:50 +00:00
Ron Pedde
60f8d1299f
Fix wav scanning for wav files with more than two blocks (wmp wav files with LIST/INFO blocks)
2007-10-23 03:57:20 +00:00
Ron Pedde
ad5718bb9c
Add DESCRIPTION tag as an alias for COMMENT in flac files
2007-10-23 03:43:17 +00:00
Ron Pedde
34a4bb998e
Fix duration scanning for wav files
2007-10-23 03:37:51 +00:00