From e99a615b0999286a5bc573342c45641a9368ff94 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Fri, 4 Mar 2016 01:49:43 +0100 Subject: [PATCH] closing channel, if registration failed. Coverity issue 72309 --- .../ui/util/SingleInstanceManager.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/util/SingleInstanceManager.java b/main/ui/src/main/java/org/cryptomator/ui/util/SingleInstanceManager.java index ca9fb4965..128b2e5e6 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/util/SingleInstanceManager.java +++ b/main/ui/src/main/java/org/cryptomator/ui/util/SingleInstanceManager.java @@ -84,7 +84,7 @@ public class SingleInstanceManager { return true; } return !buf.hasRemaining(); - }, timeout, 10); + } , timeout, 10); return !buf.hasRemaining(); } @@ -139,10 +139,17 @@ public class SingleInstanceManager { void handleSelection(SelectionKey key) throws IOException { if (key.isAcceptable()) { final SocketChannel accepted = channel.accept(); - if (accepted != null) { - LOG.debug("accepted incoming connection"); - accepted.configureBlocking(false); - accepted.register(selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE); + SelectionKey keyOfAcceptedConnection = null; + try { + if (accepted != null) { + LOG.debug("accepted incoming connection"); + accepted.configureBlocking(false); + keyOfAcceptedConnection = accepted.register(selector, SelectionKey.OP_READ | SelectionKey.OP_WRITE); + } + } finally { + if (keyOfAcceptedConnection == null) { + accepted.close(); + } } } @@ -189,6 +196,7 @@ public class SingleInstanceManager { } } + @Override public void close() { IOUtils.closeQuietly(selector); IOUtils.closeQuietly(channel); @@ -359,7 +367,7 @@ public class SingleInstanceManager { } } return !buf.hasRemaining(); - }, timeout, 1); + } , timeout, 1); } } } \ No newline at end of file