ensure socket inputstream is buffered

This commit is contained in:
Craig Raw 2020-12-17 08:37:26 +02:00
parent 3134a9ad42
commit 17bb442c78

View file

@ -130,9 +130,11 @@ public class TcpTransport implements Transport, Closeable {
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
} }
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(running) { while(running) {
try { try {
String received = readInputStream(); String received = readInputStream(in);
if(received.contains("method") && !received.contains("error")) { if(received.contains("method") && !received.contains("error")) {
//Handle subscription notification //Handle subscription notification
jsonRpcServer.handle(received, subscriptionService); jsonRpcServer.handle(received, subscriptionService);
@ -157,13 +159,21 @@ public class TcpTransport implements Transport, Closeable {
} }
} }
} }
} catch(IOException e) {
log.error("Error opening socket inputstream", e);
if(running) {
lastException = e;
reading = false;
readingCondition.signal();
//Allow this thread to terminate as we will need to reconnect with a new transport anyway
running = false;
}
} finally { } finally {
readLock.unlock(); readLock.unlock();
} }
} }
protected String readInputStream() throws IOException { protected String readInputStream(BufferedReader in) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String response = in.readLine(); String response = in.readLine();
if(response == null) { if(response == null) {