Skip to content

Commit 3aed1de

Browse files
committed
fixed reading/writing data thought ssl
1 parent ae3f7e2 commit 3aed1de

4 files changed

Lines changed: 30 additions & 17 deletions

File tree

rlib-network/src/main/java/com/ss/rlib/network/packet/impl/AbstractSSLPacketReader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,8 @@ protected int decryptAndRead(@NotNull ByteBuffer receivedBuffer) {
210210

211211
switch (result.getStatus()) {
212212
case OK:
213-
sslNetworkBuffer.clear();
213+
sslDataBuffer.flip();
214+
LOGGER.debug(sslDataBuffer, buf -> "Decrypted data:\n" + hexDump(buf));
214215
return readPackets(sslDataBuffer, pendingBuffer);
215216
case BUFFER_OVERFLOW:
216217
increaseDataBuffer();

rlib-network/src/main/java/com/ss/rlib/network/packet/impl/AbstractSSLPacketWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public AbstractSSLPacketWriter(
8282
// peerAppData = enlargeApplicationBuffer(engine, peerAppData);
8383
break;
8484
case OK:
85-
break;
85+
return sslNetworkBuffer.flip();
8686
case CLOSED:
8787
closeConnection();
8888
return EMPTY_BUFFER;

rlib-network/src/main/java/com/ss/rlib/network/packet/impl/StringReadablePacket.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.ss.rlib.network.packet.impl;
22

3-
import com.ss.rlib.network.impl.StringDataConnection;
3+
import com.ss.rlib.network.Connection;
44
import lombok.Getter;
55
import org.jetbrains.annotations.NotNull;
66
import org.jetbrains.annotations.Nullable;
@@ -11,15 +11,15 @@
1111
* @author JavaSaBr
1212
*/
1313
@Getter
14-
public class StringReadablePacket extends AbstractReadablePacket<StringDataConnection> {
14+
public class StringReadablePacket extends AbstractReadablePacket<Connection<?, ?>> {
1515

1616
/**
1717
* Read data.
1818
*/
1919
private volatile @Nullable String data;
2020

2121
@Override
22-
protected void readImpl(@NotNull StringDataConnection connection, @NotNull ByteBuffer buffer) {
22+
protected void readImpl(@NotNull Connection<?, ?> connection, @NotNull ByteBuffer buffer) {
2323
this.data = readString(buffer);
2424
}
2525

rlib-network/src/test/java/com/ss/rlib/network/test/StringSSLNetworkTest.java

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,7 @@
99
import com.ss.rlib.network.Connection;
1010
import com.ss.rlib.network.ServerNetworkConfig;
1111
import com.ss.rlib.network.impl.DefaultBufferAllocator;
12-
import com.ss.rlib.network.packet.impl.AbstractPacketWriter;
13-
import com.ss.rlib.network.packet.impl.AbstractSSLPacketReader;
14-
import com.ss.rlib.network.packet.impl.AbstractSSLPacketWriter;
15-
import com.ss.rlib.network.packet.impl.StringWritablePacket;
12+
import com.ss.rlib.network.packet.impl.*;
1613
import com.ss.rlib.network.util.NetworkUtils;
1714
import lombok.SneakyThrows;
1815
import org.jetbrains.annotations.NotNull;
@@ -26,6 +23,7 @@
2623
import java.net.InetSocketAddress;
2724
import java.net.ServerSocket;
2825
import java.net.Socket;
26+
import java.nio.ByteBuffer;
2927
import java.util.Scanner;
3028
import java.util.concurrent.CountDownLatch;
3129
import java.util.concurrent.TimeUnit;
@@ -106,17 +104,31 @@ void echoNetworkTest() {
106104
var sslSocketFactory = clientSslContext.getSocketFactory();
107105
var sslSocket = (SSLSocket) sslSocketFactory.createSocket(serverAddress.getHostName(), serverAddress.getPort());
108106

109-
var out = new PrintWriter(sslSocket.getOutputStream());
110-
out.println("Hello SSL");
107+
var buffer = ByteBuffer.allocate(1024);
108+
buffer.position(2);
109+
110+
new StringWritablePacket("Hello SSL").write(buffer);
111+
buffer.putShort(0, (short) buffer.position());
112+
buffer.flip();
113+
114+
LOGGER.info("Send hello message:\n" + NetworkUtils.hexDump(buffer));
115+
116+
var out = sslSocket.getOutputStream();
117+
out.write(buffer.array(), 0, buffer.limit());
111118
out.flush();
112119

113-
// var in = new Scanner(sslSocket.getInputStream());
114-
//String next = in.next();
120+
buffer.clear();
115121

116-
Assertions.assertTrue(
117-
counter.await(1000000, TimeUnit.MILLISECONDS),
118-
"Still wait for " + counter.getCount() + " packets..."
119-
);
122+
var in = sslSocket.getInputStream();
123+
var readBytes = in.read(buffer.array());
124+
125+
buffer.position(readBytes).flip();
126+
var packetLength = buffer.getShort();
127+
128+
var response = new StringReadablePacket();
129+
response.read(null, buffer, packetLength - 2);
130+
131+
LOGGER.info("Response: " + response.getData());
120132

121133
serverNetwork.shutdown();
122134

0 commit comments

Comments
 (0)