}
}
+/* Returns the number of bytes written, or -1 on error. On error, the caller
+ * is responsible for freeing the client. */
static ssize_t
levent_ctl_send(struct lldpd_one_client *client, int type, void *data, size_t len)
{
if (bufferevent_write(bev, &hdr, sizeof(struct hmsg_header)) == -1 ||
(len > 0 && bufferevent_write(bev, data, len) == -1)) {
log_warnx("event", "unable to create answer to client");
- levent_ctl_free_client(client);
return -1;
}
bufferevent_enable(bev, EV_WRITE);
}
}
- levent_ctl_send(client, NOTIFICATION, output, output_len);
+ if (levent_ctl_send(client, NOTIFICATION, output, output_len) == -1)
+ levent_ctl_free_client(client);
}
free(output);