diff --git a/src/box/iproto.cc b/src/box/iproto.cc index ee3d189c13023a5de7aa8230a9249a236a11c59c..79867f03fa0907be3d245c27268b1280bb3004d5 100644 --- a/src/box/iproto.cc +++ b/src/box/iproto.cc @@ -654,16 +654,18 @@ tx_process_msg(struct cmsg *m) case IPROTO_UPDATE: case IPROTO_DELETE: case IPROTO_UPSERT: + { assert(msg->request.type == msg->header.type); - struct iproto_port port; - iproto_port_init(&port, out, msg->header.sync); struct tuple *tuple; if (box_process1(&msg->request, &tuple) < 0) throw (Exception *) box_error_last(); + struct obuf_svp svp = iproto_prepare_select(out); if (tuple) - port_add_tuple(&port.base, tuple); - port_eof(&port.base); + tuple_to_obuf(tuple, out); + iproto_reply_select(out, &svp, msg->header.sync, + tuple != 0); break; + } case IPROTO_CALL: assert(msg->request.type == msg->header.type); rmean_collect(rmean_box, msg->request.type, 1);