Skip to content

Commit f89c26f

Browse files
SendaoYanjerboaa
SendaoYan
authored andcommitted
8266881: Enable debug log for SSLEngineExplorerMatchedSNI.java
8212096: javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java failed intermittently due to SSLException: Tag mismatch 8227651: Tests fail with SSLProtocolException: Input record too big Reviewed-by: phh Backport-of: 8138382780b16f4184ad5bbfe07ab2468afe71a8
1 parent 492acd3 commit f89c26f

7 files changed

+48
-47
lines changed

jdk/test/javax/net/ssl/SSLEngine/LargePacket.java

+5-4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
*/
3939

4040
import javax.net.ssl.*;
41+
import java.nio.ByteBuffer;
4142
import java.nio.channels.*;
4243
import java.net.*;
4344

@@ -93,10 +94,10 @@ void doServerSide() throws Exception {
9394
}
9495

9596
// handshaking
96-
handshaking(ssle, sc, null);
97+
ByteBuffer peerNetData = handshaking(ssle, sc, null);
9798

9899
// receive application data
99-
receive(ssle, sc);
100+
receive(ssle, sc, peerNetData);
100101

101102
// send out application data
102103
deliver(ssle, sc);
@@ -136,13 +137,13 @@ void doClientSide() throws Exception {
136137
}
137138

138139
// handshaking
139-
handshaking(ssle, sc, null);
140+
ByteBuffer peerNetData = handshaking(ssle, sc, null);
140141

141142
// send out application data
142143
deliver(ssle, sc);
143144

144145
// receive application data
145-
receive(ssle, sc);
146+
receive(ssle, sc, peerNetData);
146147

147148
// close the socket channel.
148149
sc.close();

jdk/test/javax/net/ssl/SSLEngine/SSLEngineService.java

