diff options
Diffstat (limited to 'java')
| -rwxr-xr-x | java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java b/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java index 267857a34a..c0764272a4 100755 --- a/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java +++ b/java/broker/src/main/java/org/apache/qpid/server/protocol/MultiVersionProtocolEngine.java @@ -758,6 +758,11 @@ public class MultiVersionProtocolEngine implements ServerProtocolEngine private boolean looksLikeSSL(byte[] headerBytes) { + return looksLikeSSLv3ClientHello(headerBytes) || looksLikeSSLv2ClientHello(headerBytes); + } + + private boolean looksLikeSSLv3ClientHello(byte[] headerBytes) + { return headerBytes[0] == 22 && // SSL Handshake (headerBytes[1] == 3 && // SSL 3.0 / TLS 1.x (headerBytes[2] == 0 || // SSL 3.0 @@ -767,6 +772,17 @@ public class MultiVersionProtocolEngine implements ServerProtocolEngine (headerBytes[5] == 1); // client_hello } + private boolean looksLikeSSLv2ClientHello(byte[] headerBytes) + { + return headerBytes[0] == -128 && + headerBytes[3] == 3 && // SSL 3.0 / TLS 1.x + (headerBytes[4] == 0 || // SSL 3.0 + headerBytes[4] == 1 || // TLS 1.0 + headerBytes[4] == 2 || // TLS 1.1 + headerBytes[4] == 3); + } + + private static class SSLNetworkConnection implements NetworkConnection { private final NetworkConnection _network; |
