Index: /sample/testdht/DHTTest.cpp
===================================================================
--- /sample/testdht/DHTTest.cpp	(revision 6786)
+++ /sample/testdht/DHTTest.cpp	(revision 6796)
@@ -190,5 +190,11 @@
 
 void DHTTest::onKeyValue( const Data& key, const vector<Data>& value ) {
-	logging_info( "----> Received DHT answer for '" << dtos(key) << "'.");
+	if (value.size() == 0) {
+		logging_info( "Received DHT answer for '" << dtos(key)
+				<< "': no values stored! ");
+		return;
+	}
+	logging_info( "Received DHT answer for '" << dtos(key) << "' "
+			<< " with value='" << dtos(value.front()) << "'.") ;
 	// TODO: implement
 }
Index: /source/ariba/overlay/BaseOverlay.cpp
===================================================================
--- /source/ariba/overlay/BaseOverlay.cpp	(revision 6786)
+++ /source/ariba/overlay/BaseOverlay.cpp	(revision 6796)
@@ -66,4 +66,10 @@
 	}
 
+	ValueEntry( const ValueEntry& value ) :
+		ttl(value.ttl), last_update(value.last_update),
+		last_change(value.last_change), value(value.value.clone()) {
+
+	}
+
 	~ValueEntry()  {
 		value.release();
Index: /source/ariba/overlay/messages/DHTMessage.cpp
===================================================================
--- /source/ariba/overlay/messages/DHTMessage.cpp	(revision 6786)
+++ /source/ariba/overlay/messages/DHTMessage.cpp	(revision 6796)
@@ -29,4 +29,5 @@
 
 DHTMessage::DHTMessage( const Data& key, const vector<Data>& values ) {
+	this->key = key.clone();
 	BOOST_FOREACH(const Data value, values )
 			this->values.push_back( value.clone() );
Index: /source/ariba/overlay/messages/DHTMessage.h
===================================================================
--- /source/ariba/overlay/messages/DHTMessage.h	(revision 6786)
+++ /source/ariba/overlay/messages/DHTMessage.h	(revision 6796)
@@ -62,14 +62,9 @@
 	X && ttl;
 
-//	std::cout << "1" << std::endl;
-
 	// key serialization
 	uint16_t key_length = key.isUnspecified() ? 0 : key.getLength();
 	X && key_length;
 	if (X.isDeserializer()) key.setLength( key_length );
-
-//	std::cout << "2 - " << key_length << std::endl;
 	X && this->key;
-//	std::cout << "2b" << std::endl;
 
 	// store number of values
@@ -77,17 +72,12 @@
 	X && num_values;
 
-//	std::cout << "3" << std::endl;
-
 	// value serialization
 	for (size_t i=0; i<num_values; i++) {
-//		std::cout << "4" << std::endl;
 		Data value;
 		if (X.isSerializer()) value = values[i];
 		uint16_t value_length = value.isUnspecified() ? 0 : value.getLength();
 		X && value_length;
-//		std::cout << "5" << std::endl;
 		if (X.isDeserializer()) value.setLength( value_length );
 		X && value;
-//		std::cout << "6" << std::endl;
 		if (X.isDeserializer()) values.push_back(value);
 	}
