summaryrefslogtreecommitdiffstats
path: root/discover
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2013-05-16 16:40:39 +0800
committerJeremy Kerr <jk@ozlabs.org>2013-05-21 15:29:43 +0800
commit57ee6ff66071deb4e03f414ed00433061b8bef93 (patch)
tree4d27d6ebf006ba0c712d084355992b2c8a697317 /discover
parent7ff0c4b65517737a4aca2c1df7325a586bbd2ebf (diff)
downloadtalos-petitboot-57ee6ff66071deb4e03f414ed00433061b8bef93.tar.gz
talos-petitboot-57ee6ff66071deb4e03f414ed00433061b8bef93.zip
discover: fix error handling from failed client writes
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover')
-rw-r--r--discover/discover-server.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/discover/discover-server.c b/discover/discover-server.c
index 2509457..4ba91ee 100644
--- a/discover/discover-server.c
+++ b/discover/discover-server.c
@@ -203,8 +203,8 @@ static int discover_server_process_message(void *arg)
static int discover_server_process_connection(void *arg)
{
struct discover_server *server = arg;
+ int fd, rc, i, n_devices;
struct client *client;
- int fd, i, n_devices;
/* accept the incoming connection */
fd = accept(server->socket, NULL, 0);
@@ -229,11 +229,16 @@ static int discover_server_process_connection(void *arg)
const struct discover_device *device;
device = device_handler_get_device(server->device_handler, i);
- write_device_add_message(server, client, device->device);
+ rc = write_device_add_message(server, client, device->device);
+ if (rc)
+ return 0;
- list_for_each_entry(&device->boot_options, opt, list)
- write_boot_option_add_message(server, client,
+ list_for_each_entry(&device->boot_options, opt, list) {
+ rc = write_boot_option_add_message(server, client,
opt->option);
+ if (rc)
+ return 0;
+ }
}
client->waiter = waiter_register(server->waitset, client->fd, WAIT_IN,
OpenPOWER on IntegriCloud