This function cannot easily be reentrant because the inner call would
interrupt and corrupt the data being sent by the outer call.
Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Kyle Mestery <kmestery@cisco.com>
worker_request_func *request_cb,
worker_reply_func *reply_cb, void *aux)
{
+ static bool recursing = false;
struct worker_request rq;
struct iovec *all_iovs;
int error;
assert(worker_is_running());
+ assert(!recursing);
+ recursing = true;
rq.request_len = iovec_len(iovs, n_iovs);
rq.request_cb = request_cb;
VLOG_ABORT("send failed (%s)", strerror(error));
}
free(all_iovs);
+
+ recursing = false;
}
/* Closes the client socket, if any, so that worker_is_running() will return