diff options
author | Christian Pointner <equinox@spreadspace.org> | 2011-06-08 22:32:02 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2011-06-08 22:32:02 +0000 |
commit | db6c4e39c0257a6069aad902d8f6eac44eb6e7f1 (patch) | |
tree | e4ee612b7de1f2ed52525835e8259feab79b5478 /src/streamer.c | |
parent | client handling in seperate thread (diff) |
added trivial http parser
Diffstat (limited to 'src/streamer.c')
-rw-r--r-- | src/streamer.c | 26 |
1 files changed, 26 insertions, 0 deletions
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) |