diff options
-rw-r--r-- | media/libstagefright/rtsp/MyHandler.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/media/libstagefright/rtsp/MyHandler.h b/media/libstagefright/rtsp/MyHandler.h index 2eea5c9..916a67c 100644 --- a/media/libstagefright/rtsp/MyHandler.h +++ b/media/libstagefright/rtsp/MyHandler.h @@ -66,6 +66,8 @@ static int64_t kDefaultKeepAliveTimeoutUs = 60000000ll; static int64_t kPauseDelayUs = 3000000ll; +static int64_t kTearDownTimeoutUs = 3000000ll; + namespace android { static bool GetAttribute(const char *s, const char *key, AString *value) { @@ -944,6 +946,15 @@ struct MyHandler : public AHandler { request.append("\r\n"); mConn->sendRequest(request.c_str(), reply); + + // If the response of teardown hasn't been received in 3 seconds, + // post 'tear' message to avoid ANR. + if (!msg->findInt32("reconnect", &reconnect) || !reconnect) { + sp<AMessage> teardown = new AMessage('tear', this); + teardown->setInt32("result", -ECONNABORTED); + teardown->post(kTearDownTimeoutUs); + } + break; } |