X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fovsdb-idl.c;h=b264591dac537da204eb6517eb989240510ca1d1;hb=c7981f8ca285147fa315fde62d06107d54f4acac;hp=448f9c94424e35030f9d4794c7133c476db831b7;hpb=ef73f86cd4f7ec0cd2d3f9526167a0d0f6be4f63;p=openvswitch diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c index 448f9c94..b264591d 100644 --- a/lib/ovsdb-idl.c +++ b/lib/ovsdb-idl.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2009, 2010 Nicira Networks. +/* Copyright (c) 2009, 2010, 2011 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -282,7 +282,7 @@ ovsdb_idl_run(struct ovsdb_idl *idl) assert(!idl->txn); jsonrpc_session_run(idl->session); for (i = 0; jsonrpc_session_is_connected(idl->session) && i < 50; i++) { - struct jsonrpc_msg *msg, *reply; + struct jsonrpc_msg *msg; unsigned int seqno; seqno = jsonrpc_session_get_seqno(idl->session); @@ -298,7 +298,6 @@ ovsdb_idl_run(struct ovsdb_idl *idl) break; } - reply = NULL; if (msg->type == JSONRPC_NOTIFY && !strcmp(msg->method, "update") && msg->params->type == JSON_ARRAY @@ -313,8 +312,7 @@ ovsdb_idl_run(struct ovsdb_idl *idl) idl->monitor_request_id = NULL; ovsdb_idl_clear(idl); ovsdb_idl_parse_update(idl, msg->result); - } else if (msg->type == JSONRPC_REPLY - && msg->id && msg->id->type == JSON_STRING + } else if (msg->type == JSONRPC_REPLY && msg->id->type == JSON_STRING && !strcmp(msg->id->u.string, "echo")) { /* It's a reply to our echo request. Ignore it. */ } else if ((msg->type == JSONRPC_ERROR @@ -329,9 +327,6 @@ ovsdb_idl_run(struct ovsdb_idl *idl) jsonrpc_session_get_name(idl->session), jsonrpc_msg_type_to_string(msg->type)); } - if (reply) { - jsonrpc_session_send(idl->session, reply); - } jsonrpc_msg_destroy(msg); } @@ -1693,6 +1688,8 @@ ovsdb_idl_txn_verify(const struct ovsdb_idl_row *row_, size_t column_idx = column - class->columns; assert(row->new != NULL); + assert(row->old == NULL || + row->table->modes[column_idx] & OVSDB_IDL_MONITOR); if (!row->old || (row->written && bitmap_is_set(row->written, column_idx))) { return;