X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=src%2Fdata%2Fgrits-http.c;h=3b0c83ebd6c9fa8774db46cd63b009043a87fc92;hb=016efba1ae80a50c991947fa74723b392dc1cec6;hp=943441dfa55a892521c05c873ceb19c9dc137b6d;hpb=75df11f7088dac5301deec551d7458d9572f1848;p=grits diff --git a/src/data/grits-http.c b/src/data/grits-http.c index 943441d..3b0c83e 100644 --- a/src/data/grits-http.c +++ b/src/data/grits-http.c @@ -54,6 +54,7 @@ GritsHttp *grits_http_new(const gchar *prefix) http->soup = soup_session_sync_new(); http->prefix = g_strdup(prefix); g_object_set(http->soup, "user-agent", PACKAGE_STRING, NULL); + g_object_set(http->soup, "timeout", 10, NULL); return http; } @@ -163,6 +164,10 @@ gchar *grits_http_fetch(GritsHttp *http, const gchar *uri, const char *local, if (!g_file_test(path, G_FILE_TEST_EXISTS)) part = g_strdup_printf("%s.part", path); FILE *fp = fopen_p(part, "ab"); + if (!fp) { + g_warning("GritsHttp: fetch - error opening %s", path); + return NULL; + } fseek(fp, 0, SEEK_END); // "a" is broken on Windows, twice /* Make temp data */ @@ -178,7 +183,8 @@ gchar *grits_http_fetch(GritsHttp *http, const gchar *uri, const char *local, if (message == NULL) g_error("message is null, cannot parse uri"); g_signal_connect(message, "got-chunk", G_CALLBACK(_chunk_cb), &info); - soup_message_headers_set_range(message->request_headers, ftell(fp), -1); + //if (ftell(fp) > 0) + soup_message_headers_set_range(message->request_headers, ftell(fp), -1); if (mode == GRITS_REFRESH) soup_message_headers_replace(message->request_headers, "Cache-Control", "max-age=0"); @@ -192,7 +198,9 @@ gchar *grits_http_fetch(GritsHttp *http, const gchar *uri, const char *local, } /* Finished */ - if (message->status_code == 416) { + if (message->status_code == SOUP_STATUS_CANCELLED) { + return NULL; + } else if (message->status_code == SOUP_STATUS_REQUESTED_RANGE_NOT_SATISFIABLE) { /* Range unsatisfiable, file already complete */ } else if (!SOUP_STATUS_IS_SUCCESSFUL(message->status_code)) { g_warning("GritsHttp: done_cb - error copying file, status=%d\n"