mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-07 13:30:09 -05:00
properties: log a warning if the property type differs
If we try to fetch a property as some specific type and the parsing fails, log a warning. This should catch any client bugs where the properties are set wrongly.
This commit is contained in:
parent
32fb369b66
commit
eabd00e012
2 changed files with 30 additions and 4 deletions
|
|
@ -66,6 +66,7 @@ PW_LOG_TOPIC(log_metadata, "pw.metadata");
|
||||||
PW_LOG_TOPIC(log_module, "pw.module");
|
PW_LOG_TOPIC(log_module, "pw.module");
|
||||||
PW_LOG_TOPIC(log_node, "pw.node");
|
PW_LOG_TOPIC(log_node, "pw.node");
|
||||||
PW_LOG_TOPIC(log_port, "pw.port");
|
PW_LOG_TOPIC(log_port, "pw.port");
|
||||||
|
PW_LOG_TOPIC(log_properties, "pw.props");
|
||||||
PW_LOG_TOPIC(log_protocol, "pw.protocol");
|
PW_LOG_TOPIC(log_protocol, "pw.protocol");
|
||||||
PW_LOG_TOPIC(log_proxy, "pw.proxy");
|
PW_LOG_TOPIC(log_proxy, "pw.proxy");
|
||||||
PW_LOG_TOPIC(log_resource, "pw.resource");
|
PW_LOG_TOPIC(log_resource, "pw.resource");
|
||||||
|
|
@ -445,6 +446,7 @@ pw_log_init(void)
|
||||||
PW_LOG_TOPIC_INIT(log_module);
|
PW_LOG_TOPIC_INIT(log_module);
|
||||||
PW_LOG_TOPIC_INIT(log_node);
|
PW_LOG_TOPIC_INIT(log_node);
|
||||||
PW_LOG_TOPIC_INIT(log_port);
|
PW_LOG_TOPIC_INIT(log_port);
|
||||||
|
PW_LOG_TOPIC_INIT(log_properties);
|
||||||
PW_LOG_TOPIC_INIT(log_protocol);
|
PW_LOG_TOPIC_INIT(log_protocol);
|
||||||
PW_LOG_TOPIC_INIT(log_proxy);
|
PW_LOG_TOPIC_INIT(log_proxy);
|
||||||
PW_LOG_TOPIC_INIT(log_resource);
|
PW_LOG_TOPIC_INIT(log_resource);
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,13 @@
|
||||||
#include <spa/utils/string.h>
|
#include <spa/utils/string.h>
|
||||||
|
|
||||||
#include "pipewire/array.h"
|
#include "pipewire/array.h"
|
||||||
|
#include "pipewire/log.h"
|
||||||
#include "pipewire/utils.h"
|
#include "pipewire/utils.h"
|
||||||
#include "pipewire/properties.h"
|
#include "pipewire/properties.h"
|
||||||
|
|
||||||
|
PW_LOG_TOPIC_EXTERN(log_properties);
|
||||||
|
#define PW_LOG_TOPIC_DEFAULT log_properties
|
||||||
|
|
||||||
/** \cond */
|
/** \cond */
|
||||||
struct properties {
|
struct properties {
|
||||||
struct pw_properties this;
|
struct pw_properties this;
|
||||||
|
|
@ -510,11 +514,16 @@ int pw_properties_fetch_uint32(const struct pw_properties *properties, const cha
|
||||||
uint32_t *value)
|
uint32_t *value)
|
||||||
{
|
{
|
||||||
const char *str = pw_properties_get(properties, key);
|
const char *str = pw_properties_get(properties, key);
|
||||||
|
bool success;
|
||||||
|
|
||||||
if (!str)
|
if (!str)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
return spa_atou32(str, value, 0) ? 0 : -EINVAL;
|
success = spa_atou32(str, value, 0);
|
||||||
|
if (SPA_UNLIKELY(!success))
|
||||||
|
pw_log_warn("Failed to parse \"%s\"=\"%s\" as int32", key, str);
|
||||||
|
|
||||||
|
return success ? 0 : -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Fetch a property as int32_t
|
/** Fetch a property as int32_t
|
||||||
|
|
@ -532,11 +541,16 @@ int pw_properties_fetch_int32(const struct pw_properties *properties, const char
|
||||||
int32_t *value)
|
int32_t *value)
|
||||||
{
|
{
|
||||||
const char *str = pw_properties_get(properties, key);
|
const char *str = pw_properties_get(properties, key);
|
||||||
|
bool success;
|
||||||
|
|
||||||
if (!str)
|
if (!str)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
return spa_atoi32(str, value, 0) ? 0 : -EINVAL;
|
success = spa_atoi32(str, value, 0);
|
||||||
|
if (SPA_UNLIKELY(!success))
|
||||||
|
pw_log_warn("Failed to parse \"%s\"=\"%s\" as int32", key, str);
|
||||||
|
|
||||||
|
return success ? 0 : -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Fetch a property as uint64_t.
|
/** Fetch a property as uint64_t.
|
||||||
|
|
@ -554,11 +568,16 @@ int pw_properties_fetch_uint64(const struct pw_properties *properties, const cha
|
||||||
uint64_t *value)
|
uint64_t *value)
|
||||||
{
|
{
|
||||||
const char *str = pw_properties_get(properties, key);
|
const char *str = pw_properties_get(properties, key);
|
||||||
|
bool success;
|
||||||
|
|
||||||
if (!str)
|
if (!str)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
return spa_atou64(str, value, 0) ? 0 : -EINVAL;
|
success = spa_atou64(str, value, 0);
|
||||||
|
if (SPA_UNLIKELY(!success))
|
||||||
|
pw_log_warn("Failed to parse \"%s\"=\"%s\" as uint64", key, str);
|
||||||
|
|
||||||
|
return success ? 0 : -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Fetch a property as int64_t
|
/** Fetch a property as int64_t
|
||||||
|
|
@ -576,11 +595,16 @@ int pw_properties_fetch_int64(const struct pw_properties *properties, const char
|
||||||
int64_t *value)
|
int64_t *value)
|
||||||
{
|
{
|
||||||
const char *str = pw_properties_get(properties, key);
|
const char *str = pw_properties_get(properties, key);
|
||||||
|
bool success;
|
||||||
|
|
||||||
if (!str)
|
if (!str)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
return spa_atoi64(str, value, 0) ? 0 : -EINVAL;
|
success = spa_atoi64(str, value, 0);
|
||||||
|
if (SPA_UNLIKELY(!success))
|
||||||
|
pw_log_warn("Failed to parse \"%s\"=\"%s\" as int64", key, str);
|
||||||
|
|
||||||
|
return success ? 0 : -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Fetch a property as boolean value
|
/** Fetch a property as boolean value
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue