From 10ee8db9f4e008e17cb8c5363731e06df0348d4e Mon Sep 17 00:00:00 2001 From: Mateus Azis Date: Fri, 31 May 2024 14:30:52 -0700 Subject: [PATCH] Binder: address race condition where a new transport may attempt to start despite the server having shutdown already. Part of #10897. --- .../main/java/io/grpc/binder/internal/BinderServer.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/binder/src/main/java/io/grpc/binder/internal/BinderServer.java b/binder/src/main/java/io/grpc/binder/internal/BinderServer.java index 03af19c045a..26dd57e408d 100644 --- a/binder/src/main/java/io/grpc/binder/internal/BinderServer.java +++ b/binder/src/main/java/io/grpc/binder/internal/BinderServer.java @@ -135,6 +135,13 @@ public String toString() { @Override public synchronized boolean handleTransaction(int code, Parcel parcel) { + // It's possible that a transaction had started mid-server shutdown. In that case, should not + // proceed with the transport creation since classes like ActiveTransportListener are not + // expecting new transports. + if (shutdown) { + return false; + } + if (code == BinderTransport.SETUP_TRANSPORT) { int version = parcel.readInt(); // If the client-provided version is more recent, we accept the connection,