From 8c22c07982d39b56fe8db639a17f5ff5833dbe83 Mon Sep 17 00:00:00 2001 From: louiscavalcante Date: Tue, 30 Dec 2025 14:14:51 -0400 Subject: [PATCH] fix: :bug: (android): Add null checks to prevent NullPointerException in TcpReceiverTask --- .../react/tcpsocket/TcpSocketClient.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/asterinet/react/tcpsocket/TcpSocketClient.java b/android/src/main/java/com/asterinet/react/tcpsocket/TcpSocketClient.java index 6ef8269..8ec32a2 100644 --- a/android/src/main/java/com/asterinet/react/tcpsocket/TcpSocketClient.java +++ b/android/src/main/java/com/asterinet/react/tcpsocket/TcpSocketClient.java @@ -216,11 +216,15 @@ public void setKeepAlive(final boolean enable, final int initialDelay) throws IO } public void pause() { - receiverTask.pause(); + if (receiverTask != null) { + receiverTask.pause(); + } } public void resume() { - receiverTask.resume(); + if (receiverTask != null) { + receiverTask.resume(); + } } /** @@ -246,6 +250,13 @@ public TcpReceiverTask(TcpSocketClient clientSocket, TcpEventListener receiverLi public void run() { int socketId = clientSocket.getId(); Socket socket = clientSocket.getSocket(); + + // Guard against null socket - can happen if destroy() is called + // before the receiver task starts, or if socket creation failed + if (socket == null) { + return; + } + byte[] buffer = new byte[16384]; try { BufferedInputStream in = new BufferedInputStream(socket.getInputStream()); @@ -259,7 +270,7 @@ public void run() { } } } catch (IOException | InterruptedException ioe) { - if (receiverListener != null && !socket.isClosed() && !clientSocket.closed) { + if (receiverListener != null && socket != null && !socket.isClosed() && !clientSocket.closed) { receiverListener.onError(socketId, ioe); } }