Index: src/client_side.h =================================================================== --- src/client_side.h (revision 167) +++ src/client_side.h (working copy) @@ -273,6 +273,7 @@ BodyPipe::Pointer expectRequestBody(int64_t size); virtual void noteMoreBodySpaceAvailable(BodyPipe::Pointer); + virtual void forwardToBitbucket(void); virtual void noteBodyConsumerAborted(BodyPipe::Pointer); bool handleReadData(char *buf, size_t size); Index: src/client_side.cc =================================================================== --- src/client_side.cc (revision 167) +++ src/client_side.cc (working copy) @@ -3055,6 +3055,14 @@ } void +ConnStateData::forwardToBitbucket(void) +{ + // request reader may get stuck waiting for space if nobody consumes body + if (bodyPipe != NULL) + bodyPipe->enableAutoConsumption(); +} + +void ConnStateData::noteBodyConsumerAborted(BodyPipe::Pointer ) { // request reader may get stuck waiting for space if nobody consumes body Index: src/client_side_request.cc =================================================================== --- src/client_side_request.cc (revision 167) +++ src/client_side_request.cc (working copy) @@ -829,6 +829,7 @@ NULL); #endif http->getConn()->flags.readMore = true; // resume any pipeline reads. + http->getConn()->forwardToBitbucket(); node = (clientStreamNode *)http->client_stream.tail->data; clientStreamRead(node, http, node->readBuffer); return;