static struct timeval autoplay_barrier;
extern struct misc_meta_data *mmd;
-extern struct sender senders[];
+
+extern void dccp_send_init(struct sender *);
+extern void http_send_init(struct sender *);
+extern void ortp_send_init(struct sender *);
+
+/** the list of supported senders */
+struct sender senders[] = {
+ {
+ .name = "http",
+ .init = http_send_init,
+ },
+ {
+ .name = "dccp",
+ .init = dccp_send_init,
+ },
+#ifdef HAVE_ORTP
+ {
+ .name = "ortp",
+ .init = ortp_send_init,
+ },
+#endif
+ {
+ .name = NULL,
+ }
+};
+
+
static char *map;
}
free(hn);
free(home);
+ mmd->sender_cmd_data.cmd_num = -1;
if (conf.autoplay_given) {
struct timeval now, tmp;
mmd->vss_status_flags |= VSS_PLAYING;
struct timeval now;
char *tmp;
+ if (!map)
+ return;
if (mmd->new_vss_status_flags & VSS_NOMORE)
mmd->new_vss_status_flags = VSS_NEXT;
gettimeofday(&now, NULL);
tv_add(&mmd->afd.afhi.eof_tv, &now, &eof_barrier);
- munmap(map, mmd->size);
+ para_munmap(map, mmd->size);
map = NULL;
mmd->chunks_sent = 0;
mmd->offset = 0;
{
int ret, i;
+ if (mmd->sender_cmd_data.cmd_num >= 0) {
+ int num = mmd->sender_cmd_data.cmd_num,
+ s = mmd->sender_cmd_data.sender_num;
+
+ if (senders[s].client_cmds[num])
+ senders[s].client_cmds[num](&mmd->sender_cmd_data);
+ mmd->sender_cmd_data.cmd_num = -1;
+ }
if (afsss != AFS_SOCKET_CHECK_FOR_WRITE) {
if (FD_ISSET(afs_socket, rfds))
recv_afs_result();