return NULL;
}
+
+struct connection *lu_get_connection(void)
+{
+ return lu_status ? lu_status->conn : NULL;
+}
+
+#else
+struct connection *lu_get_connection(void)
+{
+ return NULL;
+}
#endif
struct cmd_s {
ret = dump_state_global(fp);
if (ret)
goto out;
- ret = dump_state_connections(fp, conn);
+ ret = dump_state_connections(fp);
if (ret)
goto out;
ret = dump_state_special_nodes(fp);
int do_control(struct connection *conn, struct buffered_data *in);
void lu_read_state(void);
+
+struct connection *lu_get_connection(void);
/* Called twice: first with fp == NULL to get length, then for writing data. */
const char *dump_state_buffered_data(FILE *fp, const struct connection *c,
- const struct connection *conn,
struct xs_state_connection *sc)
{
unsigned int len = 0, used;
struct buffered_data *out, *in = c->in;
bool partial = true;
- if (in && c != conn) {
+ if (in && c != lu_get_connection()) {
len = in->inhdr ? in->used : sizeof(in->hdr);
if (fp && fwrite(&in->hdr, len, 1, fp) != 1)
return "Dump read data error";
}
/* Add "OK" for live-update command. */
- if (c == conn) {
- struct xsd_sockmsg msg = conn->in->hdr.msg;
+ if (c == lu_get_connection()) {
+ struct xsd_sockmsg msg = c->in->hdr.msg;
msg.len = sizeof("OK");
if (fp && fwrite(&msg, sizeof(msg), 1, fp) != 1)
const char *dump_state_global(FILE *fp);
const char *dump_state_buffered_data(FILE *fp, const struct connection *c,
- const struct connection *conn,
struct xs_state_connection *sc);
const char *dump_state_nodes(FILE *fp, const void *ctx);
const char *dump_state_node_perms(FILE *fp, const struct xs_permissions *perms,
wrl_apply_debit_actual(conn->domain);
}
-const char *dump_state_connections(FILE *fp, struct connection *conn)
+const char *dump_state_connections(FILE *fp)
{
const char *ret = NULL;
unsigned int conn_id = 1;
sc.spec.socket_fd = c->fd;
}
- ret = dump_state_buffered_data(NULL, c, conn, &sc);
+ ret = dump_state_buffered_data(NULL, c, &sc);
if (ret)
return ret;
head.length += sc.data_in_len + sc.data_out_len;
if (fwrite(&sc, offsetof(struct xs_state_connection, data),
1, fp) != 1)
return "Dump connection state error";
- ret = dump_state_buffered_data(fp, c, conn, NULL);
+ ret = dump_state_buffered_data(fp, c, NULL);
if (ret)
return ret;
ret = dump_state_align(fp);
void wrl_apply_debit_direct(struct connection *conn);
void wrl_apply_debit_trans_commit(struct connection *conn);
-const char *dump_state_connections(FILE *fp, struct connection *conn);
+const char *dump_state_connections(FILE *fp);
const char *dump_state_special_nodes(FILE *fp);
void read_state_connection(const void *ctx, const void *state);