Repository: incubator-ignite Updated Branches: refs/heads/ignite-1.3.3-sslbench b7912fd15 -> 08d5343f9
Rename variable byte buffer. Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/58c5a122 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/58c5a122 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/58c5a122 Branch: refs/heads/ignite-1.3.3-sslbench Commit: 58c5a1222b3d2cec413801cb415bb45ffc290f3c Parents: 65feef6 Author: nikolay_tikhonov <ntikho...@gridgain.com> Authored: Thu Jul 23 18:44:41 2015 +0300 Committer: nikolay_tikhonov <ntikho...@gridgain.com> Committed: Thu Jul 23 18:44:41 2015 +0300 ---------------------------------------------------------------------- .../ignite/internal/util/nio/GridNioServer.java | 30 +++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/58c5a122/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java index d3f439a..b57bf22 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java @@ -70,6 +70,9 @@ public class GridNioServer<T> { /** SSL system data buffer metadata key. */ private static final int BUF_SSL_SYSTEM_META_KEY = GridNioSessionMetaKey.nextUniqueKey(); + /** SSL write buf limit. */ + private static final int WRITE_BUF_LIMIT = GridNioSessionMetaKey.nextUniqueKey(); + /** Accept worker thread. */ @GridToStringExclude private final IgniteThread acceptThread; @@ -920,6 +923,10 @@ public class GridNioServer<T> { } ByteBuffer buf = ses.writeBuffer(); + + if (ses.meta(WRITE_BUF_LIMIT) != null) + buf.limit((int)ses.meta(WRITE_BUF_LIMIT)); + NioOperationFuture<?> req = ses.removeMeta(NIO_OPERATION.ordinal()); List<NioOperationFuture<?>> doneFuts = null; @@ -971,19 +978,24 @@ public class GridNioServer<T> { writer.reset(); } + int sesBufLimit = buf.limit(); + int sesCap = buf.capacity(); + buf.flip(); + buf = sslFilter.encrypt(ses, buf); + ByteBuffer sesBuf = ses.writeBuffer(); - buf = sslFilter.encrypt(ses, sesBuf); + sesBuf.clear(); - int expand = sesBuf.limit() - buf.limit(); + if (sesCap - buf.limit() < 0) { + int limit = sesBufLimit + (sesCap - buf.limit()) - 100; - sesBuf.clear(); + ses.addMeta(WRITE_BUF_LIMIT, limit); - // SSL data more then socket buffer size - if (expand < 0) - sesBuf.limit(sesBuf.limit() + expand - 100); + sesBuf.limit(limit); + } assert buf.hasRemaining(); @@ -1022,8 +1034,12 @@ public class GridNioServer<T> { break; } - else + else { buf = ses.writeBuffer(); + + if (ses.meta(WRITE_BUF_LIMIT) != null) + buf.limit((int)ses.meta(WRITE_BUF_LIMIT)); + } } } finally {