From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59653) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dmZSF-0008Ft-K1 for qemu-devel@nongnu.org; Tue, 29 Aug 2017 01:52:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dmZSE-0006pR-KV for qemu-devel@nongnu.org; Tue, 29 Aug 2017 01:52:51 -0400 Received: from mail-qk0-x22d.google.com ([2607:f8b0:400d:c09::22d]:36760) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dmZSE-0006pC-Fq for qemu-devel@nongnu.org; Tue, 29 Aug 2017 01:52:50 -0400 Received: by mail-qk0-x22d.google.com with SMTP id o63so11082183qkb.3 for ; Mon, 28 Aug 2017 22:52:49 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: References: From: Sam Date: Tue, 29 Aug 2017 13:52:47 +0800 Message-ID: Content-Type: text/plain; charset="UTF-8" Subject: Re: [Qemu-devel] [QGA] Bug of qga? List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org I could repeat this several times, I think it's mis-order of qmp in qga socket. 2017-08-25 11:09 GMT+08:00 Sam : > Also I found: > > when I use `socat` to take a qga socket, then I use `socat` to communicate > it will got error. > But also SOMETIMES, I will not got error and will communicate OK. > > If one user take qga socket, another user should got error, is it? But why > sometimes, the communicate is OK? > > 2017-08-25 10:11 GMT+08:00 Sam : > >> Hi all, >> >> I'm using qga to send `route -n` and `ping` command to guest. But I found >> SOMETIMES, the second `ping` command's result is the same as `route -n` >> command. >> >> So I guess is there some cache mechanism of qga command result? So when I >> send the second command, and receive from qga socket, I receive the result >> of first command. >> >> Or is this bug happened because of I use async mechanism of python code >> to operate qga socket? >> >> This is the python code I use to operate on this qga socket: >> >> try: >>> sock=socket(AF_UNIX, SOCK_STREAM) >>> sock.settimeout(20) >>> sock.connect(vm_qga_sockpath) >>> sock.send(cmd) >>> while True: >>> res = sock.recv(1024) >>> if len(res): >>> break >>> except Exception as e: >>> res = -1 >>> finally: >>> sock.settimeout(None) >>> sock.close() >> >> >