diff --git a/README b/README
index c750e7a..6627263 100644
--- a/README
+++ b/README
@@ -21,6 +21,20 @@ admin/config/services/chr
 
 The latter will automatically revert settings back to their previous values if you disable/uninstall this module.
 
+Additional options
+------------------
+- connect_timeout: The number of seconds to wait while trying to connect.
+ Use 0 to wait indefinitely. If a timeout occurs, the error code is set to
+ the HTTP_REQUEST_TIMEOUT constant. While the normal timeout specifies the
+ execution timeout of the whole request this only limits the time to wait for a
+ connection.
+- verify_ssl: A boolean, to decide whether (TRUE) or not (FALSE) verify the SSL certificate and host.
+- verbose: A boolean, to switch on (TRUE) and off (FALSE) the cURL verbose mode.
+- cookiefile: A string containing a local path to the cookie file.
+- http_proxy: An array that will override the system-wide HTTP proxy settings. Array's elements:
+- https_proxy: An array that will override the system-wide HTTPS proxy settings.
+- curl_opts: An array of generic cURL options as used in curl_setopt_array().
+
 Proxy support
 -------------
 cURL HTTP request does provide some extra features, though: it allows for requests to be sent via proxy, whether they
diff --git a/chr.module b/chr.module
index 2c97de8..4b0eccc 100644
--- a/chr.module
+++ b/chr.module
@@ -60,6 +60,9 @@ function curl_http_request($url, array $options = array()) {
  *   - timeout: A float representing the maximum number of seconds the function
  *     call may take. The default is 30 seconds. If a timeout occurs, the error
  *     code is set to the HTTP_REQUEST_TIMEOUT constant.
+ *   - connect_timeout: The number of seconds to wait while trying to connect.
+ *     Use 0 to wait indefinitely. If a timeout occurs, the error code is set to
+ *     the HTTP_REQUEST_TIMEOUT constant.
  *   - context: A context resource created with stream_context_create().
  *   - verify_ssl: A boolean, to decide whether (TRUE) or not (FALSE) verify the SSL certificate and host.
  *   - verbose: A boolean, to switch on (TRUE) and off (FALSE) the cURL verbose mode.
@@ -122,6 +125,11 @@ function chr_curl_http_request($url, array $options = array()) {
     'https_proxy' => _chr_get_proxy_variable('https_proxy'),
     'curl_opts' => array(),
   );
+  // For backward compatibility we fallback to the execution timeout if the
+  // connection timeout isn't set explicitly.
+  if (!isset($options['connect_timeout'])) {
+    $options['connect_timeout'] = (int) $options['timeout'];
+  }
 
   // Initialize cURL object.
   $ch = curl_init($url);
@@ -338,7 +346,7 @@ function _chr_curl_set_defaults(&$options, &$ch) {
   curl_setopt($ch, CURLOPT_USERAGENT, $options['headers']['User-Agent']);
   curl_setopt($ch, CURLINFO_HEADER_OUT, TRUE);
   curl_setopt($ch, CURLOPT_TIMEOUT, $options['timeout']);
-  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $options['timeout']);
+  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $options['connect_timeout']);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $options['verify_ssl']);
