On Wed, Feb 03, 2021 at 09:21:32AM +0100, Jürgen Groß wrote:
> [...]
> This shouldn't happen in case we are closing the socket actively.
>
> In the end we should just do a talloc_free(conn) in
> ignore_connection() if it is a socket based one. This should revert
> the critical modification of the XSA-115 fixes for sockets while
> keeping the desired effect for domain connections.
Hello
here's an updated patch which works for me. Does anyone see a problem
with it ? If not I will submit it for commit.
--
Manuel Bouyer <[email protected]>
NetBSD: 26 ans d'experience feront toujours la difference
--
--- xenstored_core.c.orig 2021-02-02 18:06:33.389316841 +0100
+++ xenstored_core.c 2021-02-03 12:46:17.204376338 +0100
@@ -397,9 +397,12 @@
!list_empty(&conn->out_list)))
*ptimeout = 0;
} else {
- short events = POLLIN|POLLPRI;
- if (!list_empty(&conn->out_list))
- events |= POLLOUT;
+ short events = 0;
+ if (!conn->is_ignored) {
+ events |= POLLIN|POLLPRI;
+ if (!list_empty(&conn->out_list))
+ events |= POLLOUT;
+ }
conn->pollfd_idx = set_fd(conn->fd, events);
}
}
@@ -1440,6 +1443,9 @@
talloc_free(conn->in);
conn->in = NULL;
+ /* if this is a socket connection, drop it now */
+ if (conn->fd >= 0)
+ talloc_free(conn);
}
static const char *sockmsg_string(enum xsd_sockmsg_type type)