forked from DeYangLiu/ffmpeg-streaming
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplugin_dvb.c
More file actions
68 lines (56 loc) · 1.66 KB
/
Copy pathplugin_dvb.c
File metadata and controls
68 lines (56 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
static int ignore_request(HTTPContext *c)
{
static const char *a[] = {
"js/",
NULL,
};
const char **ptr = a;
for(; *ptr; ++ptr){
if(!strcmp(c->url, *ptr))return 1;
}
return 0;
}
static int handle_control_request(HTTPContext *c, RequestData *rd)
{
char msg[128] = "";
char *q = NULL;
if(!strcmp(c->url, "digitalDvb/playerPermit")){
strcpy(msg, "<playerPermit> <status>true</status> <error>E000</error> </playerPermit>");
}else if(av_match_ext(c->url, "flv")){
c->keep_alive = 0;
}
if(!msg[0]){
return 0;
}
c->buffer[0] = 0;
av_strlcatf(c->buffer, c->buffer_size, "HTTP/1.1 200 OK\r\n");
av_strlcatf(c->buffer, c->buffer_size, "Pragma: no-cache\r\n");
av_strlcatf(c->buffer, c->buffer_size, "Content-Type: %s;charset=UTF-8\r\n", "application/xml");
av_strlcatf(c->buffer, c->buffer_size, "Content-Length: %d\r\n", strlen(msg));
if(c->post){
av_strlcatf(c->buffer, c->buffer_size, "Connection: Close\r\n");
if(rd->cookie[0])av_strlcatf(c->buffer, c->buffer_size, "Cookie: %s\r\n", rd->cookie);
c->post = 0; /*redirect post to get*/
}
av_strlcatf(c->buffer, c->buffer_size, "\r\n");
av_strlcatf(c->buffer, c->buffer_size, "%s", msg);
q = c->buffer + strlen(c->buffer);
c->http_error = 200;
c->buffer_ptr = c->buffer;
c->buffer_end = q;
c->state = HTTPSTATE_SEND_HEADER;
return 1;
}
static int plugin_dvb(HTTPContext *c, RequestData *rd)
{/*return 0 -- continue, >0 -- ok, stop, <0 -- send 404 error.*/
int ret = -1;
ret = ignore_request(c);
if(ret){
return -1;
}
ret = handle_control_request(c, rd);
if(ret != 0){
return ret;
}
return 0;
}