diff --git a/src/Couchbase.Lite/Sync/WebSocketTransport.cs b/src/Couchbase.Lite/Sync/WebSocketTransport.cs index 9b09c17cf..98cb811b4 100644 --- a/src/Couchbase.Lite/Sync/WebSocketTransport.cs +++ b/src/Couchbase.Lite/Sync/WebSocketTransport.cs @@ -50,7 +50,7 @@ internal static unsafe class WebSocketTransport public static void RegisterWithC4() { - SocketFactory.RegisterFactory(DoOpen, DoClose, DoWrite, DoCompleteReceive); + SocketFactory.RegisterFactory(DoOpen, DoClose, DoWrite, DoCompleteReceive, DoDispose); SocketFactory.SetErrorHandler(DoError); } @@ -84,6 +84,17 @@ private static void DoCompleteReceive(C4Socket* socket, ulong bytecount) socketWrapper.CompletedReceive(bytecount); } + private static void DoDispose(C4Socket* socket) + { + var id = (int) socket->nativeHandle; + if (id == 0) { + Log.To.Sync.E(Tag, "DoDispose reached after close"); + return; + } + + Sockets.Remove(id); + } + private static void DoError(C4Socket* socket, Exception e) { Log.To.Sync.E(Tag, "Websocket Error", e); diff --git a/vendor/couchbase-lite-core b/vendor/couchbase-lite-core index a8bcdfeb1..83b181c1a 160000 --- a/vendor/couchbase-lite-core +++ b/vendor/couchbase-lite-core @@ -1 +1 @@ -Subproject commit a8bcdfeb14f971f9690bd3d88b5f135f4d620c8e +Subproject commit 83b181c1a0e025b6acfd3e5b9e3a2d298445043f