Browse Source

ensure socket inputstream is buffered

bwt
Craig Raw 4 years ago
parent
commit
17bb442c78
  1. 16
      src/main/java/com/sparrowwallet/sparrow/net/TcpTransport.java

16
src/main/java/com/sparrowwallet/sparrow/net/TcpTransport.java

@ -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) {

Loading…
Cancel
Save