This patch set adds a support for UDP version of RAOP (so called raop2). Most of the RAOP devices (e.g. AppleTV, AirportExpress, third party AV receivers) today use UDP version, so this patch set is expected to support those devices. This patch set can also be accessed from: https://github.com/hfujita/pulseaudio-raop2/tree/hf/raop2-v7-next This patch addresses several comments from reviewers. >From Arun Raghavan: (https://lists.freedesktop.org/archives/pulseaudio-discuss/2016-February/thread.html) * Use pa_split_in_place instead of pa_split in pa_str_in-list * Remove garbage file from the log >From Anton Lundin: https://lists.freedesktop.org/archives/pulseaudio-discuss/2016-October/027025.html * Make sure using correct spell of KTH * Always pa_xstrdup() and pa_xfree() on server capability discovery for better code maintainability. * Split a base64 cleanup patch and an MD5 patch * Retain KTH copyright on base64 implementation >From both: * Stop dropping "device" key when parsing server capabilities * Swap order between "raop: Add UDP protocol handling" and "raop: Parse server capabilities on discovery". Colin Leroy (4): raop: Fix sink getting destroyed after one use raop: fix sequence number overflow raop: fix typos raop: Fix packet retransmission Hajime Fujita (11): pulsecore: Add pa_strneq macro pulsecore: Add pa_split_space_in_place function pulsecore: Do in-place search in pa_str_in_list_spaces raop: Add UDP protocol handling raop: Add address to RAOP device description raop: Add IPv6 support raop: Silently drop out-of-history retransmission request raop: Stop recording when RTSP FLUSH is issued raop: Disable is_recording flag when tearing down the connection raop: Discard data upon getting EAGAIN on a socket raop: Fix memory leaks Martin Blanchard (14): raop: Parse server capabilities on discovery raop: Do not send audio before RECORD response raop: Better playback resume handling raop: Extract encryption related code into a separate file raop: Move base64 implementation to a util file raop: Add a MD5 hashing fuction raop: Add BA (Basic) and DA (Digest) HTTP authentication helpers raop: Merge TCP and UDP code paths + refactoring raop: Prefer ALAC encoding to raw PCM if supported by server raop: Update and standardise source file headers raop: Rework packet's store memory management raop: Remove unimplemented code (PCM and AAC) raop: Correctly wrap RTP packet sequence number raop: Add back initial volume RTSP SET_PARAMETER request on connect Matthias Wabersich (1): raop: Packet retransmission support for UDP Stephen Paul Weber (1): raop: Do not flush when RTSP object is not ready ced2c (2): raop: Fix #36: invalid access to freed object raop: Fix #37: OOB access in rtsp_auth_cb src/Makefile.am | 8 +- src/modules/raop/module-raop-discover.c | 107 +- src/modules/raop/module-raop-sink.c | 630 +--------- src/modules/raop/raop-client.c | 1768 ++++++++++++++++++++++++++++ src/modules/raop/raop-client.h | 83 ++ src/modules/raop/raop-crypto.c | 146 +++ src/modules/raop/raop-crypto.h | 35 + src/modules/raop/raop-packet-buffer.c | 161 +++ src/modules/raop/raop-packet-buffer.h | 40 + src/modules/raop/raop-sink.c | 669 +++++++++++ src/modules/raop/raop-sink.h | 33 + src/modules/raop/{base64.c => raop-util.c} | 165 ++- src/modules/raop/{base64.h => raop-util.h} | 17 +- src/modules/raop/raop_client.c | 570 --------- src/modules/raop/raop_client.h | 42 - src/modules/rtp/rtsp_client.c | 91 +- src/modules/rtp/rtsp_client.h | 30 +- src/pulsecore/core-util.c | 30 +- src/pulsecore/core-util.h | 2 + 19 files changed, 3307 insertions(+), 1320 deletions(-) create mode 100644 src/modules/raop/raop-client.c create mode 100644 src/modules/raop/raop-client.h create mode 100644 src/modules/raop/raop-crypto.c create mode 100644 src/modules/raop/raop-crypto.h create mode 100644 src/modules/raop/raop-packet-buffer.c create mode 100644 src/modules/raop/raop-packet-buffer.h create mode 100644 src/modules/raop/raop-sink.c create mode 100644 src/modules/raop/raop-sink.h rename src/modules/raop/{base64.c => raop-util.c} (50%) rename src/modules/raop/{base64.h => raop-util.h} (61%) delete mode 100644 src/modules/raop/raop_client.c delete mode 100644 src/modules/raop/raop_client.h -- 2.9.3