diff --git a/src/event/ServerSocket.cxx b/src/event/ServerSocket.cxx
index 25e1e81ba..d3abb124a 100644
--- a/src/event/ServerSocket.cxx
+++ b/src/event/ServerSocket.cxx
@@ -265,20 +265,12 @@ ServerSocket::Close() noexcept
 			i.Close();
 }
 
+template<typename A>
 ServerSocket::OneServerSocket &
-ServerSocket::AddAddress(SocketAddress address) noexcept
+ServerSocket::AddAddress(A &&address) noexcept
 {
 	sockets.emplace_back(loop, *this, next_serial,
-			     address);
-
-	return sockets.back();
-}
-
-ServerSocket::OneServerSocket &
-ServerSocket::AddAddress(AllocatedSocketAddress &&address) noexcept
-{
-	sockets.emplace_back(loop, *this, next_serial,
-			     std::move(address));
+			     std::forward<A>(address));
 
 	return sockets.back();
 }
diff --git a/src/event/ServerSocket.hxx b/src/event/ServerSocket.hxx
index 8d8c2aaee..3cb0ad422 100644
--- a/src/event/ServerSocket.hxx
+++ b/src/event/ServerSocket.hxx
@@ -49,8 +49,8 @@ public:
 	}
 
 private:
-	OneServerSocket &AddAddress(SocketAddress address) noexcept;
-	OneServerSocket &AddAddress(AllocatedSocketAddress &&address) noexcept;
+	template<typename A>
+	OneServerSocket &AddAddress(A &&address) noexcept;
 
 	/**
 	 * Add a listener on a port on all IPv4 interfaces.