diff --git a/service/src/com/android/server/connectivity/TcpKeepaliveController.java b/service/src/com/android/server/connectivity/TcpKeepaliveController.java index acfbb3cfa9..a9cb2fa91d 100644 --- a/service/src/com/android/server/connectivity/TcpKeepaliveController.java +++ b/service/src/com/android/server/connectivity/TcpKeepaliveController.java @@ -124,7 +124,12 @@ public class TcpKeepaliveController { final TcpKeepalivePacketDataParcelable tcpDetails = switchToRepairMode(fd); // TODO: consider building a TcpKeepalivePacketData directly from switchToRepairMode return fromStableParcelable(tcpDetails); - } catch (InvalidPacketException | InvalidSocketException e) { + // Use separate catch blocks: a combined catch would get wrongly optimized by R8 + // (b/226127213). + } catch (InvalidSocketException e) { + switchOutOfRepairMode(fd); + throw e; + } catch (InvalidPacketException e) { switchOutOfRepairMode(fd); throw e; }