// read front
int front_len = current_header.front_len;
if (front_len) {
- bufferptr ptr = buffer::create(front_len);
- r = read_until(front_len, ptr.c_str());
+ if (!front.length()) {
+ bufferptr ptr = buffer::create(front_len);
+ front.push_back(ptr);
+ }
+ r = read_until(front_len, front.c_str());
if (r < 0) {
ldout(async_msgr->cct, 1) << __func__ << " read message front failed" << dendl;
goto fail;
break;
}
- front.push_back(ptr);
ldout(async_msgr->cct, 20) << __func__ << " got front " << front.length() << dendl;
}
state = STATE_OPEN_MESSAGE_READ_MIDDLE;
// read middle
int middle_len = current_header.middle_len;
if (middle_len) {
- bufferptr ptr = buffer::create(middle_len);
- r = read_until(middle_len, ptr.c_str());
+ if (!middle.length()) {
+ bufferptr ptr = buffer::create(middle_len);
+ middle.push_back(ptr);
+ }
+ r = read_until(middle_len, middle.c_str());
if (r < 0) {
ldout(async_msgr->cct, 1) << __func__ << " read message middle failed" << dendl;
goto fail;
} else if (r > 0) {
break;
}
- middle.push_back(ptr);
ldout(async_msgr->cct, 20) << __func__ << " got middle " << middle.length() << dendl;
}