[pulseaudio-discuss] [PATCH 2/2] context: add cookie loaders + setter
Tanu Kaskinen
tanu.kaskinen at linux.intel.com
Tue Aug 20 06:13:23 PDT 2013
On Tue, 2013-08-13 at 11:41 +0200, Alexander Couzens wrote:
> I'm not sure if these 3 seperate calls for cookie loading are better than creating a pa_context_get_conf() call and
> operating on it.
I think it's better to keep pa_client_conf as a private interface.
>
> Signed-off-by: Alexander Couzens <lynxis at fe80.eu>
> ---
> src/pulse/context.c | 15 +++++++++++++++
> src/pulse/context.h | 9 +++++++++
> 2 files changed, 24 insertions(+)
>
> diff --git a/src/pulse/context.c b/src/pulse/context.c
> index 1ba2672..654284e 100644
> --- a/src/pulse/context.c
> +++ b/src/pulse/context.c
> @@ -1448,3 +1448,18 @@ size_t pa_context_get_tile_size(pa_context *c, const pa_sample_spec *ss) {
> mbs = PA_ROUND_DOWN(pa_mempool_block_size_max(c->mempool), fs);
> return PA_MAX(mbs, fs);
> }
> +
> +int pa_context_set_cookie(pa_context *c, uint8_t *cookie, size_t cookie_size) {
The pointers should be checked with pa_assert(). And there should be
some sanity checks:
PA_CHECK_VALIDITY(c, !pa_detect_fork(), PA_ERR_FORKED);
PA_CHECK_VALIDITY(c, c->state == PA_CONTEXT_UNCONNECTED, PA_ERR_BADSTATE);
(The same goes for the other functions.)
> + if(cookie_size != PA_NATIVE_COOKIE_LENGTH)
Missing space after "if".
> + return -PA_ERR_INVALID;
> + memcpy(c->conf->cookie, cookie, cookie_size);
c->conf->cookie_valid should be set to true. Or actually, there should
be pa_client_conf_set_cookie() that sets the cookie_valid field -
modifying the pa_client_conf state should be done from client-conf.c
only.
> + return 0;
> +}
> +
> +int pa_context_load_cookie_from_hex(pa_context *c, const char *cookie_as_hex) {
> + return pa_client_conf_load_cookie_from_hex(c->conf, cookie_as_hex);
> +}
> +
> +int pa_context_load_cookie_file(pa_context *c, const char *cookie_file_path) {
> + return pa_client_conf_load_cookie_from_file(c->conf, cookie_file_path);
> +}
> diff --git a/src/pulse/context.h b/src/pulse/context.h
> index 6e615f6..20fa1ff 100644
> --- a/src/pulse/context.h
> +++ b/src/pulse/context.h
> @@ -280,6 +280,15 @@ void pa_context_rttime_restart(pa_context *c, pa_time_event *e, pa_usec_t usec);
> * pa_stream_get_sample_spec(ss)); \since 0.9.20 */
> size_t pa_context_get_tile_size(pa_context *c, const pa_sample_spec *ss);
>
> +/** Set the authentication cookie */
The documentation is missing a \since 5.0 tag, and explanation about
what the cookie size should be.
We need to expose the cookie size to clients somehow. A simple #define
should be good enough. The problem with a #define in the public API is
that it can't be changed without breaking compatibility, but I don't
think we can change the cookie size anyway without breaking
compatibility between old server and new libpulse or vice versa.
--
Tanu
More information about the pulseaudio-discuss
mailing list