On Tue, 24 Nov 2015, Luca Barbato wrote:

And forward the logging contexts when needed.
---
libavformat/rtsp.c    | 27 ++++++++++++++++++---------
libavformat/rtsp.h    |  3 ++-
libavformat/rtspdec.c |  2 +-
3 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 5973f9b..57ce973 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -178,12 +178,19 @@ static void rtsp_parse_range_npt(const char *p, int64_t 
*start, int64_t *end)
    }
}

-static int get_sockaddr(const char *buf, struct sockaddr_storage *sock)
+static int get_sockaddr(AVFormatContext *s,
+                        const char *buf, struct sockaddr_storage *sock)
{
    struct addrinfo hints = { 0 }, *ai = NULL;
+    int ret;
+
    hints.ai_flags = AI_NUMERICHOST;
-    if (getaddrinfo(buf, NULL, &hints, &ai))
+    if ((ret = getaddrinfo(buf, NULL, &hints, &ai))) {
+        av_log(s, AV_LOG_ERROR, "getaddrinfo(%s): %s\n",
+               buf,
+               gai_strerror(ret));
        return -1;
+    }
    memcpy(sock, ai->ai_addr, FFMIN(sizeof(*sock), ai->ai_addrlen));
    freeaddrinfo(ai);
    return 0;
@@ -391,7 +398,7 @@ static void sdp_parse_line(AVFormatContext *s, 
SDPParseState *s1,
        if (strcmp(buf1, "IP4") && strcmp(buf1, "IP6"))
            return;
        get_word_sep(buf1, sizeof(buf1), "/", &p);
-        if (get_sockaddr(buf1, &sdp_ip))
+        if (get_sockaddr(s, buf1, &sdp_ip))
            return;
        ttl = 16;
        if (*p == '/') {
@@ -853,7 +860,8 @@ static void rtsp_parse_range(int *min_ptr, int *max_ptr, 
const char **pp)
}

/* XXX: only one transport specification is parsed */
-static void rtsp_parse_transport(RTSPMessageHeader *reply, const char *p)
+static void rtsp_parse_transport(AVFormatContext *s,
+                                 RTSPMessageHeader *reply, const char *p)
{
    char transport_protocol[16];
    char profile[16];
@@ -945,7 +953,7 @@ static void rtsp_parse_transport(RTSPMessageHeader *reply, 
const char *p)
                if (*p == '=') {
                    p++;
                    get_word_sep(buf, sizeof(buf), ";,", &p);
-                    get_sockaddr(buf, &th->destination);
+                    get_sockaddr(s, buf, &th->destination);
                }
            } else if (!strcmp(parameter, "source")) {
                if (*p == '=') {
@@ -1032,7 +1040,8 @@ static void rtsp_parse_rtp_info(RTSPState *rt, const char 
*p)
        handle_rtp_info(rt, url, seq, rtptime);
}

-void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf,
+void ff_rtsp_parse_line(AVFormatContext *s,
+                        RTSPMessageHeader *reply, const char *buf,
                        RTSPState *rt, const char *method)
{
    const char *p;
@@ -1049,7 +1058,7 @@ void ff_rtsp_parse_line(RTSPMessageHeader *reply, const 
char *buf,
    } else if (av_stristart(p, "Content-Length:", &p)) {
        reply->content_length = strtol(p, NULL, 10);
    } else if (av_stristart(p, "Transport:", &p)) {
-        rtsp_parse_transport(reply, p);
+        rtsp_parse_transport(s, reply, p);
    } else if (av_stristart(p, "CSeq:", &p)) {
        reply->seq = strtol(p, NULL, 10);
    } else if (av_stristart(p, "Range:", &p)) {
@@ -1178,7 +1187,7 @@ start:
                request = 1;
            }
        } else {
-            ff_rtsp_parse_line(reply, p, rt, method);
+            ff_rtsp_parse_line(s, reply, p, rt, method);
            av_strlcat(rt->last_reply, p,    sizeof(rt->last_reply));
            av_strlcat(rt->last_reply, "\n", sizeof(rt->last_reply));
        }
@@ -2258,7 +2267,7 @@ static int sdp_read_header(AVFormatContext *s)

    /* open each RTP stream */
    for (i = 0; i < rt->nb_rtsp_streams; i++) {
-        char namebuf[50];
+        char namebuf[50] = "\0";
        rtsp_st = rt->rtsp_streams[i];


This seems unrelated to the rest of the patch (and as far as I can see, after patch 1/4, it shouldn't be necessary either?) - the rest looks good.

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to