mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
connection: do version check only once
This commit is contained in:
parent
0ef41252bd
commit
21bda3102b
1 changed files with 7 additions and 4 deletions
|
|
@ -45,6 +45,7 @@
|
||||||
#define MAX_FDS 1024
|
#define MAX_FDS 1024
|
||||||
#define MAX_FDS_MSG 28
|
#define MAX_FDS_MSG 28
|
||||||
|
|
||||||
|
#define HDR_SIZE_V0 8
|
||||||
#define HDR_SIZE 16
|
#define HDR_SIZE 16
|
||||||
|
|
||||||
static bool debug_messages = 0;
|
static bool debug_messages = 0;
|
||||||
|
|
@ -71,6 +72,7 @@ struct impl {
|
||||||
|
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
size_t hdr_size;
|
size_t hdr_size;
|
||||||
|
unsigned int checked:1;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \endcond */
|
/** \endcond */
|
||||||
|
|
@ -317,20 +319,20 @@ static int prepare_packet(struct pw_protocol_native_connection *conn, struct buf
|
||||||
buf->msg.opcode = p[1] >> 24;
|
buf->msg.opcode = p[1] >> 24;
|
||||||
len = p[1] & 0xffffff;
|
len = p[1] & 0xffffff;
|
||||||
|
|
||||||
if (buf->msg.id == 0 && buf->msg.opcode == 1) {
|
if (!impl->checked) {
|
||||||
if (p[3] >= 4) {
|
if (p[3] >= 4) {
|
||||||
pw_log_warn("old version detected");
|
pw_log_warn("old version detected");
|
||||||
impl->version = 0;
|
impl->version = 0;
|
||||||
impl->hdr_size = 8;
|
impl->hdr_size = HDR_SIZE_V0;
|
||||||
} else {
|
} else {
|
||||||
impl->version = 3;
|
impl->version = 3;
|
||||||
impl->hdr_size = 16;
|
impl->hdr_size = HDR_SIZE;
|
||||||
}
|
}
|
||||||
spa_hook_list_call(&conn->listener_list,
|
spa_hook_list_call(&conn->listener_list,
|
||||||
struct pw_protocol_native_connection_events,
|
struct pw_protocol_native_connection_events,
|
||||||
start, 0, impl->version);
|
start, 0, impl->version);
|
||||||
|
impl->checked = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (impl->version >= 3) {
|
if (impl->version >= 3) {
|
||||||
buf->msg.seq = p[2];
|
buf->msg.seq = p[2];
|
||||||
buf->msg.n_fds = p[3];
|
buf->msg.n_fds = p[3];
|
||||||
|
|
@ -338,6 +340,7 @@ static int prepare_packet(struct pw_protocol_native_connection *conn, struct buf
|
||||||
buf->msg.seq = 0;
|
buf->msg.seq = 0;
|
||||||
buf->msg.n_fds = 0;
|
buf->msg.n_fds = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
data += impl->hdr_size;
|
data += impl->hdr_size;
|
||||||
size -= impl->hdr_size;
|
size -= impl->hdr_size;
|
||||||
buf->msg.fds = &buf->fds[buf->fds_offset];
|
buf->msg.fds = &buf->fds[buf->fds_offset];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue