diff --git a/src/main/java/io/vertx/core/net/impl/NetSocketImpl.java b/src/main/java/io/vertx/core/net/impl/NetSocketImpl.java index 2bcee29b2..76722a8a2 100644 --- a/src/main/java/io/vertx/core/net/impl/NetSocketImpl.java +++ b/src/main/java/io/vertx/core/net/impl/NetSocketImpl.java @@ -359,8 +359,7 @@ public class NetSocketImpl extends ConnectionBase implements NetSocketInternal { consumer = registration; registration = null; } - // Should be done with dispatch.... - pending.write(InboundBuffer.END_SENTINEL); + context.dispatch(InboundBuffer.END_SENTINEL, pending::write); super.handleClosed(); if (consumer != null) { consumer.unregister(); diff --git a/src/test/java/io/vertx/core/net/NetTest.java b/src/test/java/io/vertx/core/net/NetTest.java index b72767619..0147a5893 100755 --- a/src/test/java/io/vertx/core/net/NetTest.java +++ b/src/test/java/io/vertx/core/net/NetTest.java @@ -2427,7 +2427,8 @@ public class NetTest extends VertxTestBase { } @Test - public void testInWorker() throws Exception { + public void testInWorker() { + waitFor(2); vertx.deployVerticle(new AbstractVerticle() { @Override public void start() throws Exception { @@ -2441,7 +2442,16 @@ public class NetTest extends VertxTestBase { assertSame(context, Vertx.currentContext()); conn.handler(conn::write); conn.closeHandler(v -> { - testComplete(); + assertTrue(Vertx.currentContext().isWorkerContext()); + assertTrue(Context.isOnWorkerThread()); + assertSame(context, Vertx.currentContext()); + complete(); + }); + conn.endHandler(v -> { + assertTrue(Vertx.currentContext().isWorkerContext()); + assertTrue(Context.isOnWorkerThread()); + assertSame(context, Vertx.currentContext()); + complete(); }); }).listen(testAddress, onSuccess(s -> { assertTrue(Vertx.currentContext().isWorkerContext());