patch from bluezery finishing socks env variable pickup from ecore_con_socks.c
authordiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 3 Mar 2012 19:49:19 +0000 (19:49 +0000)
committerdiscomfitor <discomfitor@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sat, 3 Mar 2012 19:49:19 +0000 (19:49 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/ecore@68650 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/ecore_con/ecore_con_url.c

index 754685d..a541db6 100644 (file)
@@ -151,6 +151,8 @@ ecore_con_url_pipeline_get(void)
    return EINA_FALSE;
 }
 
+extern Ecore_Con_Socks *_ecore_con_proxy_global;
+
 EAPI Ecore_Con_Url *
 ecore_con_url_new(const char *url)
 {
@@ -182,22 +184,41 @@ ecore_con_url_new(const char *url)
         return NULL;
      }
 
+   // Read socks proxy
    url_con->proxy_type = -1;
-   if (_ecore_con_proxy_global)
+   if (_ecore_con_proxy_global && _ecore_con_proxy_global->ip &&
+       (_ecore_con_proxy_global->version == 4 ||
+        _ecore_con_proxy_global->version == 5))
      {
-        if (_ecore_con_proxy_global->ip)
+        char proxy[256];
+        char host[256];
+
+        if (_ecore_con_proxy_global->version == 5)
           {
-             char host[128];
-             if (_ecore_con_proxy_global->port > 0 &&
-                 _ecore_con_proxy_global->port <= 65535)
-               snprintf(host, sizeof(host), "socks4://%s:%d",
-                        _ecore_con_proxy_global->ip,
-                        _ecore_con_proxy_global->port);
-             else
-               snprintf(host, sizeof(host), "socks4://%s",
-                        _ecore_con_proxy_global->ip);
-             ecore_con_url_proxy_set(url_con, host);
+             if (_ecore_con_proxy_global->lookup)
+                snprintf(host, sizeof(host), "socks5h://%s",
+                         _ecore_con_proxy_global->ip);
+             else snprintf(host, sizeof(host), "socks5://%s",
+                           _ecore_con_proxy_global->ip);
           }
+        else if (_ecore_con_proxy_global->version == 4)
+          {
+             if (_ecore_con_proxy_global->lookup)
+                snprintf(host, sizeof(host), "socks4a://%s",
+                         _ecore_con_proxy_global->ip);
+             else snprintf(host, sizeof(host), "socks4://%s",
+                           _ecore_con_proxy_global->ip);
+          }
+
+        if (_ecore_con_proxy_global->port > 0 &&
+            _ecore_con_proxy_global->port <= 65535)
+           snprintf(proxy, sizeof(proxy), "%s:%d", host,
+                    _ecore_con_proxy_global->port);
+        else snprintf(proxy, sizeof(proxy), "%s", host);
+
+        ecore_con_url_proxy_set(url_con, proxy);
+        ecore_con_url_proxy_username_set(url_con,
+                                         _ecore_con_proxy_global->username);
      }
 
    ret = curl_easy_setopt(url_con->curl_easy, CURLOPT_ENCODING, "gzip,deflate");
@@ -1118,17 +1139,20 @@ ecore_con_url_proxy_set(Ecore_Con_Url *url_con, const char *proxy)
         if (vers->version_num < 0x71507)
           {
              url_con->proxy_type = CURLPROXY_HTTP;
-             if (strstr(proxy, "socks4")) url_con->proxy_type = CURLPROXY_SOCKS4;
-             else if (strstr(proxy, "socks4a"))
+             if (strstr(proxy, "socks4a"))
                url_con->proxy_type = CURLPROXY_SOCKS4A;
-             else if (strstr(proxy, "socks5"))
-               url_con->proxy_type = CURLPROXY_SOCKS5;
+             else if (strstr(proxy, "socks4"))
+               url_con->proxy_type = CURLPROXY_SOCKS4;
              else if (strstr(proxy, "socks5h"))
                url_con->proxy_type = CURLPROXY_SOCKS5_HOSTNAME;
-             res = curl_easy_setopt(url_con->curl_easy, CURLOPT_PROXYTYPE, url_con->proxy_type);
+             else if (strstr(proxy, "socks5"))
+               url_con->proxy_type = CURLPROXY_SOCKS5;
+             res = curl_easy_setopt(url_con->curl_easy, CURLOPT_PROXYTYPE,
+                                    url_con->proxy_type);
              if (res != CURLE_OK)
                {
-                  ERR("curl proxy type setting failed: %s", curl_easy_strerror(res));
+                  ERR("curl proxy type setting failed: %s",
+                      curl_easy_strerror(res));
                   url_con->proxy_type = -1;
                   return EINA_FALSE;
                }
@@ -1253,6 +1277,7 @@ _ecore_con_url_event_url_complete(Ecore_Con_Url *url_con, CURLMsg *curlmsg)
 
    if (curlmsg && (curlmsg->data.result == CURLE_OK))
       curl_easy_getinfo(curlmsg->easy_handle, CURLINFO_RESPONSE_CODE, &status);
+   else ERR("Curl message have errors: %d", curlmsg->data.result);
 
    e->status = status;
    e->url_con = url_con;