[2/3] wininet: Add support for setting and retrieving the connect timeout.

Hans Leidekker hans at codeweavers.com
Fri Jan 13 08:15:20 CST 2012


---
 dlls/wininet/http.c |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index e645d86..ca8cc60 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -2151,6 +2151,13 @@ static DWORD HTTPREQ_QueryOption(object_header_t *hdr, DWORD option, void *buffe
             return ERROR_SUCCESS;
         }
     }
+    case INTERNET_OPTION_CONNECT_TIMEOUT:
+        if (*size < sizeof(DWORD))
+            return ERROR_INSUFFICIENT_BUFFER;
+
+        *size = sizeof(DWORD);
+        *(DWORD *)buffer = req->connect_timeout;
+        return ERROR_SUCCESS;
     }
 
     return INET_QueryOption(hdr, option, buffer, size, unicode);
@@ -2174,6 +2181,13 @@ static DWORD HTTPREQ_SetOption(object_header_t *hdr, DWORD option, void *buffer,
             req->netconn->security_flags = flags;
         return ERROR_SUCCESS;
     }
+    case INTERNET_OPTION_CONNECT_TIMEOUT:
+        if (size != sizeof(DWORD))
+            return ERROR_INVALID_PARAMETER;
+
+        req->connect_timeout = *(DWORD *)buffer;
+        return ERROR_SUCCESS;
+
     case INTERNET_OPTION_SEND_TIMEOUT:
     case INTERNET_OPTION_RECEIVE_TIMEOUT:
         TRACE("INTERNET_OPTION_SEND/RECEIVE_TIMEOUT\n");
@@ -5438,6 +5452,8 @@ static void HTTPSESSION_Destroy(object_header_t *hdr)
 
 static DWORD HTTPSESSION_QueryOption(object_header_t *hdr, DWORD option, void *buffer, DWORD *size, BOOL unicode)
 {
+    http_session_t *ses = (http_session_t *)hdr;
+
     switch(option) {
     case INTERNET_OPTION_HANDLE_TYPE:
         TRACE("INTERNET_OPTION_HANDLE_TYPE\n");
@@ -5448,6 +5464,15 @@ static DWORD HTTPSESSION_QueryOption(object_header_t *hdr, DWORD option, void *b
         *size = sizeof(DWORD);
         *(DWORD*)buffer = INTERNET_HANDLE_TYPE_CONNECT_HTTP;
         return ERROR_SUCCESS;
+    case INTERNET_OPTION_CONNECT_TIMEOUT:
+        TRACE("INTERNET_OPTION_CONNECT_TIMEOUT\n");
+
+        if (*size < sizeof(DWORD))
+            return ERROR_INSUFFICIENT_BUFFER;
+
+        *size = sizeof(DWORD);
+        *(DWORD *)buffer = ses->connect_timeout;
+        return ERROR_SUCCESS;
     }
 
     return INET_QueryOption(hdr, option, buffer, size, unicode);
@@ -5470,6 +5495,11 @@ static DWORD HTTPSESSION_SetOption(object_header_t *hdr, DWORD option, void *buf
         if (!(ses->password = heap_strdupW(buffer))) return ERROR_OUTOFMEMORY;
         return ERROR_SUCCESS;
     }
+    case INTERNET_OPTION_CONNECT_TIMEOUT:
+    {
+        ses->connect_timeout = *(DWORD *)buffer;
+        return ERROR_SUCCESS;
+    }
     default: break;
     }
 
-- 
1.7.7.3







More information about the wine-patches mailing list