This is an automated email from the ASF dual-hosted git repository. johnnyv pushed a commit to branch 2.0.X in repository https://gitbox.apache.org/repos/asf/mina.git
The following commit(s) were added to refs/heads/2.0.X by this push: new 5f3a628 Backport DIRMINA-1095 from 2.1.X 5f3a628 is described below commit 5f3a628b0beaa371faa1164c2288173aa1ad35c6 Author: johnnyv <john...@apache.org> AuthorDate: Sat May 4 13:18:44 2019 -0400 Backport DIRMINA-1095 from 2.1.X --- .../transport/socket/nio/NioDatagramAcceptor.java | 49 ++++++++++++---------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java index 09c35e7..2db6a0c 100644 --- a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java +++ b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java @@ -258,27 +258,34 @@ public final class NioDatagramAcceptor extends AbstractIoAcceptor implements Dat } private void processReadySessions(Set<SelectionKey> handles) { - Iterator<SelectionKey> iterator = handles.iterator(); - - while (iterator.hasNext()) { - SelectionKey key = iterator.next(); - DatagramChannel handle = (DatagramChannel) key.channel(); - iterator.remove(); - - try { - if (key.isValid() && key.isReadable()) { - readHandle(handle); - } - - if (key.isValid() && key.isWritable()) { - for (IoSession session : getManagedSessions().values()) { - scheduleFlush((NioSession) session); - } - } - } catch (Exception e) { - ExceptionMonitor.getInstance().exceptionCaught(e); - } - } + final Iterator<SelectionKey> iterator = handles.iterator(); + + while (iterator.hasNext()) { + try { + final SelectionKey key = iterator.next(); + final DatagramChannel handle = (DatagramChannel) key.channel(); + + if (key.isValid()) { + if (key.isReadable()) { + readHandle(handle); + } + + if (key.isWritable()) { + for (IoSession session : getManagedSessions().values()) { + final NioSession x = (NioSession) session; + if (x.getChannel() == handle) { + scheduleFlush(x); + } + } + } + } + + } catch (Exception e) { + ExceptionMonitor.getInstance().exceptionCaught(e); + } finally { + iterator.remove(); + } + } } private boolean scheduleFlush(NioSession session) {