qemurunner: Simplify binary data handling

I have concerns that bad timing of the flow of data from the logger
might corrupt the output due to the way binary strings are handled
in qemurunner.

This simplifies the code to do the same thing it did before but much
more safely.

(From OE-Core rev: 1e87283e92a2765bb5d54d17138b208bc395953b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2017-11-21 11:42:54 +00:00
parent 0c2ba71468
commit a9d7f098f9

View File

@@ -275,7 +275,7 @@ class QemuRunner:
reachedlogin = False
stopread = False
qemusock = None
bootlog = ''
bootlog = b''
data = b''
while time.time() < endtime and not stopread:
try:
@@ -292,17 +292,13 @@ class QemuRunner:
else:
data = data + sock.recv(1024)
if data:
try:
data = data.decode("utf-8", errors="surrogateescape")
bootlog += data
data = b''
if re.search(".* login:", bootlog):
self.server_socket = qemusock
stopread = True
reachedlogin = True
self.logger.debug("Reached login banner")
except UnicodeDecodeError:
continue
bootlog += data
data = b''
if b' login:' in bootlog:
self.server_socket = qemusock
stopread = True
reachedlogin = True
self.logger.debug("Reached login banner")
else:
socklist.remove(sock)
sock.close()