diff --git a/Connector_RTMP/chunkstream.cpp b/Connector_RTMP/chunkstream.cpp index 019118b5..8edf2016 100644 --- a/Connector_RTMP/chunkstream.cpp +++ b/Connector_RTMP/chunkstream.cpp @@ -484,7 +484,7 @@ chunkpack getWholeChunk(){ if (!clean){gwc_complete.data = 0; clean = true;}//prevent brain damage chunkpack * ret = 0; scrubChunk(gwc_complete); - while (counter < 10000){ + while (counter < 1000){ gwc_next = getChunk(); ret = AddChunkPart(gwc_next); scrubChunk(gwc_next); @@ -493,7 +493,7 @@ chunkpack getWholeChunk(){ free(ret);//cleanup returned chunk return gwc_complete; } - if (socketError){break;} + if (socketError || socketBlocking){break;} counter++; } gwc_complete.msg_type_id = 0; diff --git a/util/ddv_socket.cpp b/util/ddv_socket.cpp index 0c14a371..1d3efd69 100644 --- a/util/ddv_socket.cpp +++ b/util/ddv_socket.cpp @@ -9,6 +9,7 @@ #include bool socketError = false; +bool socketBlocking = false; int DDV_OpenUnix(const char adres[], bool nonblock = false){ int s = socket(AF_UNIX, SOCK_STREAM, 0); @@ -67,11 +68,12 @@ int DDV_Accept(int sock, bool nonblock = false){ bool DDV_write(void * buffer, int todo, int sock){ int sofar = 0; + socketBlocking = false; while (sofar != todo){ int r = send(sock, (char*)buffer + sofar, todo-sofar, 0); if (r <= 0){ switch (errno){ - case EWOULDBLOCK: printf("Would block\n"); break; + case EWOULDBLOCK: printf("Would block\n"); socketBlocking = true; break; default: socketError = true; printf("Could not write! %s\n", strerror(errno)); @@ -86,11 +88,12 @@ bool DDV_write(void * buffer, int todo, int sock){ bool DDV_read(void * buffer, int todo, int sock){ int sofar = 0; + socketBlocking = false; while (sofar != todo){ int r = recv(sock, (char*)buffer + sofar, todo-sofar, 0); if (r <= 0){ switch (errno){ - case EWOULDBLOCK: printf("Read: Would block\n"); break; + case EWOULDBLOCK: printf("Read: Would block\n"); socketBlocking = true; break; default: socketError = true; printf("Could not read! %s\n", strerror(errno));