summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2011-06-08 22:51:58 +0000
committerChristian Pointner <equinox@spreadspace.org>2011-06-08 22:51:58 +0000
commitefbdb29d1b1a519b77771f1cb7d71b006404cc86 (patch)
treeec92dd2a0816c7a1dd827058f73aa7cab73aac9f
parentadded trivial http parser (diff)
first working version
-rw-r--r--src/streamer.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/streamer.c b/src/streamer.c
index ae5f356..2c108c9 100644
--- a/src/streamer.c
+++ b/src/streamer.c
@@ -78,7 +78,7 @@ int init_server(const char* host, const char* port)
struct sockaddr_in local_addr;
memset((char *) &local_addr, 0, sizeof(local_addr));
local_addr.sin_family = AF_INET;
- local_addr.sin_port = htons(9001);
+ local_addr.sin_port = htons(80);
local_addr.sin_addr.s_addr = htonl(INADDR_ANY);
int on = 1;
@@ -158,7 +158,7 @@ static gpointer client_thread_func(gpointer data)
}
if(buf == '\n') nlcnt++;
- else nlcnt = 0;
+ else if(buf != '\r') nlcnt = 0;
if(nlcnt >= 2)
break;
@@ -167,8 +167,14 @@ static gpointer client_thread_func(gpointer data)
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))
+ int len = send(client->fd_, &answer[written], strlen(answer) - written, 0);
+ if(len < 0) {
+ free(client);
+ return NULL;
+ }
+
+ written+=len;
+ if(written >= strlen(answer))
break;
}