You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/04/08 23:29:06 UTC
svn commit: r1672190 -
/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
Author: markt
Date: Wed Apr 8 21:29:05 2015
New Revision: 1672190
URL: http://svn.apache.org/r1672190
Log:
Fix a crash when I put it all together. Get the negotiated protocol after the handshake.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1672190&r1=1672189&r2=1672190&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Wed Apr 8 21:29:05 2015
@@ -832,7 +832,8 @@ public class AprEndpoint extends Abstrac
/**
* Process the specified connection.
*/
- protected boolean setSocketOptions(long socket) {
+ protected boolean setSocketOptions(SocketWrapperBase<Long> socketWrapper) {
+ long socket = socketWrapper.getSocket().longValue();
// Process the connection
int step = 1;
try {
@@ -854,8 +855,20 @@ public class AprEndpoint extends Abstrac
}
return false;
}
- }
+ if (negotiableProtocols.size() > 0) {
+ byte[] negotiated = new byte[256];
+ int len = SSLSocket.getALPN(socket, negotiated);
+ String negotiatedProtocol =
+ new String(negotiated, 0, len, StandardCharsets.UTF_8);
+ if (negotiatedProtocol.length() > 0) {
+ socketWrapper.setNegotiatedProtocol(negotiatedProtocol);
+ if (log.isDebugEnabled()) {
+ log.debug(sm.getString("endpoint.alpn.negotiated", negotiatedProtocol));
+ }
+ }
+ }
+ }
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
if (log.isDebugEnabled()) {
@@ -906,18 +919,6 @@ public class AprEndpoint extends Abstrac
wrapper.setSecure(isSSLEnabled());
wrapper.setReadTimeout(getSoTimeout());
wrapper.setWriteTimeout(getSoTimeout());
- if (isSSLEnabled() && negotiableProtocols.size() > 0) {
- byte[] negotiated = new byte[256];
- int len = SSLSocket.getALPN(socket, negotiated);
- String negotiatedProtocol =
- new String(negotiated, 0, len, StandardCharsets.UTF_8);
- if (negotiatedProtocol.length() > 0) {
- wrapper.setNegotiatedProtocol(negotiatedProtocol);
- if (log.isDebugEnabled()) {
- log.debug(sm.getString("endpoint.alpn.negotiated", negotiatedProtocol));
- }
- }
- }
connections.put(Long.valueOf(socket), wrapper);
getExecutor().execute(new SocketWithOptionsProcessor(wrapper));
}
@@ -2359,7 +2360,7 @@ public class AprEndpoint extends Abstrac
synchronized (socket) {
if (!deferAccept) {
- if (setSocketOptions(socket.getSocket().longValue())) {
+ if (setSocketOptions(socket)) {
getPoller().add(socket.getSocket().longValue(),
getSoTimeout(), Poll.APR_POLLIN);
} else {
@@ -2369,7 +2370,7 @@ public class AprEndpoint extends Abstrac
}
} else {
// Process the request from this socket
- if (!setSocketOptions(socket.getSocket().longValue())) {
+ if (!setSocketOptions(socket)) {
// Close socket and pool
closeSocket(socket.getSocket().longValue());
socket = null;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org