This does exactly the same thing as it code it replaces, but punt to
curl to do it for brevity. Requires curl 7.25.0, which we already cover.
---
 lib/libalpm/dload.c | 46 +++-------------------------------------------
 1 file changed, 3 insertions(+), 43 deletions(-)

diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c
index 9d80358..ccd70d9 100644
--- a/lib/libalpm/dload.c
+++ b/lib/libalpm/dload.c
@@ -246,47 +246,6 @@ static size_t dload_parseheader_cb(void *ptr, size_t size, 
size_t nmemb, void *u
        return realsize;
 }
 
-static int dload_sockopt_cb(void *userdata, curl_socket_t curlfd,
-               curlsocktype purpose)
-{
-       alpm_handle_t *handle = userdata;
-       int optval = 1;
-
-       /* this whole method is to prevent FTP control connections from going 
sour
-        * during a long data transfer; crappy firewalls love to drop otherwise 
idle
-        * connections if there is no traffic. */
-       if(purpose != CURLSOCKTYPE_IPCXN) {
-               return 0;
-       }
-
-       /* don't abort operation if any setsockopt fails, just log to debug */
-       if(setsockopt(curlfd, SOL_SOCKET, SO_KEEPALIVE, (void *)&optval,
-                               sizeof(optval)) < 0) {
-               _alpm_log(handle, ALPM_LOG_DEBUG,
-                               "Failed to set SO_KEEPALIVE on fd %d\n", 
curlfd);
-       }
-       else {
-#ifdef TCP_KEEPIDLE
-               optval = 60;
-               if(setsockopt(curlfd, IPPROTO_TCP, TCP_KEEPIDLE, (void 
*)&optval,
-                                       sizeof(optval)) < 0) {
-                       _alpm_log(handle, ALPM_LOG_DEBUG,
-                                       "Failed to set TCP_KEEPIDLE on fd 
%d\n", curlfd);
-               }
-#endif
-#ifdef TCP_KEEPINTVL
-               optval = 60;
-               if(setsockopt(curlfd, IPPROTO_TCP, TCP_KEEPINTVL, (void 
*)&optval,
-                                       sizeof(optval)) < 0) {
-                       _alpm_log(handle, ALPM_LOG_DEBUG,
-                                       "Failed to set TCP_KEEPINTVL on fd 
%d\n", curlfd);
-               }
-#endif
-       }
-
-       return 0;
-}
-
 static void curl_set_handle_opts(struct dload_payload *payload,
                CURL *curl, char *error_buffer)
 {
@@ -310,8 +269,9 @@ static void curl_set_handle_opts(struct dload_payload 
*payload,
        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);
-       curl_easy_setopt(curl, CURLOPT_SOCKOPTFUNCTION, dload_sockopt_cb);
-       curl_easy_setopt(curl, CURLOPT_SOCKOPTDATA, (void *)handle);
+       curl_easy_setopt(curl, CURLOPT_TCP_KEEPALIVE, 1L);
+       curl_easy_setopt(curl, CURLOPT_TCP_KEEPIDLE, 60L);
+       curl_easy_setopt(curl, CURLOPT_TCP_KEEPINTVL, 60L);
        curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
 
        _alpm_log(handle, ALPM_LOG_DEBUG, "url: %s\n", payload->fileurl);
-- 
2.10.2

Reply via email to