|
16 | 16 | package org.eclipse.paho.client.mqttv3.internal; |
17 | 17 |
|
18 | 18 | import java.io.IOException; |
| 19 | +import java.lang.NoClassDefFoundError; |
| 20 | +import java.lang.NoSuchMethodError; |
19 | 21 | import java.util.ArrayList; |
20 | 22 | import java.util.List; |
21 | 23 |
|
@@ -134,17 +136,25 @@ public void start() throws IOException, MqttException { |
134 | 136 | socket.setSoTimeout(this.handshakeTimeoutSecs * 1000); |
135 | 137 |
|
136 | 138 | // SNI support. Should be automatic under some circumstances - not all, apparently |
137 | | - SSLParameters sslParameters = new SSLParameters(); |
138 | | - List<SNIServerName> sniHostNames = new ArrayList<SNIServerName>(1); |
139 | | - sniHostNames.add(new SNIHostName(host)); |
140 | | - sslParameters.setServerNames(sniHostNames); |
141 | | - ((SSLSocket)socket).setSSLParameters(sslParameters); |
| 139 | + try { |
| 140 | + SSLParameters sslParameters = new SSLParameters(); |
| 141 | + List<SNIServerName> sniHostNames = new ArrayList<SNIServerName>(1); |
| 142 | + sniHostNames.add(new SNIHostName(host)); |
| 143 | + sslParameters.setServerNames(sniHostNames); |
| 144 | + ((SSLSocket)socket).setSSLParameters(sslParameters); |
| 145 | + } catch(NoClassDefFoundError e) { |
| 146 | + // Android < 7.0 |
| 147 | + } |
142 | 148 |
|
143 | 149 | // If default Hostname verification is enabled, use the same method that is used with HTTPS |
144 | 150 | if(this.httpsHostnameVerificationEnabled) { |
145 | | - SSLParameters sslParams = new SSLParameters(); |
146 | | - sslParams.setEndpointIdentificationAlgorithm("HTTPS"); |
147 | | - ((SSLSocket) socket).setSSLParameters(sslParams); |
| 151 | + try { |
| 152 | + SSLParameters sslParams = new SSLParameters(); |
| 153 | + sslParams.setEndpointIdentificationAlgorithm("HTTPS"); |
| 154 | + ((SSLSocket) socket).setSSLParameters(sslParams); |
| 155 | + } catch(NoSuchMethodError e) { |
| 156 | + // Android < 7.0 |
| 157 | + } |
148 | 158 | } |
149 | 159 | ((SSLSocket) socket).startHandshake(); |
150 | 160 | if (hostnameVerifier != null && !this.httpsHostnameVerificationEnabled) { |
|
0 commit comments