Commit Graph

1283 Commits

Author SHA1 Message Date
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