X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/record-dvb/blobdiff_plain/34d3d2846a69a1ae8c108e57e2539ac461b19328..8447845ff6a909797551483cab14a24e5bcf7888:/record-dvb.c diff --git a/record-dvb.c b/record-dvb.c index 38609a4..d87d3e7 100644 --- a/record-dvb.c +++ b/record-dvb.c @@ -12,9 +12,11 @@ #include "http.h" #include "mcast.h" +#include "sap.h" -#define CHUNKSIZE 3000 -#define GTOD_INTERVAL 100 +#define CHUNKSIZE 3000 +#define GTOD_INTERVAL 100 +#define MAX_ERROR_SLEEP 60 void record(int(*open_fn)(char *), char *url, char *outfile, int duration) { @@ -44,9 +46,12 @@ void record(int(*open_fn)(char *), char *url, char *outfile, int duration) sleep(error_sleep); printf("Reconnecting... "); if ((in = (*open_fn)(url)) < 0) { - if (error_sleep < 60) + if (error_sleep < MAX_ERROR_SLEEP) error_sleep *= 2; + if (error_sleep > MAX_ERROR_SLEEP) + error_sleep = MAX_ERROR_SLEEP; + printf("failed\n"); continue; } else { @@ -93,12 +98,20 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } + if (!is_http(url) && !is_mcast(url)) { + char *service_url; + if ((service_url = get_url_from_sap(url))) { + printf("SAP says: '%s' -> %s\n", url, service_url); + url = service_url; + } + } + if (is_http(url)) { open_fn = &open_http; } else if (is_mcast(url)) { open_fn = &open_mcast; } else { - printf("URL %s not supported!\n", url); + printf("URL '%s' not supported!\n", url); exit(EXIT_FAILURE); }