Index: source/ariba/overlay/messages/DHTMessage.h
===================================================================
--- source/ariba/overlay/messages/DHTMessage.h	(revision 6266)
+++ source/ariba/overlay/messages/DHTMessage.h	(revision 6786)
@@ -62,9 +62,14 @@
 	X && ttl;
 
+//	std::cout << "1" << std::endl;
+
 	// key serialization
-	uint16_t key_length = key.getLength();
+	uint16_t key_length = key.isUnspecified() ? 0 : key.getLength();
 	X && key_length;
 	if (X.isDeserializer()) key.setLength( key_length );
-	X && key;
+
+//	std::cout << "2 - " << key_length << std::endl;
+	X && this->key;
+//	std::cout << "2b" << std::endl;
 
 	// store number of values
@@ -72,11 +77,17 @@
 	X && num_values;
 
+//	std::cout << "3" << std::endl;
+
 	// value serialization
 	for (size_t i=0; i<num_values; i++) {
-		Data value = values[i];
-		uint16_t value_length = value.getLength();
+//		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);
 	}
