Uploaded image for project: 'MINA'
  1. MINA
  2. DIRMINA-804

NioDatagramAcceptor.unbind does not unbind cleanly

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Cannot Reproduce
    • 2.0.0
    • 2.0.8
    • Transport
    • None
    • Windows 7

    Description

      Steps to reproduce:
      1. Use below code.

      NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
      acceptor.setHandler(new IoHandlerAdapter());
      SocketAddress localAddress = new InetSocketAddress("localhost",9001);
      acceptor.bind(localAddress);
      acceptor.unbind(localAddress);
      

      2. use debugger to step over here after unbind() call but before exiting the process
      3. use netstat to check current UDP sockets. you can find port 9001 not released yet.

      Possible solution: invoke selector.selectNow() after closing the channel.

       @Override
          protected void close(DatagramChannel handle) throws Exception {
              SelectionKey key = handle.keyFor(selector);
      
              if (key != null) {
                  key.cancel();
              }
              
              handle.disconnect();
              handle.close();
              selector.selectNow();
          }
      

      Attachments

        Activity

          People

            Unassigned Unassigned
            zzhou Zhou
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: