return error;
}
- while (!queue_is_empty(&rpc->output) && !rpc->status) {
+ for (;;) {
jsonrpc_run(rpc);
+ if (queue_is_empty(&rpc->output) || rpc->status) {
+ return rpc->status;
+ }
jsonrpc_wait(rpc);
poll_block();
}
- return rpc->status;
}
int
static void
jsonrpc_session_disconnect(struct jsonrpc_session *s)
{
- reconnect_disconnected(s->reconnect, time_msec(), 0);
if (s->rpc) {
jsonrpc_error(s->rpc, EOF);
jsonrpc_close(s->rpc);
jsonrpc_run(s->rpc);
error = jsonrpc_get_status(s->rpc);
if (error) {
+ reconnect_disconnected(s->reconnect, time_msec(), 0);
jsonrpc_session_disconnect(s);
}
} else if (s->stream) {
break;
case RECONNECT_DISCONNECT:
+ reconnect_disconnected(s->reconnect, time_msec(), 0);
jsonrpc_session_disconnect(s);
break;