From: 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?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);