projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ovsdb-tool: Make show-log command offer more verbose output.
[openvswitch]
/
lib
/
jsonrpc.c
diff --git
a/lib/jsonrpc.c
b/lib/jsonrpc.c
index f42035e80f5884e7cf25aeca0a730dea391f4c27..f648f6b162af5f4aef1361c066786f0c6c5ea292 100644
(file)
--- a/
lib/jsonrpc.c
+++ b/
lib/jsonrpc.c
@@
-278,12
+278,14
@@
jsonrpc_send_block(struct jsonrpc *rpc, struct jsonrpc_msg *msg)
return error;
}
return error;
}
-
while (!queue_is_empty(&rpc->output) && !rpc->status
) {
+
for (;;
) {
jsonrpc_run(rpc);
jsonrpc_run(rpc);
+ if (queue_is_empty(&rpc->output) || rpc->status) {
+ return rpc->status;
+ }
jsonrpc_wait(rpc);
poll_block();
}
jsonrpc_wait(rpc);
poll_block();
}
- return rpc->status;
}
int
}
int
@@
-686,7
+688,6
@@
jsonrpc_session_close(struct jsonrpc_session *s)
static void
jsonrpc_session_disconnect(struct jsonrpc_session *s)
{
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);
if (s->rpc) {
jsonrpc_error(s->rpc, EOF);
jsonrpc_close(s->rpc);
@@
-723,6
+724,7
@@
jsonrpc_session_run(struct jsonrpc_session *s)
jsonrpc_run(s->rpc);
error = jsonrpc_get_status(s->rpc);
if (error) {
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) {
jsonrpc_session_disconnect(s);
}
} else if (s->stream) {
@@
-747,6
+749,7
@@
jsonrpc_session_run(struct jsonrpc_session *s)
break;
case RECONNECT_DISCONNECT:
break;
case RECONNECT_DISCONNECT:
+ reconnect_disconnected(s->reconnect, time_msec(), 0);
jsonrpc_session_disconnect(s);
break;
jsonrpc_session_disconnect(s);
break;