Added close socket and clean buffer to Downloader URIReader and InputHLS
This commit is contained in:
parent
503a9591c9
commit
12246581e6
3 changed files with 22 additions and 0 deletions
|
@ -87,6 +87,7 @@ namespace HTTP{
|
||||||
if (!proxied || needSSL){
|
if (!proxied || needSSL){
|
||||||
if (!getSocket() || link.host != connectedHost || link.getPort() != connectedPort || needSSL != ssl){
|
if (!getSocket() || link.host != connectedHost || link.getPort() != connectedPort || needSSL != ssl){
|
||||||
getSocket().close();
|
getSocket().close();
|
||||||
|
getSocket().Received().clear();
|
||||||
connectedHost = link.host;
|
connectedHost = link.host;
|
||||||
connectedPort = link.getPort();
|
connectedPort = link.getPort();
|
||||||
#ifdef SSL
|
#ifdef SSL
|
||||||
|
@ -102,6 +103,7 @@ namespace HTTP{
|
||||||
}else{
|
}else{
|
||||||
if (!getSocket() || proxyUrl.host != connectedHost || proxyUrl.getPort() != connectedPort || needSSL != ssl){
|
if (!getSocket() || proxyUrl.host != connectedHost || proxyUrl.getPort() != connectedPort || needSSL != ssl){
|
||||||
getSocket().close();
|
getSocket().close();
|
||||||
|
getSocket().Received().clear();
|
||||||
connectedHost = proxyUrl.host;
|
connectedHost = proxyUrl.host;
|
||||||
connectedPort = proxyUrl.getPort();
|
connectedPort = proxyUrl.getPort();
|
||||||
getSocket().open(connectedHost, connectedPort, true);
|
getSocket().open(connectedHost, connectedPort, true);
|
||||||
|
@ -195,6 +197,16 @@ namespace HTTP{
|
||||||
// Data! Check if we can parse it...
|
// Data! Check if we can parse it...
|
||||||
if (H.Read(getSocket())){
|
if (H.Read(getSocket())){
|
||||||
H.headerOnly = false;
|
H.headerOnly = false;
|
||||||
|
|
||||||
|
// If the return status code is invalid, close the socket, wipe all buffers, and return false
|
||||||
|
if(!getStatusCode()){
|
||||||
|
H.headerOnly = false;
|
||||||
|
getSocket().close();
|
||||||
|
getSocket().Received().clear();
|
||||||
|
H.Clean();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (shouldContinue()){
|
if (shouldContinue()){
|
||||||
if (maxRecursiveDepth == 0){
|
if (maxRecursiveDepth == 0){
|
||||||
FAIL_MSG("Maximum recursion depth reached");
|
FAIL_MSG("Maximum recursion depth reached");
|
||||||
|
|
|
@ -107,6 +107,9 @@ namespace HTTP{
|
||||||
if (!downer.head(myURI) || !downer.isOk()){
|
if (!downer.head(myURI) || !downer.isOk()){
|
||||||
FAIL_MSG("Error getting URI info for '%s': %" PRIu32 " %s", myURI.getUrl().c_str(),
|
FAIL_MSG("Error getting URI info for '%s': %" PRIu32 " %s", myURI.getUrl().c_str(),
|
||||||
downer.getStatusCode(), downer.getStatusText().c_str());
|
downer.getStatusCode(), downer.getStatusText().c_str());
|
||||||
|
// Close the socket, and clean up the buffer
|
||||||
|
downer.getSocket().close();
|
||||||
|
downer.getSocket().Received().clear();
|
||||||
if (!downer.isOk()){return false;}
|
if (!downer.isOk()){return false;}
|
||||||
supportRangeRequest = false;
|
supportRangeRequest = false;
|
||||||
totalSize = std::string::npos;
|
totalSize = std::string::npos;
|
||||||
|
@ -256,6 +259,8 @@ namespace HTTP{
|
||||||
void URIReader::close(){
|
void URIReader::close(){
|
||||||
// Close downloader socket if open
|
// Close downloader socket if open
|
||||||
downer.getSocket().close();
|
downer.getSocket().close();
|
||||||
|
downer.getSocket().Received().clear();
|
||||||
|
downer.getHTTP().Clean();
|
||||||
// Unmap file if mapped
|
// Unmap file if mapped
|
||||||
if (mapped){
|
if (mapped){
|
||||||
munmap(mapped, totalSize);
|
munmap(mapped, totalSize);
|
||||||
|
|
|
@ -679,6 +679,11 @@ namespace Mist{
|
||||||
break; // we have all tracks discovered, next playlist!
|
break; // we have all tracks discovered, next playlist!
|
||||||
}
|
}
|
||||||
}while (!segDowner.atEnd());
|
}while (!segDowner.atEnd());
|
||||||
|
if (!segDowner.atEnd()){
|
||||||
|
segDowner.close();
|
||||||
|
tsStream.clear();
|
||||||
|
}
|
||||||
|
|
||||||
if (prepidCounter < pidCounter){break;}// We're done reading this playlist!
|
if (prepidCounter < pidCounter){break;}// We're done reading this playlist!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue