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;
break;
}
}
- pos++;
+
+ if (*(++pos) == 0) {
+ fprintf(stderr, "Wrong answer from server: %s\n", buffer);
+ return -1;
+ }
}
}
#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);
}
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);
}
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);