Tell the host application when we no longer need virgin body
so that the host application can get rid of allocated resources and
possibly terminate the transaction.

Index: src/adapter_modifying.cc
===================================================================
--- src/adapter_modifying.cc	(revision 12841)
+++ src/adapter_modifying.cc	(working copy)
@@ -290,21 +290,21 @@
 }
 
 void Adapter::Xaction::abContentShift(size_type size) {
 	Must(sendingAb == opOn || sendingAb == opComplete);
 	buffer.erase(0, size);
 }
 
 void Adapter::Xaction::noteVbContentDone(bool atEnd)
 {
 	Must(receivingVb == opOn);
-	receivingVb = opComplete;
+	stopVb();
 	if (sendingAb == opOn) {
 		hostx->noteAbContentDone(atEnd);
 		sendingAb = opComplete;
 	}
 }
 
 void Adapter::Xaction::noteVbContentAvailable()
 {
 	Must(receivingVb == opOn);
 
@@ -333,21 +333,21 @@
 }
 
 bool Adapter::Xaction::callable() const {
 	return hostx != 0; // no point to call us if we are done
 }
 
 // tells the host that we are not interested in [more] vb
 // if the host does not know that already
 void Adapter::Xaction::stopVb() {
 	if (receivingVb == opOn) {
-		hostx->vbStopMaking();
+		hostx->vbStopMaking(); // we will not call vbContent() any more
 		receivingVb = opComplete;
 	} else {
 		// we already got the entire body or refused it earlier
 		Must(receivingVb != opUndecided);
 	}
 }
 
 // this method is used to make the last call to hostx transaction
 // last call may delete adapter transaction if the host no longer needs it
 // TODO: replace with hostx-independent "done" method
Index: src/adapter_passthru.cc
===================================================================
--- src/adapter_passthru.cc	(revision 12840)
+++ src/adapter_passthru.cc	(working copy)
@@ -207,20 +207,21 @@
 void Adapter::Xaction::abContentShift(size_type size)
 {
 	Must(sendingAb == opOn);
 	hostx->vbContentShift(size);
 }
 
 
 void Adapter::Xaction::noteVbContentDone(bool atEnd)
 {
 	Must(receivingVb == opOn);
+	hostx->vbStopMaking(); // we will not call vbContent() any more
 	receivingVb = opComplete;
 	hostx->noteAbContentDone(atEnd);
 }
 
 void Adapter::Xaction::noteVbContentAvailable()
 {
 	Must(receivingVb == opOn);
 	if (sendingAb == opOn)
 		hostx->noteAbContentAvailable();
 }

