para_fd_set(signal_pipe, &rfds, &max_fileno);
timeout = vss_preselect(&rfds, &wfds, &max_fileno);
status_refresh();
- for (i = 0; senders[i].name; i++) {
- if (!senders[i].pre_select)
- continue;
- senders[i].pre_select(&max_fileno, &rfds, &wfds);
- }
mmd_unlock();
ret = para_select(max_fileno + 1, &rfds, &wfds, timeout);
mmd_lock();
if (ret < 0)
goto repeat;
vss_post_select(&rfds, &wfds);
- for (i = 0; senders[i].name; i++) {
- if (!senders[i].post_select)
- continue;
- senders[i].post_select(&rfds, &wfds);
- }
- vss_send_chunk();
status_refresh();
if (FD_ISSET(signal_pipe, &rfds)) {
int sig;
if (!map || vss_next() || vss_paused() || vss_repos())
for (i = 0; senders[i].name; i++)
senders[i].shutdown_clients();
- if (vss_next()) {
+ if (vss_next())
vss_eof();
- goto out;
- }
- if (vss_paused()) {
+ else if (vss_paused()) {
if (mmd->chunks_sent) {
gettimeofday(&now, NULL);
tv_add(&mmd->afd.afhi.eof_tv, &now, &eof_barrier);
}
mmd->chunks_sent = 0;
- goto out;
- }
- if (vss_repos()) {
+ } else if (vss_repos()) {
gettimeofday(&now, NULL);
tv_add(&now, &announce_tv, &data_send_barrier);
tv_add(&mmd->afd.afhi.eof_tv, &now, &eof_barrier);
mmd->current_chunk = mmd->repos_request;
mmd->new_vss_status_flags &= ~VSS_REPOS;
}
-out:
+
if (need_to_request_new_audio_file()) {
PARA_DEBUG_LOG("ready and playing, but no audio file\n");
para_fd_set(afs_socket, wfds, max_fileno);
afsss = AFS_SOCKET_CHECK_FOR_WRITE;
} else
para_fd_set(afs_socket, rfds, max_fileno);
+ for (i = 0; senders[i].name; i++) {
+ if (!senders[i].pre_select)
+ continue;
+ senders[i].pre_select(max_fileno, rfds, wfds);
+ }
return vss_compute_timeout();
}
void vss_post_select(fd_set *rfds, fd_set *wfds)
{
- int ret;
+ int ret, i;
if (afsss != AFS_SOCKET_CHECK_FOR_WRITE) {
if (FD_ISSET(afs_socket, rfds))
recv_afs_result();
- return;
+ } else if (FD_ISSET(afs_socket, wfds)) {
+ PARA_NOTICE_LOG("requesting new fd from afs\n");
+ ret = send_buffer(afs_socket, "new");
+ afsss = AFS_SOCKET_AFD_PENDING;
}
- if (!FD_ISSET(afs_socket, wfds))
- return;
- PARA_NOTICE_LOG("requesting new fd from afs\n");
- ret = send_buffer(afs_socket, "new");
- afsss = AFS_SOCKET_AFD_PENDING;
+ for (i = 0; senders[i].name; i++) {
+ if (!senders[i].post_select)
+ continue;
+ senders[i].post_select(rfds, wfds);
+ }
+ vss_send_chunk();
}
/**