You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2008/10/21 13:42:56 UTC
svn commit: r706585 - in /mina/trunk/core/src/main/java/org/apache/mina:
core/polling/AbstractPollingIoConnector.java
transport/socket/nio/NioDatagramAcceptor.java
transport/socket/nio/NioSocketAcceptor.java
transport/socket/nio/NioSocketConnector.java
Author: elecharny
Date: Tue Oct 21 04:42:56 2008
New Revision: 706585
URL: http://svn.apache.org/viewvc?rev=706585&view=rev
Log:
Fixed a potential NPE when the SelectionKey is null in the accept methods.
Modified:
mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java?rev=706585&r1=706584&r2=706585&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java Tue Oct 21 04:42:56 2008
@@ -451,7 +451,7 @@
H handle = handles.next();
ConnectionRequest connectionRequest = getConnectionRequest(handle);
- if (currentTime >= connectionRequest.deadline) {
+ if ((connectionRequest != null) && (currentTime >= connectionRequest.deadline)) {
connectionRequest.setException(
new ConnectException("Connection timed out."));
cancelQueue.offer(connectionRequest);
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java?rev=706585&r1=706584&r2=706585&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java Tue Oct 21 04:42:56 2008
@@ -121,24 +121,22 @@
@Override
protected boolean isReadable(DatagramChannel handle) {
SelectionKey key = handle.keyFor(selector);
- if (key == null) {
- return false;
- }
- if (!key.isValid()) {
+
+ if ((key == null) || (!key.isValid())) {
return false;
}
+
return key.isReadable();
}
@Override
protected boolean isWritable(DatagramChannel handle) {
SelectionKey key = handle.keyFor(selector);
- if (key == null) {
- return false;
- }
- if (!key.isValid()) {
+
+ if ((key == null) || (!key.isValid())) {
return false;
}
+
return key.isWritable();
}
@@ -153,9 +151,11 @@
IoProcessor<NioSession> processor, DatagramChannel handle,
SocketAddress remoteAddress) {
SelectionKey key = handle.keyFor(selector);
- if (key == null) {
+
+ if ((key == null) || (!key.isValid())) {
return null;
}
+
NioDatagramSession newSession = new NioDatagramSession(
this, handle, processor, remoteAddress);
newSession.setSelectionKey(key);
@@ -204,9 +204,11 @@
@Override
protected void close(DatagramChannel handle) throws Exception {
SelectionKey key = handle.keyFor(selector);
+
if (key != null) {
key.cancel();
}
+
handle.disconnect();
handle.close();
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java?rev=706585&r1=706584&r2=706585&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java Tue Oct 21 04:42:56 2008
@@ -210,11 +210,7 @@
SelectionKey key = handle.keyFor(selector);
- if (!key.isValid()) {
- return null;
- }
-
- if (!key.isAcceptable()) {
+ if ((key == null) || (!key.isValid()) || (!key.isAcceptable()) ) {
return null;
}
@@ -296,9 +292,11 @@
@Override
protected void close(ServerSocketChannel handle) throws Exception {
SelectionKey key = handle.keyFor(selector);
+
if (key != null) {
key.cancel();
}
+
handle.close();
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java?rev=706585&r1=706584&r2=706585&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketConnector.java Tue Oct 21 04:42:56 2008
@@ -194,7 +194,8 @@
@Override
protected ConnectionRequest getConnectionRequest(SocketChannel handle) {
SelectionKey key = handle.keyFor(selector);
- if (key == null) {
+
+ if ((key == null) || (!key.isValid())) {
return null;
}
@@ -207,9 +208,11 @@
@Override
protected void close(SocketChannel handle) throws Exception {
SelectionKey key = handle.keyFor(selector);
+
if (key != null) {
key.cancel();
}
+
handle.close();
}
@@ -218,11 +221,13 @@
*/
@Override
protected boolean finishConnect(SocketChannel handle) throws Exception {
- SelectionKey key = handle.keyFor(selector);
if (handle.finishConnect()) {
+ SelectionKey key = handle.keyFor(selector);
+
if (key != null) {
key.cancel();
}
+
return true;
}