Commit 9a9040ec by alexliyu7352 Committed by GitHub

Merge pull request #2428 from alexliyu7352/patch-56

避免服务器端返回content-length=0时,TsPlayer不能正确释放的问题
parents 2708c85d b3d4188f
...@@ -226,7 +226,7 @@ ssize_t HttpClient::onRecvHeader(const char *data, size_t len) { ...@@ -226,7 +226,7 @@ ssize_t HttpClient::onRecvHeader(const char *data, size_t len) {
if (_total_body_size == 0) { if (_total_body_size == 0) {
//后续没content,本次http请求结束 //后续没content,本次http请求结束
onResponseCompleted_l(SockException(Err_success, "success")); onResponseCompleted_l(SockException(Err_success, "The request is successful but has no body"));
return 0; return 0;
} }
...@@ -260,7 +260,7 @@ void HttpClient::onRecvContent(const char *data, size_t len) { ...@@ -260,7 +260,7 @@ void HttpClient::onRecvContent(const char *data, size_t len) {
if (_recved_body_size == (size_t)_total_body_size) { if (_recved_body_size == (size_t)_total_body_size) {
//content接收完毕 //content接收完毕
onResponseBody(data, len); onResponseBody(data, len);
onResponseCompleted_l(SockException(Err_success, "success")); onResponseCompleted_l(SockException(Err_success, "completed"));
return; return;
} }
...@@ -329,7 +329,7 @@ void HttpClient::onResponseCompleted_l(const SockException &ex) { ...@@ -329,7 +329,7 @@ void HttpClient::onResponseCompleted_l(const SockException &ex) {
if (_total_body_size > 0 && _recved_body_size >= (size_t)_total_body_size) { if (_total_body_size > 0 && _recved_body_size >= (size_t)_total_body_size) {
//回复header中有content-length信息,那么收到的body大于等于声明值则认为成功 //回复header中有content-length信息,那么收到的body大于等于声明值则认为成功
onResponseCompleted(SockException(Err_success, "success")); onResponseCompleted(SockException(Err_success, "read body completed"));
return; return;
} }
......
...@@ -34,7 +34,12 @@ void TsPlayer::teardown() { ...@@ -34,7 +34,12 @@ void TsPlayer::teardown() {
void TsPlayer::onResponseCompleted(const SockException &ex) { void TsPlayer::onResponseCompleted(const SockException &ex) {
if (!_play_result) { if (!_play_result) {
_play_result = true; _play_result = true;
if (!ex && responseBodyTotalSize() == 0 && responseBodySize() == 0) {
//if the server does not return any data, it is considered a failure
onShutdown(ex);
} else {
onPlayResult(ex); onPlayResult(ex);
}
} else { } else {
onShutdown(ex); onShutdown(ex);
} }
...@@ -44,7 +49,7 @@ void TsPlayer::onResponseCompleted(const SockException &ex) { ...@@ -44,7 +49,7 @@ void TsPlayer::onResponseCompleted(const SockException &ex) {
void TsPlayer::onResponseBody(const char *buf, size_t size) { void TsPlayer::onResponseBody(const char *buf, size_t size) {
if (!_play_result) { if (!_play_result) {
_play_result = true; _play_result = true;
onPlayResult(SockException(Err_success, "play http-ts success")); onPlayResult(SockException(Err_success, "read http-ts stream successfully"));
} }
if (!_benchmark_mode) { if (!_benchmark_mode) {
HttpTSPlayer::onResponseBody(buf, size); HttpTSPlayer::onResponseBody(buf, size);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论