summaryrefslogtreecommitdiffstats
path: root/discover/discover-server.c
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-03-08 17:04:21 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-04-16 11:41:43 +0800
commitb838cf777ed3d21b166f8daddd4b11fc75e07307 (patch)
tree198e3450af8561c3806bd82c30f2daa10566ef70 /discover/discover-server.c
parent80c072a44cb665495afe08ce37cbf4f2086d5529 (diff)
downloadtalos-petitboot-b838cf777ed3d21b166f8daddd4b11fc75e07307.tar.gz
talos-petitboot-b838cf777ed3d21b166f8daddd4b11fc75e07307.zip
pb-protocol: Don't allocate in deserialise functions
Curently, the protocol deserialise functions are allocating device and boot_command structures. This (implicitly) makes them responsible for initialisation of these structures too. Rather that making the protocol responsible for initialising the devices and boot commands, this change gives the deserialise functions an argument to an already-instanciated structure. This means that the creation is no longer implied by the deserialise. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover/discover-server.c')
-rw-r--r--discover/discover-server.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/discover/discover-server.c b/discover/discover-server.c
index 6c80372..9ec3382 100644
--- a/discover/discover-server.c
+++ b/discover/discover-server.c
@@ -132,6 +132,7 @@ static int discover_server_process_message(void *arg)
struct pb_protocol_message *message;
struct boot_command *boot_command;
struct client *client = arg;
+ int rc;
message = pb_protocol_read_message(client, client->fd);
@@ -143,8 +144,10 @@ static int discover_server_process_message(void *arg)
return 0;
}
- boot_command = pb_protocol_deserialise_boot_command(client, message);
- if (!boot_command) {
+ boot_command = talloc(client, struct boot_command);
+
+ rc = pb_protocol_deserialise_boot_command(boot_command, message);
+ if (rc) {
pb_log("%s: no boot command?", __func__);
return 0;
}
OpenPOWER on IntegriCloud