Skip to content

Commit

Permalink
qemu: only set wait parameter for server mode socket based char device
Browse files Browse the repository at this point in the history
Now the `wait` is passed to qmp command, even at non-server mode. This
will cause qemu return this error:
'wait' option is incompatible with socket in client connect mode

Fixes: #205

Signed-off-by: bin liu <liubin0329@gmail.com>
  • Loading branch information
liubin committed Nov 18, 2021
1 parent e438cc5 commit f971801
Showing 1 changed file with 16 additions and 10 deletions.
26 changes: 16 additions & 10 deletions qemu/qmp.go
Expand Up @@ -1518,20 +1518,26 @@ func (q *QMP) ExecuteGetFD(ctx context.Context, fdname string, fd *os.File) erro
// id is an identifier for the device, path specifies the local path of the unix socket,
// wait is to block waiting for a client to connect, server specifies that the socket is a listening socket.
func (q *QMP) ExecuteCharDevUnixSocketAdd(ctx context.Context, id, path string, wait, server bool) error {
data := map[string]interface{}{
"server": server,
"addr": map[string]interface{}{
"type": "unix",
"data": map[string]interface{}{
"path": path,
},
},
}

// wait is only valid for server mode
if server {
data["wait"] = wait
}

args := map[string]interface{}{
"id": id,
"backend": map[string]interface{}{
"type": "socket",
"data": map[string]interface{}{
"wait": wait,
"server": server,
"addr": map[string]interface{}{
"type": "unix",
"data": map[string]interface{}{
"path": path,
},
},
},
"data": data,
},
}
return q.executeCommand(ctx, "chardev-add", args, nil)
Expand Down

0 comments on commit f971801

Please sign in to comment.