<feed xmlns='http://www.w3.org/2005/Atom'>
<title>paraslash/audiod_command.c, branch next</title>
<subtitle>paraslash - network audio streaming tools</subtitle>
<id>https://git.tue.mpg.de/cgit/paraslash/atom?h=next</id>
<link rel='self' href='https://git.tue.mpg.de/cgit/paraslash/atom?h=next'/>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/'/>
<updated>2026-06-29T19:25:37Z</updated>
<entry>
<title>audiod: Dedoxify audiod_command.c.</title>
<updated>2026-06-29T19:25:37Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-28T21:05:17Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=584be7e31bfe93cd2bb904ac622336e5a234d20d'/>
<id>urn:sha1:584be7e31bfe93cd2bb904ac622336e5a234d20d</id>
<content type='text'>
The documentation included too much detail, which is not helpful for the
doxygen web page because it only hides the interesting part of the file
(the five public functions).
</content>
</entry>
<entry>
<title>audiod: Write help error message to error sideband.</title>
<updated>2026-06-29T19:25:37Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-28T20:44:42Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=4a7704d91cb1c1b6cd28172aa65296fe4daf76e8'/>
<id>urn:sha1:4a7704d91cb1c1b6cd28172aa65296fe4daf76e8</id>
<content type='text'>
Without this, the error message returned by lsu_com_help() is written to
the SBD_OUTPUT band. As a result,

	para_audioc help does_not_exist 2&gt;/dev/null

prints the message to stdout.
</content>
</entry>
<entry>
<title>audiod: Move clear_status_items() and make it static.</title>
<updated>2026-05-09T10:26:42Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-05-02T21:28:32Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=511d600842531160221e210a5293698eea2bba8c'/>
<id>urn:sha1:511d600842531160221e210a5293698eea2bba8c</id>
<content type='text'>
And remove the stale comment. This function does not send anything.
</content>
</entry>
<entry>
<title>Switch to SPDX identifiers.</title>
<updated>2026-03-17T22:45:43Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-03-15T14:57:29Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=ea0cecf96e08c489fdcc94d046019f4ce46f58e2'/>
<id>urn:sha1:ea0cecf96e08c489fdcc94d046019f4ce46f58e2</id>
<content type='text'>
Generated with

	sed -i 's|Copyright.*Andre Noll.*|SPDX-License-Identifier: GPL-2.0 */|g' *.c *.h

followed by manually tweaking the result a bit. No license change intended.
</content>
</entry>
<entry>
<title>Remove support for audioc/audiod v1 protocol.</title>
<updated>2026-01-27T13:08:15Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-01-24T22:07:05Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=5f57f7b55b16ef00a4be5d748d1a6ae99b43ec7c'/>
<id>urn:sha1:5f57f7b55b16ef00a4be5d748d1a6ae99b43ec7c</id>
<content type='text'>
This breaks compatibility with v0.7, but also simplifies the code nicely.
</content>
</entry>
<entry>
<title>audioc sideband: Fix early error handling.</title>
<updated>2026-01-12T21:27:28Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-01-12T20:40:59Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=87ba17b3c75a5d979295eb05a8794c6f41bff533'/>
<id>urn:sha1:87ba17b3c75a5d979295eb05a8794c6f41bff533</id>
<content type='text'>
Both server and client handled the "permission denied" case (client UID
mismatch) incorrectly. This should fix it.
</content>
</entry>
<entry>
<title>Deprecate the audiod grab subcommand.</title>
<updated>2026-01-04T21:20:55Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-11-17T19:15:19Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=7216dda69097e73e9a7cc5ea420d3569734ccef1'/>
<id>urn:sha1:7216dda69097e73e9a7cc5ea420d3569734ccef1</id>
<content type='text'>
It has not proved to be very useful, and it adds quite a bit of complexity.
</content>
</entry>
<entry>
<title>Employ sideband API for audioc-audiod connections.</title>
<updated>2026-01-04T21:20:55Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-11-14T23:21:57Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=6a582184c35262f086ae4d29020d6000206f8901'/>
<id>urn:sha1:6a582184c35262f086ae4d29020d6000206f8901</id>
<content type='text'>
Currently, para_audioc writes the data it received over the local socket from
audiod to stdout. This include error messages, if any. Also, para_audioc
does not know whether the subcommand passed to para_audiod was successful,
and exits successfully even if the subcommand failed.

Thanks to the sideband API, para_client is much smarter in this regard. This
patch employs the existing API also for the connection between para_audioc and
para_audiod. Besides comment updates and the new sideband_log() helper, no
changes to the sideband API are necessary. The client code stays unmodified
as well. The new helper has three callers, two in audioc.c and one in
client_common.c.

Remove a pointless NULL check and a debug log message from dispatch_sbb()
of client_common.c while at it. The message was useful for testing but is
no longer needed.

The new code is backwards compatible, i.e., an old para_audioc can still
communicate with a new para_audiod and vice versa. Thus, we have to maintain
two "protocols" for the audioc-audiod communication, named v1 and v2 in the
code and in what follows.

For example, if audioc or audiod are unpatched (so that v1 is in use), then

	./para_audioc aaa &gt; /dev/null

prints nothing because with v1 the error message goes to stdout, and the
command exits successfully (exit code 0). If both sides support v2, the same
command prints

	audiod: errctx: aaa
	audiod: invalid subcommand
	main: audiod dispatch error

to stderr, then exits unsuccessfully (exit code 1).

Only the server reply is sideband-encoded. The way how command line arguments
are passed from audioc to audiod is also changed, though. Instead of
terminating the arguments with newlines, a v2 audioc prepends an additional
\0 byte to the argument list, and terminates each argument with \0 in the
same way the --print0 directive of GNU find(1) does.

An v1 audiod interprets the leading NUL as an empty command line and closes
the connection without sending any data. This can never happen with a v2
audiod because that always sends an empty sideband package to indicate
success/failure. So the v2 code of audioc.c retries with v1 in this case.

Conversely, a v1 client never sends an empty string, so a leading \0 identifies
a v2 client. Thus, the patched audiod only needs to check the first byte of
the received buffer to select the right "protocol" version.

The stat and grab subcommands need special treatment because these may stay
active after the command handler returns. Thus, the command handler must not
send an EXIT_SUCCESS sideband packet in this case. Moreover, the protocol
version needs to be communicated with the status/grab client tasks. This is
done by adding a flag to the existing flags bitmask of struct stat_client
and struct grab_client.

After v0.8.0 has been released, the compatibility code can be dropped.
</content>
</entry>
<entry>
<title>Use iovecs for unix socket credentials.</title>
<updated>2026-01-04T21:20:55Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-11-10T20:57:40Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=983a349d925ce7d1b6471c3b63770c76b970ada4'/>
<id>urn:sha1:983a349d925ce7d1b6471c3b63770c76b970ada4</id>
<content type='text'>
This is the right thing to do, since {recv,send}_cred_buffer() need to set
up an iovec structure.
</content>
</entry>
<entry>
<title>Make send_cred_buffer() and recv_cred_buffer() local.</title>
<updated>2026-01-04T21:20:54Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2025-11-03T17:43:29Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=3df3c8880f06dc4058a4c58c291892835ca8eb06'/>
<id>urn:sha1:3df3c8880f06dc4058a4c58c291892835ca8eb06</id>
<content type='text'>
Only para_audioc needs the former, and only para_audiod needs the latter.
With this patch in place, both functions can be static and the other
executables which link in net.o don't get bloated with unnecessary code.
</content>
</entry>
</feed>
