diff --git a/src/Socket2.cpp b/src/Socket2.cpp
index 35959144685a74062f5eb2c8a696b9ca29867df1..6d6e8a85bf58fdc4db386a633675b3466eb65059 100644
--- a/src/Socket2.cpp
+++ b/src/Socket2.cpp
@@ -610,14 +610,18 @@ Tango::DevVarCharArray *Socket2::read_until(const Tango::DevVarCharArray *argin)
 
 	char delim = (*argin)[0];
 	size_t pos = 0, dsize;
+	bool found = false;
 
 	do {
 		dsize = data.size();
 		for (; pos < dsize; ++pos) {
 			if (memcmp(&data[pos], &delim, 1) == 0)	{
+				found = true;
 				break;
 			}
 		}
+		if (found)
+			break;
 		_read(dsize + 1);
 	} while (true);