]> cvs.zerfleddert.de Git - record-dvb/commitdiff
more http-checks, some fixes
authormichael <michael>
Sat, 1 Jul 2006 22:41:47 +0000 (22:41 +0000)
committermichael <michael>
Sat, 1 Jul 2006 22:41:47 +0000 (22:41 +0000)
http.c
record-dvb.c

diff --git a/http.c b/http.c
index eee73454e763b0b5d5770954cfeeb7a146e8cad3..ab798d9956f64cd55ee030d05fe45a3cd101cd29 100644 (file)
--- 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;
+                                       }
                                }
                        }
 
index bc47ecfe3b60d7f3ee0293658826ad91dcfdca7a..02fcd5157c2d9d3ae17ae6231ebe19132144e8ca 100644 (file)
 #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);
 
Impressum, Datenschutz