Introduce a 'disable-download-timeout' option
Add command line option ('--disable-download-timeout') and config file option ('DisableDownloadTimeout') to disable defaults for low speed limit and timeout on downloads. Use this if you have issues downloading files with proxy and/or security gateway. Signed-off-by: Christian Hesse <mail@eworm.de> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
64bd242863
commit
c635f185ba
9 changed files with 38 additions and 3 deletions
|
@ -193,6 +193,10 @@ Options
|
||||||
*\--confirm*::
|
*\--confirm*::
|
||||||
Cancels the effects of a previous '\--noconfirm'.
|
Cancels the effects of a previous '\--noconfirm'.
|
||||||
|
|
||||||
|
*\--disable-download-timeout*::
|
||||||
|
Disable defaults for low speed limit and timeout on downloads. Use this
|
||||||
|
if you have issues downloading files with proxy and/or security gateway.
|
||||||
|
|
||||||
|
|
||||||
Transaction Options (apply to '-S', '-R' and '-U')
|
Transaction Options (apply to '-S', '-R' and '-U')
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
|
|
|
@ -209,6 +209,10 @@ Options
|
||||||
Displays name, version and size of target packages formatted
|
Displays name, version and size of target packages formatted
|
||||||
as a table for upgrade, sync and remove operations.
|
as a table for upgrade, sync and remove operations.
|
||||||
|
|
||||||
|
*DisableDownloadTimeout*::
|
||||||
|
Disable defaults for low speed limit and timeout on downloads. Use this
|
||||||
|
if you have issues downloading files with proxy and/or security gateway.
|
||||||
|
|
||||||
|
|
||||||
Repository Sections
|
Repository Sections
|
||||||
-------------------
|
-------------------
|
||||||
|
|
|
@ -926,6 +926,8 @@ int alpm_option_set_local_file_siglevel(alpm_handle_t *handle, int level);
|
||||||
int alpm_option_get_remote_file_siglevel(alpm_handle_t *handle);
|
int alpm_option_get_remote_file_siglevel(alpm_handle_t *handle);
|
||||||
int alpm_option_set_remote_file_siglevel(alpm_handle_t *handle, int level);
|
int alpm_option_set_remote_file_siglevel(alpm_handle_t *handle, int level);
|
||||||
|
|
||||||
|
int alpm_option_set_disable_dl_timeout(alpm_handle_t *handle, unsigned short disable_dl_timeout);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/** @addtogroup alpm_api_databases Database Functions
|
/** @addtogroup alpm_api_databases Database Functions
|
||||||
|
|
|
@ -264,8 +264,10 @@ static void curl_set_handle_opts(struct dload_payload *payload,
|
||||||
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, dload_progress_cb);
|
curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, dload_progress_cb);
|
||||||
curl_easy_setopt(curl, CURLOPT_XFERINFODATA, (void *)payload);
|
curl_easy_setopt(curl, CURLOPT_XFERINFODATA, (void *)payload);
|
||||||
|
if(!handle->disable_dl_timeout) {
|
||||||
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1L);
|
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1L);
|
||||||
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);
|
curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);
|
||||||
|
}
|
||||||
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, dload_parseheader_cb);
|
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, dload_parseheader_cb);
|
||||||
curl_easy_setopt(curl, CURLOPT_HEADERDATA, (void *)payload);
|
curl_easy_setopt(curl, CURLOPT_HEADERDATA, (void *)payload);
|
||||||
curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);
|
curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);
|
||||||
|
|
|
@ -844,4 +844,14 @@ int SYMEXPORT alpm_option_get_remote_file_siglevel(alpm_handle_t *handle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SYMEXPORT alpm_option_set_disable_dl_timeout(alpm_handle_t *handle,
|
||||||
|
unsigned short disable_dl_timeout)
|
||||||
|
{
|
||||||
|
CHECK_HANDLE(handle, return -1);
|
||||||
|
#ifdef HAVE_LIBCURL
|
||||||
|
handle->disable_dl_timeout = disable_dl_timeout;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* vim: set noet: */
|
/* vim: set noet: */
|
||||||
|
|
|
@ -60,6 +60,7 @@ struct __alpm_handle_t {
|
||||||
#ifdef HAVE_LIBCURL
|
#ifdef HAVE_LIBCURL
|
||||||
/* libcurl handle */
|
/* libcurl handle */
|
||||||
CURL *curl; /* reusable curl_easy handle */
|
CURL *curl; /* reusable curl_easy handle */
|
||||||
|
unsigned short disable_dl_timeout;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_LIBGPGME
|
#ifdef HAVE_LIBGPGME
|
||||||
|
|
|
@ -498,6 +498,8 @@ static int _parse_options(const char *key, char *value,
|
||||||
config->color = isatty(fileno(stdout)) ? PM_COLOR_ON : PM_COLOR_OFF;
|
config->color = isatty(fileno(stdout)) ? PM_COLOR_ON : PM_COLOR_OFF;
|
||||||
enable_colors(config->color);
|
enable_colors(config->color);
|
||||||
}
|
}
|
||||||
|
} else if(strcmp(key, "DisableDownloadTimeout") == 0) {
|
||||||
|
config->disable_dl_timeout = 1;
|
||||||
} else {
|
} else {
|
||||||
pm_printf(ALPM_LOG_WARNING,
|
pm_printf(ALPM_LOG_WARNING,
|
||||||
_("config file %s, line %d: directive '%s' in section '%s' not recognized.\n"),
|
_("config file %s, line %d: directive '%s' in section '%s' not recognized.\n"),
|
||||||
|
@ -815,6 +817,8 @@ static int setup_libalpm(void)
|
||||||
alpm_option_set_noupgrades(handle, config->noupgrade);
|
alpm_option_set_noupgrades(handle, config->noupgrade);
|
||||||
alpm_option_set_noextracts(handle, config->noextract);
|
alpm_option_set_noextracts(handle, config->noextract);
|
||||||
|
|
||||||
|
alpm_option_set_disable_dl_timeout(handle, config->disable_dl_timeout);
|
||||||
|
|
||||||
for(i = config->assumeinstalled; i; i = i->next) {
|
for(i = config->assumeinstalled; i; i = i->next) {
|
||||||
char *entry = i->data;
|
char *entry = i->data;
|
||||||
alpm_depend_t *dep = alpm_dep_from_string(entry);
|
alpm_depend_t *dep = alpm_dep_from_string(entry);
|
||||||
|
|
|
@ -55,6 +55,7 @@ typedef struct __config_t {
|
||||||
unsigned short checkspace;
|
unsigned short checkspace;
|
||||||
unsigned short usesyslog;
|
unsigned short usesyslog;
|
||||||
unsigned short color;
|
unsigned short color;
|
||||||
|
unsigned short disable_dl_timeout;
|
||||||
double deltaratio;
|
double deltaratio;
|
||||||
char *arch;
|
char *arch;
|
||||||
char *print_format;
|
char *print_format;
|
||||||
|
@ -203,7 +204,8 @@ enum {
|
||||||
OP_VERBOSE,
|
OP_VERBOSE,
|
||||||
OP_DOWNLOADONLY,
|
OP_DOWNLOADONLY,
|
||||||
OP_REFRESH,
|
OP_REFRESH,
|
||||||
OP_ASSUMEINSTALLED
|
OP_ASSUMEINSTALLED,
|
||||||
|
OP_DISABLEDLTIMEOUT
|
||||||
};
|
};
|
||||||
|
|
||||||
/* clean method */
|
/* clean method */
|
||||||
|
|
|
@ -222,6 +222,8 @@ static void usage(int op, const char * const myname)
|
||||||
addlist(_(" --logfile <path> set an alternate log file\n"));
|
addlist(_(" --logfile <path> set an alternate log file\n"));
|
||||||
addlist(_(" --noconfirm do not ask for any confirmation\n"));
|
addlist(_(" --noconfirm do not ask for any confirmation\n"));
|
||||||
addlist(_(" --confirm always ask for confirmation\n"));
|
addlist(_(" --confirm always ask for confirmation\n"));
|
||||||
|
addlist(_(" --disable-download-timeout\n"
|
||||||
|
" use relaxed timeouts for download\n"));
|
||||||
}
|
}
|
||||||
list = alpm_list_msort(list, alpm_list_count(list), options_cmp);
|
list = alpm_list_msort(list, alpm_list_count(list), options_cmp);
|
||||||
for(i = list; i; i = alpm_list_next(i)) {
|
for(i = list; i; i = alpm_list_next(i)) {
|
||||||
|
@ -444,6 +446,9 @@ static int parsearg_global(int opt)
|
||||||
free(config->rootdir);
|
free(config->rootdir);
|
||||||
config->rootdir = strdup(optarg);
|
config->rootdir = strdup(optarg);
|
||||||
break;
|
break;
|
||||||
|
case OP_DISABLEDLTIMEOUT:
|
||||||
|
config->disable_dl_timeout = 1;
|
||||||
|
break;
|
||||||
case OP_VERBOSE:
|
case OP_VERBOSE:
|
||||||
case 'v':
|
case 'v':
|
||||||
(config->verbose)++;
|
(config->verbose)++;
|
||||||
|
@ -939,6 +944,7 @@ static int parseargs(int argc, char *argv[])
|
||||||
{"gpgdir", required_argument, 0, OP_GPGDIR},
|
{"gpgdir", required_argument, 0, OP_GPGDIR},
|
||||||
{"dbonly", no_argument, 0, OP_DBONLY},
|
{"dbonly", no_argument, 0, OP_DBONLY},
|
||||||
{"color", required_argument, 0, OP_COLOR},
|
{"color", required_argument, 0, OP_COLOR},
|
||||||
|
{"disable-download-timeout", no_argument, 0, OP_DISABLEDLTIMEOUT},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue