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 2014/09/11 08:17:18 UTC
git commit: Added a lock,
instead of synchrnizing teh whole section. We now prtect the write
and read as a whole (that should be a fix for DIRMINA-779)
Repository: mina
Updated Branches:
refs/heads/2.0 691c41831 -> 56a6e5800
Added a lock, instead of synchrnizing teh whole section. We now prtect
the write and read as a whole (that should be a fix for DIRMINA-779)
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/56a6e580
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/56a6e580
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/56a6e580
Branch: refs/heads/2.0
Commit: 56a6e58004ea4a6af5640f03d1f6796a073c5d62
Parents: 691c418
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Thu Sep 11 08:17:04 2014 +0200
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Thu Sep 11 08:17:04 2014 +0200
----------------------------------------------------------------------
.../org/apache/mina/filter/ssl/SslHandler.java | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/56a6e580/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
index abb8606..f801d7b 100644
--- a/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
+++ b/mina-core/src/main/java/org/apache/mina/filter/ssl/SslHandler.java
@@ -23,6 +23,8 @@ import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLEngineResult;
@@ -114,6 +116,8 @@ class SslHandler {
* for data being produced during the handshake). */
private boolean writingEncryptedData;
+ private Lock sslLock = new ReentrantLock();
+
/**
* Create a new SSL Handler, and initialize it.
*
@@ -306,16 +310,20 @@ class SslHandler {
// We need synchronization here inevitably because filterWrite can be
// called simultaneously and cause 'bad record MAC' integrity error.
- synchronized (this) {
+ sslLock.lock();
+
+ try {
while ((event = filterWriteEventQueue.poll()) != null) {
NextFilter nextFilter = event.getNextFilter();
nextFilter.filterWrite(session, (WriteRequest) event.getParameter());
}
- }
- while ((event = messageReceivedEventQueue.poll()) != null) {
- NextFilter nextFilter = event.getNextFilter();
- nextFilter.messageReceived(session, event.getParameter());
+ while ((event = messageReceivedEventQueue.poll()) != null) {
+ NextFilter nextFilter = event.getNextFilter();
+ nextFilter.messageReceived(session, event.getParameter());
+ }
+ } finally {
+ sslLock.unlock();
}
}