diff --git a/ceph/include/buffer.h b/ceph/include/buffer.h index c35f01e7106..933d41e72be 100644 --- a/ceph/include/buffer.h +++ b/ceph/include/buffer.h @@ -196,6 +196,7 @@ class bufferptr { // assignment operator bufferptr& operator=(const bufferptr& other) { + assert(0); // discard old discard_buffer(); diff --git a/ceph/include/bufferlist.h b/ceph/include/bufferlist.h index b726cb2db6b..94a1729bc24 100644 --- a/ceph/include/bufferlist.h +++ b/ceph/include/bufferlist.h @@ -32,18 +32,21 @@ class bufferlist { bdbout(1) << "bufferlist.cons " << this << endl; } bufferlist(bufferlist& bl) : _len(0) { - bdbout(1) << "bufferlist.cons " << this << endl; + bdbout(1) << "bufferlist.cons " << this << endl; // O(n) and stupid! _buffers = bl._buffers; _len = bl._len; } ~bufferlist() { bdbout(1) << "bufferlist.des " << this << endl; } - /* + bufferlist& operator=(bufferlist& bl) { - assert(0); // actually, this should be fine. + assert(0); // actually, this should be fine, just slow (O(n)) and stupid. + _buffers = bl._buffers; + _len = bl._len; + return *this; } - */ + // accessors list& buffers() { diff --git a/ceph/msg/TCPMessenger.cc b/ceph/msg/TCPMessenger.cc index f89412e60b9..4cfb3c5a1c0 100644 --- a/ceph/msg/TCPMessenger.cc +++ b/ceph/msg/TCPMessenger.cc @@ -349,7 +349,9 @@ int tcp_send(Message *m) m->reset_payload(); m->encode_payload(); msg_envelope_t *env = &m->get_envelope(); - bufferlist blist = m->get_payload(); + bufferlist blist; + blist.claim( m->get_payload() ); + #ifdef TCP_KEEP_CHUNKS env->nchunks = blist.buffers().size(); #else diff --git a/ceph/tcpsyn.cc b/ceph/tcpsyn.cc index 1b2281eaea9..c80e8f0e224 100644 --- a/ceph/tcpsyn.cc +++ b/ceph/tcpsyn.cc @@ -93,7 +93,7 @@ int main(int oargc, char **oargv) { int world = tcpmessenger_world(); //cerr << "horrible hack remove me" << endl; - //if (myrank == 0) g_conf.debug_filer = 15; + //if (myrank == 0) g_conf.debug = 10; if (myrank == 0)