From 7a568371413245843987341dbf383bfb4e23d7ef Mon Sep 17 00:00:00 2001
From: Max Kellermann <mk@cm4all.com>
Date: Mon, 14 Dec 2020 09:00:41 +0100
Subject: [PATCH] odbus/Watch: support DBUS_WATCH_{ERROR,HANGUP}

---
 src/lib/dbus/Watch.cxx | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/lib/dbus/Watch.cxx b/src/lib/dbus/Watch.cxx
index 02268b6b4..6165e0e73 100644
--- a/src/lib/dbus/Watch.cxx
+++ b/src/lib/dbus/Watch.cxx
@@ -48,7 +48,9 @@ static constexpr unsigned
 DbusToLibevent(unsigned flags) noexcept
 {
 	return ((flags & DBUS_WATCH_READABLE) != 0) * SocketEvent::READ |
-		((flags & DBUS_WATCH_WRITABLE) != 0) * SocketEvent::WRITE;
+		((flags & DBUS_WATCH_WRITABLE) != 0) * SocketEvent::WRITE |
+		((flags & DBUS_WATCH_ERROR) != 0) * SocketEvent::ERROR |
+		((flags & DBUS_WATCH_HANGUP) != 0) * SocketEvent::HANGUP;
 }
 
 void
@@ -66,7 +68,9 @@ static constexpr unsigned
 LibeventToDbus(unsigned flags) noexcept
 {
 	return ((flags & SocketEvent::READ) != 0) * DBUS_WATCH_READABLE |
-		((flags & SocketEvent::WRITE) != 0) * DBUS_WATCH_WRITABLE;
+		((flags & SocketEvent::WRITE) != 0) * DBUS_WATCH_WRITABLE |
+		((flags & SocketEvent::ERROR) != 0) * DBUS_WATCH_ERROR |
+		((flags & SocketEvent::HANGUP) != 0) * DBUS_WATCH_HANGUP;
 }
 
 void