1
0
mirror of https://gitlab.xiph.org/xiph/icecast-server.git synced 2024-12-04 14:46:30 -05:00

Fix for possible obscure bug leading to source disconnects.

svn path=/trunk/icecast/; revision=3975
This commit is contained in:
Michael Smith 2002-10-03 14:07:34 +00:00
parent ed94b193c2
commit e0054eb3ea

View File

@ -148,6 +148,7 @@ void *source_main(void *arg)
stats_event(source->mount, "type", source->format->format_description); stats_event(source->mount, "type", source->format->format_description);
while (global.running == ICE_RUNNING) { while (global.running == ICE_RUNNING) {
bytes = 0;
ret = source->format->get_buffer(source->format, NULL, 0, &refbuf); ret = source->format->get_buffer(source->format, NULL, 0, &refbuf);
if(ret < 0) { if(ret < 0) {
WARN0("Bad data from source"); WARN0("Bad data from source");
@ -159,13 +160,18 @@ void *source_main(void *arg)
ret = util_timed_wait_for_fd(source->con->sock, timeout*1000); ret = util_timed_wait_for_fd(source->con->sock, timeout*1000);
if (ret <= 0) { /* timeout expired */ if (ret <= 0) { /* timeout expired */
WARN1("Disconnecting source: socket timeout (%d s) expired",
timeout);
bytes = 0; bytes = 0;
break; break;
} }
bytes = sock_read_bytes(source->con->sock, buffer, 4096); bytes = sock_read_bytes(source->con->sock, buffer, 4096);
if (bytes == 0 || (bytes < 0 && !sock_recoverable(sock_error()))) if (bytes == 0 || (bytes < 0 && !sock_recoverable(sock_error()))) {
DEBUG1("Disconnecting source due to socket read error: %s",
strerror(sock_error()));
break; break;
}
} }
if (bytes <= 0) break; if (bytes <= 0) break;
source->client->con->sent_bytes += bytes; source->client->con->sent_bytes += bytes;