From 6a9ac6cdf355b8adac03e1133acf3aba7da66c56 Mon Sep 17 00:00:00 2001 From: sageweil Date: Fri, 23 Nov 2007 23:40:21 +0000 Subject: [PATCH] tweak simplemessenger to tolerate zero-length bufferptrs (weird) git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@2114 29311d96-e01e-0410-9327-a35deaab8ce9 --- trunk/ceph/msg/SimpleMessenger.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/trunk/ceph/msg/SimpleMessenger.cc b/trunk/ceph/msg/SimpleMessenger.cc index 37fda99feadec..80a971746bce9 100644 --- a/trunk/ceph/msg/SimpleMessenger.cc +++ b/trunk/ceph/msg/SimpleMessenger.cc @@ -1432,6 +1432,9 @@ int Rank::Pipe::write_message(Message *m) while (left > 0) { int donow = MIN(left, (int)pb->length()-b_off); + if (donow == 0) { + dout(0) << "donow = " << donow << " left " << left << " pb->length " << pb->length() << " b_off " << b_off << dendl; + } assert(donow > 0); dout(30) << " bl_pos " << bl_pos << " b_off " << b_off << " leftinchunk " << left @@ -1458,10 +1461,11 @@ int Rank::Pipe::write_message(Message *m) assert(left >= 0); b_off += donow; bl_pos += donow; - if (b_off != (int)pb->length()) - break; - pb++; - b_off = 0; + if (left == 0) break; + while (b_off == (int)pb->length()) { + pb++; + b_off = 0; + } } assert(left == 0); -- 2.39.5