X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=ortp_send.c;h=4dd19d7d2cb183743ff0dee435692c44eff43e16;hp=dd4ee88409c3155853150c62736c6fa40ee4573c;hb=6e1de6469d0595740fd8350f435b0562d23d87fa;hpb=6570e0e4433a5e5d7987697716a1f993c96eb1bb diff --git a/ortp_send.c b/ortp_send.c index dd4ee884..4dd19d7d 100644 --- a/ortp_send.c +++ b/ortp_send.c @@ -78,15 +78,30 @@ static void ortp_send_buf(char *buf, int len, long unsigned chunks_sent) continue; WRITE_CHUNK_TS(buf, ot->chunk_ts); ts = ot->chunk_ts * chunks_sent; - ret = rtp_session_send_with_ts(ot->session, buf, len, ts); + ret = rtp_session_send_with_ts(ot->session, + (unsigned char*)buf, len, ts); ot->last_ts = ts; if (ret < 0) ortp_delete_target(ot, "send error"); - if (ret != len +12) + if (ret != len + 12) PARA_NOTICE_LOG("short write %d\n", ret); } } +static int set_multicast(RtpSession *s) +{ + unsigned char loop = 1; + int ret; + + ret = setsockopt(s->rtp.socket, + IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof(loop)); + if (ret < 0) { + PARA_ERROR_LOG("IP_MULTICAST_LOOP error %d\n", ret); + + } + return 1; +} + static void ortp_init_session(struct ortp_target *ot) { RtpSession *s; @@ -108,13 +123,15 @@ static void ortp_init_session(struct ortp_target *ot) if (ret < 0) { rtp_session_destroy(ot->session); ot->session = NULL; + return; } + set_multicast(s); } /* called by afs */ static void ortp_shutdown_targets(void) { - char buf[ORTP_AUDIO_HEADER_LEN]; + unsigned char buf[ORTP_AUDIO_HEADER_LEN]; struct ortp_target *ot, *tmp; WRITE_PACKET_TYPE(buf, ORTP_EOF); @@ -232,7 +249,7 @@ static void ortp_add_target(int port, struct in_addr *addr) ot->addr = *addr; PARA_INFO_LOG("adding to target list (%s:%d)\n", TARGET_ADDR(ot), ot->port); - list_add(&ot->node, &targets); + para_list_add(&ot->node, &targets); } static int ortp_com_add(struct sender_command_data *scd)