Commit graph

23 commits

Author SHA1 Message Date
Barnabás Pőcze
ceb4f43944 pipewire: rtsp-client: use flexible array member for outgoing message content
There is no need to have an extra pointer in the struct that is
set to right after the object at initialization and is never modified
because a flexible array member can be used instead.
This has advantages: `struct message` is now smaller, and there is
no extra load when accessing `struct message::data`.
2023-09-29 16:55:54 +00:00
Christian Glombek
d8dc89ad1a module-raop/rtsp-client: Pass content to reply function 2023-07-13 15:42:56 +00:00
Wim Taymans
9a93a60fbf raop: log last error on connection failure 2023-06-07 16:45:56 +02:00
Wim Taymans
deda8a10d1 module-raop: fix memory leak
Don't leak the pending messages.
2023-03-15 15:56:45 +01:00
Barnabás Pőcze
934ab3036e treewide: use SPDX tags to specify copyright information
SPDX tags make the licensing information easy to understand and clear,
and they are machine parseable.

See https://spdx.dev for more information.
2023-02-16 10:54:48 +00:00
Wim Taymans
59e49d31eb raop: add error from reply
Return an error from the reply callback and log some generic message
in case there is an error value returned.
2022-10-12 17:51:35 +02:00
James Le Cuirot
4b0945bf01 raop: Use the real URI for digest authentication rather than *
Yamaha MusicCast (or at least the RX-A880) seems to be stricter about
the URI here, as it rejects `*`. Examples, such as those documented by
OpenAirplay, use the real URI.
2022-10-12 07:38:14 +00:00
Wim Taymans
78bfdd1717 raop: use pw_strip to string header values 2022-09-26 09:31:55 +02:00
Sebastian Koenig
fa20fb2e80 rtsp-client: remove trailing whitespace from header data
Some clients may send headers with trailing whitespace, which can upset
subsequent parsing of the data into numbers.  This patch removes such trailing
whitespace before further processing the header data.
2022-09-26 07:20:27 +00:00
Barnabás Pőcze
e9b5cc405e pipewire: rtsp-client: read message content properly
Make the receiving state machine more pronounced by explicitly storing
the state in the client. Furthermore, always consume the message content
if there is one and not only if the content type is "application/octet-stream",
but do not try to do it at once - like previously, instead only as the
socket becomes readable. The body is currently dropped, but it could
easily be collected in e.g. a `pw_array` should the need ever arise.

See #2673
2022-09-09 01:47:51 +02:00
Barnabás Pőcze
9b63c5011d pipewire: rtsp-client: check if the status code code is a number 2022-09-09 01:47:51 +02:00
Barnabás Pőcze
56df6fed13 pipewire: rtsp-client: reset receive state when connected
Previously, the state used to receive messages from the remote
end was not reset when the client connected, which could
lead to issues if the same client is reused for multiple
connections.
2022-09-09 01:47:51 +02:00
Barnabás Pőcze
2d7eb8678b pipewire: rtsp-client: allow sending arbitrary binary data
Previously, the content had to be a null-terminated byte
sequence because the sending function used `strlen()` to
determine its length. However, `rtsp_do_auth_setup()` needs
to send a non-textual byte sequence, and it only worked so
far because it did not happen to have any zero bytes in it.
Add a "content_length" parameter and change the type of
"content" to facilitate sending arbitrary byte sequences.
2022-09-09 01:47:51 +02:00
Barnabás Pőcze
e5ca5d0480 pipewire: rtsp-client: use tabs for indentation 2022-09-09 01:47:51 +02:00
Barnabás Pőcze
56c4aca5d9 pipewire: rtsp-client: remove unused "session" member 2022-09-09 01:47:51 +02:00
Barnabás Pőcze
36589039f4 pipewire: rtsp-client: make request CSeq uint32_t 2022-09-09 01:47:51 +02:00
Davis Davalos-DeLosh
eb3c2f3e95 module-raop: Add support for auth_setup
This step is required by some devices.

Co-authored-by: Christian Glombek <lorbus@fedoraproject.org>
2022-07-07 11:20:39 +00:00
Wim Taymans
99f9f729ff handle open_memstream errors
Fixes #2182
2022-03-02 11:48:31 +01:00
Wim Taymans
8e3eaf7952 raop: fix errno check 2022-01-12 10:11:00 +01:00
Wim Taymans
c03d10296b raop: connect TCP socket
Connect to the server TCP socket in TCP mode.
Use getaddrinfo to resolve hostname.
2021-11-13 21:00:24 +01:00
Wim Taymans
ac92f584ab raop: remove duplicate define 2021-11-12 16:58:27 +01:00
Wim Taymans
7ed9c790e2 raop: More improvements
Handle control source io. We don't yet implement retransmission,
though.
Handle latency by exposing the server latency on the stream ports.
Use the Format param event to connect/announce and teardown.
Use the stream state to record/flush.
Fix some leaks.
Remove the state from rtsp-client, we don't need it.
Strip whitespace from header values.
2021-11-12 16:58:27 +01:00
Wim Taymans
9223fc2885 raop: add beginnings of RAOP protocol 2021-11-12 16:58:27 +01:00