summaryrefslogtreecommitdiff
path: root/src/input/librtsp/rtsp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/input/librtsp/rtsp.c')
-rw-r--r--src/input/librtsp/rtsp.c42
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;