- /* Calculate size */
- i_size = sizeof( "v=0\r\n" ) +
- sizeof( "o=- * * IN IP4 \r\n" ) + 10 + NI_MAXNUMERICHOST +
- sizeof( "c=IN IP4 0.0.0.0\r\n" ) + 20 + 10 +
- sizeof( "t=0 0\r\n" ) + /* FIXME */
- sizeof( "a=tool:"PACKAGE_STRING"\r\n" ) +
- sizeof( "a=range:npt=0-1000000000.000\r\n" );
-
- psz_control = (ipv == '6') ? p_media->psz_rtsp_control_v6
- : p_media->psz_rtsp_control_v4;
- for( i = 0; i < p_media->i_es; i++ )
- {
- media_es_t *p_es = p_media->es[i];
-
- i_size += sizeof( "m=**d*o * RTP/AVP *\r\n" ) + 19;
- if( p_es->psz_rtpmap )
- {
- i_size += sizeof( "a=rtpmap:* *\r\n" ) +
- strlen( p_es->psz_rtpmap ) + 9;
- }
- if( p_es->psz_fmtp )
- {
- i_size += sizeof( "a=fmtp:* *\r\n" ) +
- strlen( p_es->psz_fmtp ) + 9;
- }
- }
- i_size += (strlen( psz_control ) + strlen( ip ) + 9) * p_media->i_es;
-
- p = psz_sdp = malloc( i_size );
- p += sprintf( p, "v=0\r\n" );
- p += sprintf( p, "o=- %"PRId64" %d IN IP%c %s\r\n",
- p_media->i_sdp_id, p_media->i_sdp_version, ipv, ip );
+ /* Dummy destination address for RTSP */
+ struct sockaddr_storage dst;
+ socklen_t dstlen = ipv6 ? sizeof( struct sockaddr_in6 )
+ : sizeof( struct sockaddr_in );
+ memset (&dst, 0, dstlen);
+ dst.ss_family = ipv6 ? AF_INET6 : AF_INET;
+#ifdef HAVE_SA_LEN
+ dst.ss_len = dstlen;
+#endif