Re: [pacman-dev] [PATCH rebased 1/1] Introduce a 'stupid-proxy' option

2016-11-11 Thread Christian Hesse
Martin Kühne  on Fri, 2016/11/11 22:26:
> Without intending to come across as overly sensitive, but does it have
> to be called stupidproxy?
> 
> cheers!
> mar77i

That originates from Allan's comment [0] about his intention to accept a
"--stupid-proxy" flag. I am happy with what ever name Allan decides to
choose. ;)

[0] https://bugs.archlinux.org/task/50368#comment149944
-- 
main(a){char*c=/*Schoene Gruesse */"B?IJj;MEH"
"CX:;",b;for(a/*Best regards my address:*/=0;b=c[a++];)
putchar(b-1/(/*Chriscc -ox -xc - && ./x*/b/42*2-3)*42);}


pgpcyUXXJVvi3.pgp
Description: OpenPGP digital signature


Re: [pacman-dev] [PATCH rebased 1/1] Introduce a 'stupid-proxy' option

2016-11-11 Thread Martin Kühne
Without intending to come across as overly sensitive, but does it have
to be called stupidproxy?

cheers!
mar77i


[pacman-dev] [PATCH rebased 1/1] Introduce a 'stupid-proxy' option

2016-11-11 Thread Christian Hesse
From: Christian Hesse 

Add command line option ('--stupid-proxy') and config file option
('StupidProxy') 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 
---
 doc/pacman.8.txt  |  4 
 doc/pacman.conf.5.txt |  4 
 lib/libalpm/alpm.h|  2 ++
 lib/libalpm/dload.c   |  6 --
 lib/libalpm/handle.c  | 10 ++
 lib/libalpm/handle.h  |  1 +
 src/pacman/conf.c |  4 
 src/pacman/conf.h |  4 +++-
 src/pacman/pacman.c   |  5 +
 9 files changed, 37 insertions(+), 3 deletions(-)

diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
index 0fa727e..bb05fc6 100644
--- a/doc/pacman.8.txt
+++ b/doc/pacman.8.txt
@@ -193,6 +193,10 @@ Options
 *\--confirm*::
Cancels the effects of a previous '\--noconfirm'.
 
+*\--stupid-proxy*::
+   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')
 --
diff --git a/doc/pacman.conf.5.txt b/doc/pacman.conf.5.txt
index c665870..3d2ce31 100644
--- a/doc/pacman.conf.5.txt
+++ b/doc/pacman.conf.5.txt
@@ -209,6 +209,10 @@ Options
Displays name, version and size of target packages formatted
as a table for upgrade, sync and remove operations.
 
+*StupidProxy*::
+   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
 ---
diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h
index 2d2491d..4aff800 100644
--- a/lib/libalpm/alpm.h
+++ b/lib/libalpm/alpm.h
@@ -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_set_remote_file_siglevel(alpm_handle_t *handle, int level);
 
+int alpm_option_set_stupidproxy(alpm_handle_t *handle, unsigned short 
stupidproxy);
+
 /** @} */
 
 /** @addtogroup alpm_api_databases Database Functions
diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index 9d80358..f3f0f68 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -305,8 +305,10 @@ static void curl_set_handle_opts(struct dload_payload 
*payload,
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, dload_progress_cb);
curl_easy_setopt(curl, CURLOPT_XFERINFODATA, (void *)payload);
-   curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1L);
-   curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);
+   if(!handle->stupidproxy) {
+   curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, 1L);
+   curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, 10L);
+   }
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, dload_parseheader_cb);
curl_easy_setopt(curl, CURLOPT_WRITEHEADER, (void *)payload);
curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);
diff --git a/lib/libalpm/handle.c b/lib/libalpm/handle.c
index 28e8148..a387ee6 100644
--- a/lib/libalpm/handle.c
+++ b/lib/libalpm/handle.c
@@ -844,4 +844,14 @@ int SYMEXPORT 
alpm_option_get_remote_file_siglevel(alpm_handle_t *handle)
}
 }
 
+int SYMEXPORT alpm_option_set_stupidproxy(alpm_handle_t *handle,
+   unsigned short stupidproxy)
+{
+   CHECK_HANDLE(handle, return -1);
+#ifdef HAVE_LIBCURL
+   handle->stupidproxy = stupidproxy;
+#endif
+   return 0;
+}
+
 /* vim: set noet: */
diff --git a/lib/libalpm/handle.h b/lib/libalpm/handle.h
index 652f17d..be7ff78 100644
--- a/lib/libalpm/handle.h
+++ b/lib/libalpm/handle.h
@@ -60,6 +60,7 @@ struct __alpm_handle_t {
 #ifdef HAVE_LIBCURL
/* libcurl handle */
CURL *curl; /* reusable curl_easy handle */
+   unsigned short stupidproxy;
 #endif
 
 #ifdef HAVE_LIBGPGME
diff --git a/src/pacman/conf.c b/src/pacman/conf.c
index d8d64fb..0fb7e7a 100644
--- a/src/pacman/conf.c
+++ b/src/pacman/conf.c
@@ -498,6 +498,8 @@ static int _parse_options(const char *key, char *value,
config->color = isatty(fileno(stdout)) ? 
PM_COLOR_ON : PM_COLOR_OFF;
enable_colors(config->color);
}
+   } else if(strcmp(key, "StupidProxy") == 0) {
+   config->stupidproxy = 1;
} else {
pm_printf(ALPM_LOG_WARNING,
_("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_noextracts(handle, config->noextract);
 
+