From: michael <michael>
Date: Sat, 1 Jul 2006 22:41:47 +0000 (+0000)
Subject: more http-checks, some fixes
X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/record-dvb/commitdiff_plain/4710a9f88a22ea44ad4ec216e6c379783e1079e3?ds=sidebyside;hp=9fbd8130d45c8218eaea28d13f7bf53de0bffa39

more http-checks, some fixes
---

diff --git a/http.c b/http.c
index eee7345..ab798d9 100644
--- a/http.c
+++ b/http.c
@@ -91,8 +91,7 @@ int open_http(char *url)
 
 				pos = buffer;
 				while (*pos != 0) {
-					if (*pos == ' ') {
-						pos++;
+					if (*(pos++) == ' ') {
 						if(strncmp("200", pos, 3)) {
 							fprintf(stderr, "Wrong result-code: %s\n", buffer);
 							return -1;
@@ -100,7 +99,11 @@ int open_http(char *url)
 							break;
 						}
 					}
-					pos++;
+
+					if (*(++pos) == 0) {
+						fprintf(stderr, "Wrong answer from server: %s\n", buffer);
+						return -1;
+					}
 				}
 			}
 
diff --git a/record-dvb.c b/record-dvb.c
index bc47ecf..02fcd51 100644
--- a/record-dvb.c
+++ b/record-dvb.c
@@ -13,24 +13,23 @@
 #include "http.h"
 #include "mcast.h"
 
-#define CHUNKSIZE 1500
+#define CHUNKSIZE 3000
 #define GTOD_INTERVAL 100
 
 void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
 {
 	struct timeval start, curr;
-	int bytes, written, count = 0;
+	int bytes, recvd, written, count = 0;
 	char buffer[CHUNKSIZE];
-	int i;
 	int in, out;
 
-	if ((out = open(outfile, O_CREAT|O_TRUNC|O_WRONLY|O_LARGEFILE, 00644)) < 0) {
-		perror("open");
+	if ((in = (*open_fn)(url)) < 0) {
+		fprintf(stderr,"Can't open url %s!\n",url);
 		exit(EXIT_FAILURE);
 	}
 
-	if ((in = (*open_fn)(url)) < 0) {
-		fprintf(stderr,"Can't open url %s!\n",url);
+	if ((out = open(outfile, O_CREAT|O_TRUNC|O_WRONLY|O_LARGEFILE, 00644)) < 0) {
+		perror("open");
 		exit(EXIT_FAILURE);
 	}
 
@@ -40,7 +39,7 @@ void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
 	curr = start;
 
 	do {
-		if ((bytes = recv(in, buffer, CHUNKSIZE, 0)) < 1) {
+		if ((recvd = recv(in, buffer, CHUNKSIZE, 0)) < 1) {
 			/* TODO: Insert better connection-loss recovery here */
 			if ((in = (*open_fn)(url)) < 0) {
 				sleep(1);
@@ -49,16 +48,14 @@ void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
 		}
 		written = 0;
 		do {
-			if ((i = write(out, buffer, bytes-written)) < 0) {
+			if ((bytes = write(out, buffer, recvd-written)) < 0) {
 				perror("write");
 				exit(EXIT_FAILURE);
 			}
-			written += i;
-		} while(written < bytes);
-
-		count++;
+			written += bytes;
+		} while(written < recvd);
 
-		if (!(count % GTOD_INTERVAL))
+		if (!(++count % GTOD_INTERVAL))
 			gettimeofday(&curr, NULL);
 	} while (curr.tv_sec < start.tv_sec+duration);