summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2011-06-08 22:32:02 +0000
committerChristian Pointner <equinox@spreadspace.org>2011-06-08 22:32:02 +0000
commitdb6c4e39c0257a6069aad902d8f6eac44eb6e7f1 (patch)
treee4ee612b7de1f2ed52525835e8259feab79b5478
parentclient handling in seperate thread (diff)
added trivial http parser
-rw-r--r--src/gstdvbbackend.c19
-rw-r--r--src/streamer.c26
2 files changed, 35 insertions, 10 deletions
diff --git a/src/gstdvbbackend.c b/src/gstdvbbackend.c
index 007b505..729c161 100644
--- a/src/gstdvbbackend.c
+++ b/src/gstdvbbackend.c
@@ -92,22 +92,21 @@ int main_loop(options_t* opt)
return -1;
}
-// source = gst_element_factory_make ("dvbsrc", "dvb-source");
- source = gst_element_factory_make ("audiotestsrc", "dvb-source");
+ source = gst_element_factory_make ("dvbsrc", "dvb-source");
if(!source) {
log_printf(ERROR, "Error creating dvb source");
gst_object_unref(GST_OBJECT(pipeline));
gst_object_unref(GST_OBJECT(loop));
return -1;
}
- /* g_object_set(G_OBJECT(source), "adapter", 0, NULL); */
- /* g_object_set(G_OBJECT(source), "frontend", 0, NULL); */
- /* g_object_set(G_OBJECT(source), "frequency", 514000000, NULL); */
- /* g_object_set(G_OBJECT(source), "polarity", "H", NULL); */
- /* g_object_set(G_OBJECT(source), "pids", "5010:5011", NULL); */
- /* g_object_set(G_OBJECT(source), "modulation", 1, NULL); // QAM 16 */
- /* g_object_set(G_OBJECT(source), "trans-mode", 1, NULL); // 8k */
- /* g_object_set(G_OBJECT(source), "guard", 4, NULL); // AUTO */
+ g_object_set(G_OBJECT(source), "adapter", 0, NULL);
+ g_object_set(G_OBJECT(source), "frontend", 0, NULL);
+ g_object_set(G_OBJECT(source), "frequency", 514000000, NULL);
+ g_object_set(G_OBJECT(source), "polarity", "H", NULL);
+ g_object_set(G_OBJECT(source), "pids", "5010:5011", NULL);
+ g_object_set(G_OBJECT(source), "modulation", 1, NULL); // QAM 16
+ g_object_set(G_OBJECT(source), "trans-mode", 1, NULL); // 8k
+ g_object_set(G_OBJECT(source), "guard", 4, NULL); // AUTO
int ret = streamer_init(&streamer, loop, NULL, "9001");
if(ret) {
diff --git a/src/streamer.c b/src/streamer.c
index 4130a89..ae5f356 100644
--- a/src/streamer.c
+++ b/src/streamer.c
@@ -147,8 +147,34 @@ struct client_struct {
static gpointer client_thread_func(gpointer data)
{
struct client_struct *client = (struct client_struct*)data;
+
+ char buf;
+ int nlcnt = 0;
+ for(;;) {
+ int len = recv(client->fd_, &buf, 1, 0);
+ if(len!=1) {
+ free(client);
+ return NULL;
+ }
+
+ if(buf == '\n') nlcnt++;
+ else nlcnt = 0;
+
+ if(nlcnt >= 2)
+ break;
+ }
+
+ char* answer = "HTTP/1.0 200 OK\n\n";
+ int written = 0;
+ for(;;) {
+ written = send(client->fd_, &answer[written], sizeof(answer) - written, 0);
+ if(written == sizeof(answer))
+ break;
+ }
+
add_fd(client->streamer_, client->fd_);
free(client);
+ return NULL;
}
static gpointer streamer_thread_func(gpointer data)