Skip to content

Commit

Permalink
Merge remote-tracking branch 'remotes/berrange/tags/qio-next-pull-req…
Browse files Browse the repository at this point in the history
…uest' into staging

Merge qio 2018-06-28 v3

Misc bug fixes for sockets channels

# gpg: Signature made Thu 28 Jun 2018 13:37:35 BST
# 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:
  Delete AF_UNIX socket after close
  socket: don't free msgfds if error equals EAGAIN

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
  • Loading branch information
pm215 committed Jun 28, 2018
2 parents 7106a87 + d66f78e commit 609ef9f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 3 deletions.
4 changes: 2 additions & 2 deletions chardev/char-socket.c
Expand Up @@ -134,8 +134,8 @@ static int tcp_chr_write(Chardev *chr, const uint8_t *buf, int len)
s->write_msgfds,
s->write_msgfds_num);

/* free the written msgfds, no matter what */
if (s->write_msgfds_num) {
/* free the written msgfds in any cases other than errno==EAGAIN */
if (EAGAIN != errno && s->write_msgfds_num) {
g_free(s->write_msgfds);
s->write_msgfds = 0;
s->write_msgfds_num = 0;
Expand Down
18 changes: 17 additions & 1 deletion io/channel-socket.c
Expand Up @@ -685,8 +685,10 @@ qio_channel_socket_close(QIOChannel *ioc,
Error **errp)
{
QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
int rc = 0;

if (sioc->fd != -1) {
SocketAddress *addr = socket_local_address(sioc->fd, errp);
#ifdef WIN32
WSAEventSelect(sioc->fd, NULL, 0);
#endif
Expand All @@ -697,8 +699,22 @@ 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 0;
return rc;
}

static int
Expand Down

0 comments on commit 609ef9f

Please sign in to comment.