diff options
Diffstat (limited to 'src/input/librtsp/rtsp.c')
-rw-r--r-- | src/input/librtsp/rtsp.c | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/src/input/librtsp/rtsp.c b/src/input/librtsp/rtsp.c index c660751fe..cc1f398ac 100644 --- a/src/input/librtsp/rtsp.c +++ b/src/input/librtsp/rtsp.c @@ -21,6 +21,10 @@ * *not* RFC 2326 compilant yet. */ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + #include <config.h> #include <unistd.h> @@ -123,8 +127,8 @@ static char *rtsp_get(rtsp_t *s) { static void rtsp_put(rtsp_t *s, const char *string) { - int len=strlen(string); - char buf[len+2]; + size_t len=strlen(string); + char *buf = malloc(sizeof(char)*len+2); lprintf(">> '%s'", string); @@ -169,9 +173,9 @@ static int rtsp_get_code(rtsp_t *s, const char *string) { static void rtsp_send_request(rtsp_t *s, const char *type, const char *what) { char **payload=s->scheduled; - char buf[strlen(type)+strlen(what)+strlen(rtsp_protocol_version)+3]; + char *buf; - sprintf(buf,"%s %s %s",type, what, rtsp_protocol_version); + asprintf(&buf,"%s %s %s",type, what, rtsp_protocol_version); rtsp_put(s,buf); if (payload) @@ -195,8 +199,8 @@ static void rtsp_schedule_standard(rtsp_t *s) { rtsp_schedule_field(s, tmp); if (s->session) { - char buf[strlen(s->session)+15]; - sprintf(buf, "Session: %s", s->session); + char *buf; + asprintf(&buf, "Session: %s", s->session); rtsp_schedule_field(s, buf); } } @@ -226,35 +230,31 @@ static int rtsp_get_answers(rtsp_t *s) { if (!answer) return 0; - if (!strncasecmp(answer,"Cseq:",5)) { - sscanf(answer,"%*s %u",&answer_seq); + if (!strncasecmp(answer,"Cseq: ",6)) { + sscanf(answer+6,"%u",&answer_seq); if (s->cseq != answer_seq) { lprintf("warning: Cseq mismatch. got %u, assumed %u", answer_seq, s->cseq); s->cseq=answer_seq; } } - if (!strncasecmp(answer,"Server:",7)) { - char buf[strlen(answer)]; - sscanf(answer,"%*s %s",buf); - if (s->server) free(s->server); - s->server=strdup(buf); + if (!strncasecmp(answer,"Server: ",8)) { + free(s->server); + s->server = strdup(answer + 8); } - if (!strncasecmp(answer,"Session:",8)) { - char buf[strlen(answer)]; - sscanf(answer,"%*s %s",buf); + if (!strncasecmp(answer,"Session: ",9)) { + char *tmp = answer + 9; if (s->session) { - if (strcmp(buf, s->session)) { + if (strcmp(tmp, s->session)) { xprintf(s->stream->xine, XINE_VERBOSITY_DEBUG, - "rtsp: warning: setting NEW session: %s\n", buf); - free(s->session); - s->session=strdup(buf); + "rtsp: warning: setting NEW session: %s\n", tmp); + s->session=strdup(tmp); } } else { lprintf("setting session id to: %s\n", buf); - s->session=strdup(buf); + s->session=strdup(tmp); } } *answer_ptr=answer; |