From 744e9a87c582d687d5d20b61b7ee0835da421541 Mon Sep 17 00:00:00 2001 From: Bruce Richardson Date: Mon, 13 Sep 2021 11:51:36 +0100 Subject: [PATCH] usertools: fix handling EOF for telemetry input pipe To allow the script to take queries from input pipes e.g. "echo /ethdev/stats,0 | dpdk-telemetry.py", we need to handle the case of EOF correctly without crashing with an exception. Do this by using a try-except block around the input handling. Fixes: 6a2967c112a3 ("usertools: add new telemetry script") Cc: stable@dpdk.org Signed-off-by: Bruce Richardson Acked-by: Ciara Power --- usertools/dpdk-telemetry.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/usertools/dpdk-telemetry.py b/usertools/dpdk-telemetry.py index bdc617db18..7ebbb64fce 100755 --- a/usertools/dpdk-telemetry.py +++ b/usertools/dpdk-telemetry.py @@ -69,13 +69,17 @@ def handle_socket(path): CMDS = read_socket(sock, output_buf_len, False)["/"] # interactive prompt - text = input('--> ').strip() - while text != "quit": - if text.startswith('/'): - sock.send(text.encode()) - read_socket(sock, output_buf_len) + try: text = input('--> ').strip() - sock.close() + while text != "quit": + if text.startswith('/'): + sock.send(text.encode()) + read_socket(sock, output_buf_len) + text = input('--> ').strip() + except EOFError: + pass + finally: + sock.close() def readline_complete(text, state): -- 2.20.1