diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2019-01-25 09:26:33 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2019-01-25 09:26:33 +0000 |
| commit | feff02089113839d233e40a9bd7134241de12d1d (patch) | |
| tree | e5ad08b42070e4360abac44966818dfca8cacecd /io/channel-socket.c | |
| parent | 341b7186e7bf0ed94fbf9b7303dfe2fdf3b71ea6 (diff) | |
| parent | 73564c407caedf992a1c688b5fea776a8b56ba2a (diff) | |
| download | focaccia-qemu-feff02089113839d233e40a9bd7134241de12d1d.tar.gz focaccia-qemu-feff02089113839d233e40a9bd7134241de12d1d.zip | |
Merge remote-tracking branch 'remotes/berrange/tags/qio-next-pull-request' into staging
Merge qio 2010/01/24 Fixes accidental deletion of VNC server UNIX listener socket # gpg: Signature made Thu 24 Jan 2019 12:24:43 GMT # gpg: using RSA key BE86EBB415104FDF # gpg: Good signature from "Daniel P. Berrange <dan@berrange.com>" # gpg: aka "Daniel P. Berrange <berrange@redhat.com>" # Primary key fingerprint: DAF3 A6FD B26B 6291 2D0E 8E3F BE86 EBB4 1510 4FDF * remotes/berrange/tags/qio-next-pull-request: io: ensure UNIX client doesn't unlink server socket Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'io/channel-socket.c')
| -rw-r--r-- | io/channel-socket.c | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/io/channel-socket.c b/io/channel-socket.c index b50e63a053..bc5f80e780 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -688,10 +688,13 @@ qio_channel_socket_close(QIOChannel *ioc, int rc = 0; if (sioc->fd != -1) { - SocketAddress *addr = socket_local_address(sioc->fd, errp); #ifdef WIN32 WSAEventSelect(sioc->fd, NULL, 0); #endif + if (qio_channel_has_feature(ioc, QIO_CHANNEL_FEATURE_LISTEN)) { + socket_listen_cleanup(sioc->fd, errp); + } + if (closesocket(sioc->fd) < 0) { sioc->fd = -1; error_setg_errno(errp, errno, @@ -699,20 +702,6 @@ qio_channel_socket_close(QIOChannel *ioc, return -1; } sioc->fd = -1; - - if (addr && addr->type == SOCKET_ADDRESS_TYPE_UNIX - && addr->u.q_unix.path) { - if (unlink(addr->u.q_unix.path) < 0 && errno != ENOENT) { - error_setg_errno(errp, errno, - "Failed to unlink socket %s", - addr->u.q_unix.path); - rc = -1; - } - } - - if (addr) { - qapi_free_SocketAddress(addr); - } } return rc; } |