+21-21
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ private void init(String pathToStores) {
7070
protected static void deliver(SSLEngine ssle, SocketChannel sc)
7171
throws Exception {
7272

73-
// create buufer.
73+
// create buffer.
7474
int appBufferMax = ssle.getSession().getApplicationBufferSize();
7575
int netBufferMax = ssle.getSession().getPacketBufferSize();
7676
int length = appBufferMax * (Integer.SIZE / 8);
@@ -128,7 +128,7 @@ protected static void deliver(SSLEngine ssle, SocketChannel sc)
128128
// maybe need to enlarge the local network packet buffer.
129129
int size = ssle.getSession().getPacketBufferSize();
130130
if (size > localNetData.capacity()) {
131-
System.out.println("resize destination buffer upto " +
131+
System.out.println("send: resize destination buffer upto " +
132132
size + " bytes for BUFFER_OVERFLOW");
133133
localNetData = enlargeBuffer(localNetData, size);
134134
}
@@ -143,16 +143,14 @@ protected static void deliver(SSLEngine ssle, SocketChannel sc)
143143

144144

145145
// receive peer application data.
146-
protected static void receive(SSLEngine ssle, SocketChannel sc)
147-
throws Exception {
146+
protected static void receive(SSLEngine ssle, SocketChannel sc,
147+
ByteBuffer peerNetData) throws Exception {
148148

149-
// create buufers.
149+
// create buffer.
150150
int appBufferMax = ssle.getSession().getApplicationBufferSize();
151-
int netBufferMax = ssle.getSession().getPacketBufferSize();
152151

153-
// allocate less in order to check BUFFER_OVERFLOW/BUFFER_UNDERFLOW
152+
// allocate less in order to check BUFFER_OVERFLOW
154153
ByteBuffer peerAppData = ByteBuffer.allocate(appBufferMax/2);
155-
ByteBuffer peerNetData = ByteBuffer.allocate(netBufferMax/2);
156154
int received = -1;
157155

158156
boolean needToReadMore = true;
@@ -189,8 +187,8 @@ protected static void receive(SSLEngine ssle, SocketChannel sc)
189187

190188
System.out.println("received " + peerAppData.position() +
191189
" bytes client application data");
192-
System.out.println("\tcomsumed " + res.bytesConsumed() +
193-
" byes network data");
190+
System.out.println("\tconsumed " + res.bytesConsumed() +
191+
" bytes network data");
194192
peerAppData.clear();
195193

196194
received -= res.bytesProduced();
@@ -209,7 +207,7 @@ protected static void receive(SSLEngine ssle, SocketChannel sc)
209207
// maybe need to enlarge the peer application data buffer.
210208
int size = ssle.getSession().getApplicationBufferSize();
211209
if (size > peerAppData.capacity()) {
212-
System.out.println("resize destination buffer upto " +
210+
System.out.println("recv: resize destination buffer upto " +
213211
size + " bytes for BUFFER_OVERFLOW");
214212
peerAppData = enlargeBuffer(peerAppData, size);
215213
}
@@ -219,8 +217,8 @@ protected static void receive(SSLEngine ssle, SocketChannel sc)
219217
// maybe need to enlarge the peer network packet data buffer.
220218
size = ssle.getSession().getPacketBufferSize();
221219
if (size > peerNetData.capacity()) {
222-
System.out.println("resize source buffer upto " + size +
223-
" bytes for BUFFER_UNDERFLOW");
220+
System.out.println("recv: resize source buffer upto " +
221+
size + " bytes for BUFFER_UNDERFLOW");
224222
peerNetData = enlargeBuffer(peerNetData, size);
225223
}
226224

@@ -234,15 +232,16 @@ protected static void receive(SSLEngine ssle, SocketChannel sc)
234232
}
235233
}
236234

237-
protected static void handshaking(SSLEngine ssle, SocketChannel sc,
235+
protected static ByteBuffer handshaking(SSLEngine ssle, SocketChannel sc,
238236
ByteBuffer additional) throws Exception {
239237

240238
int appBufferMax = ssle.getSession().getApplicationBufferSize();
241239
int netBufferMax = ssle.getSession().getPacketBufferSize();
242240

241+
// zero-byte app buffers - we do not want to exchange app data here
242+
ByteBuffer localAppData = ByteBuffer.allocate(0);
243+
ByteBuffer peerAppData = ByteBuffer.allocate(0);
243244
// allocate less in order to check BUFFER_OVERFLOW/BUFFER_UNDERFLOW
244-
ByteBuffer localAppData = ByteBuffer.allocate(appBufferMax/10);
245-
ByteBuffer peerAppData = ByteBuffer.allocate(appBufferMax/10);
246245
ByteBuffer localNetData = ByteBuffer.allocate(netBufferMax/10);
247246
ByteBuffer peerNetData = ByteBuffer.allocate(netBufferMax/10);
248247

@@ -272,15 +271,15 @@ protected static void handshaking(SSLEngine ssle, SocketChannel sc,
272271
} else {
273272
if (sc.read(peerNetData) < 0) {
274273
ssle.closeInbound();
275-
return;
274+
throw new EOFException();
276275
}
277276
}
278277
}
279278

280279
if (underflow) {
281280
if (sc.read(peerNetData) < 0) {
282281
ssle.closeInbound();
283-
return;
282+
throw new EOFException();
284283
}
285284

286285
underflow = false;
@@ -298,7 +297,7 @@ protected static void handshaking(SSLEngine ssle, SocketChannel sc,
298297
// maybe need to enlarge the peer network packet buffer.
299298
int size = ssle.getSession().getPacketBufferSize();
300299
if (size > peerNetData.capacity()) {
301-
System.out.println("resize source buffer upto " +
300+
System.out.println("hs recv: resize source buffer upto " +
302301
size + " bytes for BUFFER_UNDERFLOW");
303302
peerNetData = enlargeBuffer(peerNetData, size);
304303
}
@@ -309,7 +308,7 @@ protected static void handshaking(SSLEngine ssle, SocketChannel sc,
309308
// maybe need to enlarge the peer application data buffer.
310309
size = ssle.getSession().getApplicationBufferSize();
311310
if (size > peerAppData.capacity()) {
312-
System.out.println("resize destination buffer upto " +
311+
System.out.println("hs recv: resize destination buffer upto " +
313312
size + " bytes for BUFFER_OVERFLOW");
314313
peerAppData = enlargeBuffer(peerAppData, size);
315314
}
@@ -346,7 +345,7 @@ protected static void handshaking(SSLEngine ssle, SocketChannel sc,
346345
// maybe need to enlarge the local network packet buffer.
347346
int size = ssle.getSession().getPacketBufferSize();
348347
if (size > localNetData.capacity()) {
349-
System.out.println("resize destination buffer upto " +
348+
System.out.println("hs send: resize destination buffer upto " +
350349
size + " bytes for BUFFER_OVERFLOW");
351350
localNetData = enlargeBuffer(localNetData, size);
352351
}
@@ -371,6 +370,7 @@ protected static void handshaking(SSLEngine ssle, SocketChannel sc,
371370
}
372371
} while (hs != SSLEngineResult.HandshakeStatus.FINISHED &&
373372
hs != SSLEngineResult.HandshakeStatus.NOT_HANDSHAKING);
373+
return peerNetData;
374374
}
375375

376376
private static ByteBuffer enlargeBuffer(ByteBuffer buffer, int size) {

jdk/test/javax/net/ssl/ServerName/SSLEngineExplorer.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ void doServerSide() throws Exception {
142142
}
143143

144144
// handshaking
145-
handshaking(ssle, sc, buffer);
145+
ByteBuffer peerNetData = handshaking(ssle, sc, buffer);
146146

147147
// receive application data
148-
receive(ssle, sc);
148+
receive(ssle, sc, peerNetData);
149149

150150
// send out application data
151151
deliver(ssle, sc);
@@ -192,13 +192,13 @@ void doClientSide() throws Exception {
192192
ssle.setEnabledProtocols(supportedProtocols);
193193

194194
// handshaking
195-
handshaking(ssle, sc, null);
195+
ByteBuffer peerNetData = handshaking(ssle, sc, null);
196196

197197
// send out application data
198198
deliver(ssle, sc);
199199

200200
// receive application data
201-
receive(ssle, sc);
201+
receive(ssle, sc, peerNetData);
202202

203203
// close the socket channel.
204204
sc.close();

jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -71,7 +71,7 @@ public class SSLEngineExplorerMatchedSNI extends SSLEngineService {
7171
/*
7272
* Turn on SSL debugging?
7373
*/
74-
static boolean debug = false;
74+
static boolean debug = true;
7575

7676
/*
7777
* Define the server side of the test.
@@ -154,10 +154,10 @@ void doServerSide() throws Exception {
154154
ssle.setSSLParameters(params);
155155

156156
// handshaking
157-
handshaking(ssle, sc, buffer);
157+
ByteBuffer peerNetData = handshaking(ssle, sc, buffer);
158158

159159
// receive application data
160-
receive(ssle, sc);
160+
receive(ssle, sc, peerNetData);
161161

162162
// send out application data
163163
deliver(ssle, sc);
@@ -209,13 +209,13 @@ void doClientSide() throws Exception {
209209
ssle.setSSLParameters(params);
210210

211211
// handshaking
212-
handshaking(ssle, sc, null);
212+
ByteBuffer peerNetData = handshaking(ssle, sc, null);
213213

214214
// send out application data
215215
deliver(ssle, sc);
216216

217217
// receive application data
218-
receive(ssle, sc);
218+
receive(ssle, sc, peerNetData);
219219

220220
// check server name indication
221221
ExtendedSSLSession session = (ExtendedSSLSession)ssle.getSession();

jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerUnmatchedSNI.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,10 @@ void doServerSide() throws Exception {
148148

149149
try {
150150
// handshaking
151-
handshaking(ssle, sc, buffer);
151+
ByteBuffer peerNetData = handshaking(ssle, sc, buffer);
152152

153153
// receive application data
154-
receive(ssle, sc);
154+
receive(ssle, sc, peerNetData);
155155

156156
// send out application data
157157
deliver(ssle, sc);
@@ -213,13 +213,13 @@ void doClientSide() throws Exception {
213213

214214
try {
215215
// handshaking
216-
handshaking(ssle, sc, null);
216+
ByteBuffer peerNetData = handshaking(ssle, sc, null);
217217

218218
// send out application data
219219
deliver(ssle, sc);
220220

221221
// receive application data
222-
receive(ssle, sc);
222+
receive(ssle, sc, peerNetData);
223223

224224
// check server name indication
225225
ExtendedSSLSession session = (ExtendedSSLSession)ssle.getSession();

jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithCli.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,10 @@ void doServerSide() throws Exception {
136136
}
137137

138138
// handshaking
139-
handshaking(ssle, sc, buffer);
139+
ByteBuffer peerNetData = handshaking(ssle, sc, buffer);
140140

141141
// receive application data
142-
receive(ssle, sc);
142+
receive(ssle, sc, peerNetData);
143143

144144
// send out application data
145145
deliver(ssle, sc);
@@ -190,13 +190,13 @@ void doClientSide() throws Exception {
190190
ssle.setSSLParameters(params);
191191

192192
// handshaking
193-
handshaking(ssle, sc, null);
193+
ByteBuffer peerNetData = handshaking(ssle, sc, null);
194194

195195
// send out application data
196196
deliver(ssle, sc);
197197

198198
// receive application data
199-
receive(ssle, sc);
199+
receive(ssle, sc, peerNetData);
200200

201201
// check server name indication
202202
ExtendedSSLSession session = (ExtendedSSLSession)ssle.getSession();

jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithSrv.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,10 @@ void doServerSide() throws Exception {
145145
ssle.setSSLParameters(params);
146146

147147
// handshaking
148-
handshaking(ssle, sc, buffer);
148+
ByteBuffer peerNetData = handshaking(ssle, sc, buffer);
149149

150150
// receive application data
151-
receive(ssle, sc);
151+
receive(ssle, sc, peerNetData);
152152

153153
// send out application data
154154
deliver(ssle, sc);
@@ -193,13 +193,13 @@ void doClientSide() throws Exception {
193193
}
194194

195195
// handshaking
196-
handshaking(ssle, sc, null);
196+
ByteBuffer peerNetData = handshaking(ssle, sc, null);
197197

198198
// send out application data
199199
deliver(ssle, sc);
200200

201201
// receive application data
202-
receive(ssle, sc);
202+
receive(ssle, sc, peerNetData);
203203

204204
// check server name indication
205205
ExtendedSSLSession session = (ExtendedSSLSession)ssle.getSession();

0 commit comments

Comments
 (0)