/*
- * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
{
struct ofpbuf *buf;
struct json *json;
+ struct ds ds = DS_EMPTY_INITIALIZER;
size_t length;
- char *s;
if (rpc->status) {
jsonrpc_msg_destroy(msg);
jsonrpc_log_msg(rpc, "send", msg);
json = jsonrpc_msg_to_json(msg);
- s = json_to_string(json, 0);
- length = strlen(s);
+ json_to_ds(json, 0, &ds);
+ length = ds.length;
json_destroy(json);
buf = xmalloc(sizeof *buf);
- ofpbuf_use(buf, s, length);
- buf->size = length;
+ ofpbuf_use_ds(buf, &ds);
list_push_back(&rpc->output, &buf->list_node);
rpc->output_count++;
rpc->backlog += length;
const struct byteq *q = &rpc->input;
if (q->head <= q->size) {
stream_report_content(q->buffer, q->head, STREAM_JSONRPC,
- THIS_MODULE, rpc->name);
+ &this_module, rpc->name);
}
return rpc->status;
}
reconnect_connect_failed(s->reconnect, time_msec(), error);
stream_close(s->stream);
s->stream = NULL;
+ s->last_error = error;
}
}