diff --git a/client/prototypes.h b/client/prototypes.h
index 2076972..4619615 100644
--- a/client/prototypes.h
+++ b/client/prototypes.h
@@ -805,6 +805,11 @@ TDNFShouldSyncMetadata(
int* pnShouldSync
);
+void
+print_curl_error(
+ const char *pszUrl
+ );
+
//validate.c
uint32_t
TDNFValidateCmdArgs(
diff --git a/client/remoterepo.c b/client/remoterepo.c
index 72bf268..e72e854 100644
--- a/client/remoterepo.c
+++ b/client/remoterepo.c
@@ -179,6 +179,22 @@ cleanup:
error:
if(pError)
{
+ if(!IsNullOrEmptyString(pszBaseUrl) ||
+ !IsNullOrEmptyString(pszHyPackage))
+ {
+ char *pszUrl = NULL;
+ dwError = TDNFAllocateStringPrintf(
+ &pszUrl,
+ "%s/%s",
+ pszBaseUrl,
+ pszHyPackage
+ );
+ if(dwError == 0)
+ {
+ print_curl_error(pszUrl);
+ }
+ TDNF_SAFE_FREE_MEMORY(pszUrl);
+ }
fprintf(
stderr,
"Error during download: %d: %s\n",
diff --git a/client/repo.c b/client/repo.c
index 1cb6870..eecb285 100644
--- a/client/repo.c
+++ b/client/repo.c
@@ -45,6 +45,7 @@ TDNFInitRepo(
PTDNF_CONF pConf = NULL;
HyRepo hRepo = NULL;
+ GError *pError = NULL;
if(!pTdnf || !pTdnf->pConf || !pRepoData || !phRepo)
{
@@ -141,7 +142,7 @@ TDNFInitRepo(
lr_handle_setopt(hLibRepo, NULL, LRO_LOCAL, nLocalOnly);
- bRet = lr_handle_perform(hLibRepo, pResult, NULL);
+ bRet = lr_handle_perform(hLibRepo, pResult, &pError);
if(!bRet)
{
dwError = ERROR_TDNF_REPO_PERFORM;
@@ -196,6 +197,10 @@ cleanup:
{
lr_handle_free(hLibRepo);
}
+ if(pError)
+ {
+ g_error_free(pError);
+ }
return dwError;
error:
@@ -203,6 +208,10 @@ error:
//remove any cache data that could be potentially corrupt.
if(pRepoData)
{
+ if(pError && !IsNullOrEmptyString(pRepoData->pszBaseUrl))
+ {
+ print_curl_error(pRepoData->pszBaseUrl);
+ }
fprintf(
stderr,
"Error: Failed to synchronize cache for repo '%s' from '%s'\n",
diff --git a/client/rpmtrans.c b/client/rpmtrans.c
index c0a3145..7cae5a8 100644
--- a/client/rpmtrans.c
+++ b/client/rpmtrans.c
@@ -753,7 +753,7 @@ TDNFRemoveCachedRpms(
for(dwIndex = 0; dwIndex < pCachedRpmsArray->len; ++dwIndex)
{
pszCachedRpm = g_array_index(pCachedRpmsArray, char*, dwIndex);
- if(IsNullOrEmptyString(pszCachedRpm))
+ if(!IsNullOrEmptyString(pszCachedRpm))
{
if(unlink(pszCachedRpm))
{
diff --git a/client/utils.c b/client/utils.c
index 364434e..d9eb758 100644
--- a/client/utils.c
+++ b/client/utils.c
@@ -603,3 +603,64 @@ error:
}
goto cleanup;
}
+
+void
+print_curl_error(
+ const char *pszUrl
+ )
+{
+ CURLcode dwError = 0;
+ CURL *pCurl = NULL;
+ long nStatus = 0;
+
+ if(IsNullOrEmptyString(pszUrl))
+ {
+ dwError = ERROR_TDNF_INVALID_PARAMETER;
+ BAIL_ON_TDNF_ERROR(dwError);
+ }
+
+ pCurl = curl_easy_init();
+ if(IsNullOrEmptyString(pszUrl))
+ {
+ dwError = ERROR_TDNF_OUT_OF_MEMORY;
+ BAIL_ON_TDNF_ERROR(dwError);
+ }
+
+ dwError = curl_easy_setopt(pCurl, CURLOPT_URL, pszUrl);
+ BAIL_ON_TDNF_ERROR(dwError);
+
+ dwError = curl_easy_setopt(pCurl, CURLOPT_NOBODY, 1);
+ BAIL_ON_TDNF_ERROR(dwError);
+
+ dwError = curl_easy_setopt(pCurl, CURLOPT_FOLLOWLOCATION, 1L);
+ BAIL_ON_TDNF_ERROR(dwError);
+
+ dwError = curl_easy_perform(pCurl);
+ if(dwError)
+ {
+ const char *pszError = curl_easy_strerror(dwError);
+ fprintf(stderr, "curl#%d: %s\n", dwError, pszError);
+ }
+ else
+ {
+ dwError = curl_easy_getinfo(
+ pCurl,
+ CURLINFO_RESPONSE_CODE,
+ &nStatus);
+ BAIL_ON_TDNF_ERROR(dwError);
+ if(nStatus >= 400)
+ {
+ fprintf(
+ stderr,
+ "Error: %ld when downloading %s\n. Please check repo url.\n",
+ nStatus,
+ pszUrl);
+ }
+ }
+error:
+ if(pCurl)
+ {
+ curl_easy_cleanup(pCurl);
+ }
+ return;
+}