|
- #include "rtsp-server-internal.h"
- #include "http-header-content-type.h"
- #include "rfc822-datetime.h"
-
- int rtsp_server_announce(struct rtsp_server_t *rtsp, const char* uri)
- {
- const char* content;
- const char* pcontenttype;
- struct http_header_content_type_t content_type;
- memset(&content_type, 0, sizeof(content_type));
- pcontenttype = http_get_header_by_name(rtsp->parser, "Content-Type");
- if (!pcontenttype || 0 != http_header_content_type(pcontenttype, &content_type)
- || 0 != strcasecmp(content_type.media_type, "application")
- || 0 != strcasecmp(content_type.media_subtype, "sdp"))
- {
- // 406 Not Acceptable
- // 415 Unsupported Media Type ?
- return rtsp_server_reply(rtsp, 406);
- }
-
- content = (const char*)http_get_content(rtsp->parser);
- return rtsp->handler.onannounce(rtsp->param, rtsp, uri, content, (int)http_get_content_length(rtsp->parser));
- }
-
- int rtsp_server_reply_announce(struct rtsp_server_t *rtsp, int code)
- {
- int len;
- rfc822_datetime_t datetime;
-
- if (200 != code)
- return rtsp_server_reply(rtsp, code);
-
- len = snprintf(rtsp->reply, sizeof(rtsp->reply),
- "RTSP/1.0 200 OK\r\n"
- "CSeq: %u\r\n"
- "Date: %s\r\n"
- "\r\n",
- rtsp->cseq,
- rfc822_datetime_format(time(NULL), datetime));
-
- return rtsp->handler.send(rtsp->sendparam, rtsp->reply, len);
- }
|