summaryrefslogtreecommitdiff
path: root/ffserver.c
diff options
context:
space:
mode:
authorMåns Rullgård <mans@mansr.com>2010-03-08 18:43:27 +0000
committerMåns Rullgård <mans@mansr.com>2010-03-08 18:43:27 +0000
commit22f73dccad7c43ea68eefd7d4ce9efff6c8f45c2 (patch)
tree33a3e9ed6b7252fb94eddd62e366b0091174fc90 /ffserver.c
parentf19a068ef656ecc8303290d89769f1a1a288236e (diff)
Move resolve_host() to ffserver.c
This deprecated function is only used by ffserver, yet does not have a prototype visible there. In the long term, ffserver should be made IPv6-aware. In the meantime, this change removes cruft from lavf and fixes some warnings in ffserver. Originally committed as revision 22329 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'ffserver.c')
-rw-r--r--ffserver.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/ffserver.c b/ffserver.c
index 1ab4bddf9e..bebb87c0aa 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -312,6 +312,42 @@ static AVLFG random_state;
static FILE *logfile = NULL;
+/* FIXME: make ffserver work with IPv6 */
+/* resolve host with also IP address parsing */
+static int resolve_host(struct in_addr *sin_addr, const char *hostname)
+{
+
+ if (!ff_inet_aton(hostname, sin_addr)) {
+#if HAVE_GETADDRINFO
+ struct addrinfo *ai, *cur;
+ struct addrinfo hints;
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_INET;
+ if (getaddrinfo(hostname, NULL, &hints, &ai))
+ return -1;
+ /* getaddrinfo returns a linked list of addrinfo structs.
+ * Even if we set ai_family = AF_INET above, make sure
+ * that the returned one actually is of the correct type. */
+ for (cur = ai; cur; cur = cur->ai_next) {
+ if (cur->ai_family == AF_INET) {
+ *sin_addr = ((struct sockaddr_in *)cur->ai_addr)->sin_addr;
+ freeaddrinfo(ai);
+ return 0;
+ }
+ }
+ freeaddrinfo(ai);
+ return -1;
+#else
+ struct hostent *hp;
+ hp = gethostbyname(hostname);
+ if (!hp)
+ return -1;
+ memcpy(sin_addr, hp->h_addr_list[0], sizeof(struct in_addr));
+#endif
+ }
+ return 0;
+}
+
static char *ctime1(char *buf2)
{
time_t ti;