summaryrefslogtreecommitdiffstats
path: root/server/red_worker.c
diff options
context:
space:
mode:
Diffstat (limited to 'server/red_worker.c')
-rw-r--r--server/red_worker.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/server/red_worker.c b/server/red_worker.c
index 3a0b16e0..ee372220 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -10459,6 +10459,7 @@ static void red_receive(RedChannel *channel)
uint8_t *data = (uint8_t *)(header+1);
size_t parsed_size;
uint8_t *parsed;
+ message_destructor_t parsed_free;
n = channel->recive_data.now - (uint8_t *)header;
if (n < sizeof(SpiceDataHeader) ||
@@ -10466,7 +10467,7 @@ static void red_receive(RedChannel *channel)
break;
}
parsed = channel->parser((void *)data, data + header->size, header->type,
- SPICE_VERSION_MINOR, &parsed_size);
+ SPICE_VERSION_MINOR, &parsed_size, &parsed_free);
if (parsed == NULL) {
red_printf("failed to parse message type %d", header->type);
@@ -10479,7 +10480,7 @@ static void red_receive(RedChannel *channel)
channel->disconnect(channel);
return;
}
- free(parsed);
+ parsed_free(parsed);
channel->recive_data.message = (SpiceDataHeader *)((uint8_t *)header +
sizeof(SpiceDataHeader) +
header->size);