Commit 51a269cd authored by Martin Storsjö's avatar Martin Storsjö Committed by Luca Abeni

Make sure the destination address is written as an IP address in the SDP

Patch by Martin Storsjo (martin AT martin DOT st)

Originally committed as revision 21163 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent a7494872
......@@ -25,6 +25,9 @@
#include "internal.h"
#include "avc.h"
#include "rtp.h"
#if CONFIG_NETWORK
#include "network.h"
#endif
#if CONFIG_RTP_MUXER
#define MAX_EXTRADATA_SIZE ((INT_MAX - 10) / 2)
......@@ -69,6 +72,37 @@ static void sdp_write_header(char *buff, int size, struct sdp_session_level *s)
s->start_time, s->end_time);
}
#if CONFIG_NETWORK
static void resolve_destination(char *dest_addr, int size)
{
struct addrinfo hints, *ai, *cur;
if (!dest_addr[0])
return;
/* Resolve the destination, since it must be written
* as a numeric IP address in the SDP. */
memset(&hints, 0, sizeof(hints));
/* We only support IPv4 addresses in the SDP at the moment. */
hints.ai_family = AF_INET;
if (getaddrinfo(dest_addr, NULL, &hints, &ai))
return;
for (cur = ai; cur; cur = cur->ai_next) {
if (cur->ai_family == AF_INET) {
getnameinfo(cur->ai_addr, cur->ai_addrlen, dest_addr, size,
NULL, 0, NI_NUMERICHOST);
break;
}
}
freeaddrinfo(ai);
}
#else
static void resolve_destination(char *dest_addr, int size)
{
}
#endif
static int sdp_get_address(char *dest_addr, int size, int *ttl, const char *url)
{
int port;
......@@ -303,6 +337,7 @@ int avf_sdp_create(AVFormatContext *ac[], int n_files, char *buff, int size)
ttl = 0;
if (n_files == 1) {
port = sdp_get_address(dst, sizeof(dst), &ttl, ac[0]->filename);
resolve_destination(dst, sizeof(dst));
if (dst[0]) {
s.dst_addr = dst;
s.ttl = ttl;
......@@ -314,6 +349,7 @@ int avf_sdp_create(AVFormatContext *ac[], int n_files, char *buff, int size)
for (i = 0; i < n_files; i++) {
if (n_files != 1) {
port = sdp_get_address(dst, sizeof(dst), &ttl, ac[i]->filename);
resolve_destination(dst, sizeof(dst));
}
for (j = 0; j < ac[i]->nb_streams; j++) {
sdp_write_media(buff, size,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment