raop: Merge TCP and UDP code paths + refactoring
authorMartin Blanchard <tchaik@gmx.com>
Sun, 6 Nov 2016 18:54:07 +0000 (12:54 -0600)
committerTanu Kaskinen <tanuk@iki.fi>
Thu, 19 Jan 2017 01:10:19 +0000 (03:10 +0200)
commit8022e565810af61ffea436fcad8ef8085fc912aa
tree0e743bc9cede9472f63b697a5066edf8765b734c
parent5ff21c3bdd0e1873bdb90bf148f706f26bf6360e
raop: Merge TCP and UDP code paths + refactoring

TCP and UDP implementation are following two diffrent code path while code
logic is quite the same. This patch merges both code path into a unique one
and, thus, leads to a big refactoring. Major changes include:
  - moving sink implementation to a separate file (raop-sink.c)
  - move raop-sink.c protocol specific code to raop-client.c
  - modernise RTSP session handling in TCP mode
  - reduce code duplications between TCP and UDP modes
  - introduce authentication support
  - TCP mode does not constantly send silent audio anymore

About authentication: OPTIONS is now issued when the sink is preliminary
loaded. Client authentication appends at that time and credential is kept
for the whole sink lifetime. Later RTSP connection will thus look like this:
ANNOUNCE > 200 OK > SETUP > 200 OK > RECORD > 200 OK (no more OPTIONS). This
behaviour is similar to iTunes one.

Also this patch includes file name changes to match Pulseaudio naming
rules, as most of pulseaudio source code files seem to be using '-'
instead of '_' as a word separator.
16 files changed:
src/Makefile.am
src/modules/raop/module-raop-sink.c
src/modules/raop/raop-client.c [new file with mode: 0644]
src/modules/raop/raop-client.h [new file with mode: 0644]
src/modules/raop/raop-crypto.c [moved from src/modules/raop/raop_crypto.c with 98% similarity]
src/modules/raop/raop-crypto.h [moved from src/modules/raop/raop_crypto.h with 100% similarity]
src/modules/raop/raop-packet-buffer.c [moved from src/modules/raop/raop_packet_buffer.c with 97% similarity]
src/modules/raop/raop-packet-buffer.h [moved from src/modules/raop/raop_packet_buffer.h with 100% similarity]
src/modules/raop/raop-sink.c [new file with mode: 0644]
src/modules/raop/raop-sink.h [new file with mode: 0644]
src/modules/raop/raop-util.c [moved from src/modules/raop/raop_util.c with 99% similarity]
src/modules/raop/raop-util.h [moved from src/modules/raop/raop_util.h with 100% similarity]
src/modules/raop/raop_client.c [deleted file]
src/modules/raop/raop_client.h [deleted file]
src/modules/rtp/rtsp_client.c
src/modules/rtp/rtsp_client.h