From ca1a57f022900f60d2f483c13df9ff29e5145e7d Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Sun, 14 Mar 2021 00:34:49 +0100 Subject: [PATCH] MINOR: raw_sock: Add a close method. Add a close() method, that explicitely cancels any subscription on the connection, in preparation for future evolutions. --- src/raw_sock.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/raw_sock.c b/src/raw_sock.c index 1900a5c4a..4fbc1a521 100644 --- a/src/raw_sock.c +++ b/src/raw_sock.c @@ -434,6 +434,13 @@ static int raw_sock_unsubscribe(struct connection *conn, void *xprt_ctx, int eve return conn_unsubscribe(conn, xprt_ctx, event_type, es); } +static void raw_sock_close(struct connection *conn, void *xprt_ctx) +{ + if (conn->subs != NULL) { + conn_unsubscribe(conn, NULL, conn->subs->events, conn->subs); + } +} + /* We can't have an underlying XPRT, so just return -1 to signify failure */ static int raw_sock_remove_xprt(struct connection *conn, void *xprt_ctx, void *toremove_ctx, const struct xprt_ops *newops, void *newctx) { @@ -457,7 +464,7 @@ static struct xprt_ops raw_sock = { #endif .shutr = NULL, .shutw = NULL, - .close = NULL, + .close = raw_sock_close, .name = "RAW", };