Previously, when URL or password where not set correctly (or when some network errors occur), the error message was "no DAV locking support". --- http-push.c | 6 ++++++ http.c | 25 +++++++++++++++++++++++++ http.h | 1 + 3 files changed, 32 insertions(+), 0 deletions(-) diff --git a/http-push.c b/http-push.c index e1984d3..c984d84 100644 --- a/http-push.c +++ b/http-push.c @@ -2228,6 +2228,12 @@ int main(int argc, char **argv) no_pragma_header = curl_slist_append(no_pragma_header, "Pragma:"); + if (!http_test_connection(remote->url)) { + fprintf(stderr, "Error: cannot access to remote URL (maybe malformed URL, network error or bad credentials)\n"); + rc = 1; + goto cleanup; + } + /* Verify DAV compliance/lock support */ if (!locking_available()) { fprintf(stderr, "Error: no DAV locking support on remote repo %s\n", remote->url); diff --git a/http.c b/http.c index d2c11ae..8b04ae9 100644 --- a/http.c +++ b/http.c @@ -634,3 +634,28 @@ int http_fetch_ref(const char *base, const char *ref, unsigned char *sha1) free(url); return ret; } + +int http_test_connection(const char *url) +{ + struct strbuf buffer = STRBUF_INIT; + struct active_request_slot *slot; + struct slot_results results; + int ret = 0; + + slot = get_active_slot(); + slot->results = &results; + curl_easy_setopt(slot->curl, CURLOPT_FILE, &buffer); + curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_buffer); + curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, NULL); + curl_easy_setopt(slot->curl, CURLOPT_URL, url); + if (start_active_slot(slot)) { + run_active_slot(slot); + if (results.curl_result == CURLE_OK) + ret = -1; + else + error("Cannot access to URL %s, return code %d", url, results.curl_result); + } else + error("Unable to start request"); + strbuf_release(&buffer); + return ret; +} diff --git a/http.h b/http.h index aeba930..b353007 100644 --- a/http.h +++ b/http.h @@ -77,6 +77,7 @@ extern void step_active_slots(void); extern void http_init(void); extern void http_cleanup(void); +extern int http_test_connection(const char *url); extern int data_received; extern int active_requests; -- 1.5.4.rc3.52.g9a5bd-dirty - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html