Local CHPP Transport Reset Should Not Trigger App Reset
This will prevent a subsequent reopen failure
Bug: 184290502
Test: atest --host chre_chpp_linux_tests -c, load on device
Change-Id: I11480c0eec5a6a0c33a885bd7ea7c29d4ad449af
diff --git a/chpp/app.c b/chpp/app.c
index 1292ce2..e20da4d 100644
--- a/chpp/app.c
+++ b/chpp/app.c
@@ -691,7 +691,7 @@
chppDatagramProcessDoneCb(context->transportContext, buf);
}
-void chppAppProcessRxReset(struct ChppAppState *context) {
+void chppAppProcessReset(struct ChppAppState *context) {
#ifdef CHPP_CLIENT_ENABLED_DISCOVERY
if (!context->isDiscoveryComplete) {
chppInitiateDiscovery(context);
diff --git a/chpp/include/chpp/app.h b/chpp/include/chpp/app.h
index eea7013..943206b 100644
--- a/chpp/include/chpp/app.h
+++ b/chpp/include/chpp/app.h
@@ -452,7 +452,7 @@
* @param buf Input data. Cannot be null.
* @param len Length of input data in bytes.
*/
-void chppAppProcessRxReset(struct ChppAppState *context);
+void chppAppProcessReset(struct ChppAppState *context);
/**
* Convert UUID to a human-readable, null-terminated string.
diff --git a/chpp/transport.c b/chpp/transport.c
index ce17a0b..8c13b65 100644
--- a/chpp/transport.c
+++ b/chpp/transport.c
@@ -1125,12 +1125,14 @@
transportContext->rxHeader.packetCode;
transportContext->rxStatus.expectedSeq = transportContext->rxHeader.seq + 1;
- // Send reset-ACK
+ // Send reset or reset-ACK
chppMutexUnlock(&transportContext->mutex);
chppTransportSendReset(transportContext, resetType, error);
// Inform the App Layer
- chppAppProcessRxReset(appContext);
+ if (resetType == CHPP_TRANSPORT_ATTR_RESET_ACK) {
+ chppAppProcessReset(appContext);
+ }
}
/************************************************