Jacek Caban : wininet: Moved getting cookie from known host to separated function.

Alexandre Julliard julliard at winehq.org
Thu May 19 13:32:12 CDT 2011


Module: wine
Branch: master
Commit: 9a741bf3d72498bce5726856ff3f8d5ac9d95420
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9a741bf3d72498bce5726856ff3f8d5ac9d95420

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu May 19 16:11:10 2011 +0200

wininet: Moved getting cookie from known host to separated function.

---

 dlls/wininet/cookie.c |  160 ++++++++++++++++++++++++-------------------------
 1 files changed, 78 insertions(+), 82 deletions(-)

diff --git a/dlls/wininet/cookie.c b/dlls/wininet/cookie.c
index 8a50ef7..683776b 100644
--- a/dlls/wininet/cookie.c
+++ b/dlls/wininet/cookie.c
@@ -260,114 +260,110 @@ static void COOKIE_deleteDomain(cookie_domain *deadDomain)
     HeapFree(GetProcessHeap(), 0, deadDomain);
 }
 
-/***********************************************************************
- *           InternetGetCookieW (WININET.@)
- *
- * Retrieve cookie from the specified url
- *
- *  It should be noted that on windows the lpszCookieName parameter is "not implemented".
- *    So it won't be implemented here.
- *
- * RETURNS
- *    TRUE  on success
- *    FALSE on failure
- *
- */
-BOOL WINAPI InternetGetCookieW(LPCWSTR lpszUrl, LPCWSTR lpszCookieName,
-    LPWSTR lpCookieData, LPDWORD lpdwSize)
+static BOOL get_cookie(const WCHAR *host, const WCHAR *path, WCHAR *cookie_data, DWORD *size)
 {
-    BOOL ret;
-    struct list * cursor;
-    unsigned int cnt = 0, domain_count = 0, cookie_count = 0;
-    WCHAR hostName[2048], path[2048];
+    unsigned cnt = 0, len, domain_count = 0, cookie_count = 0;
+    cookie_domain *domain;
     FILETIME tm;
 
-    TRACE("(%s, %s, %p, %p)\n", debugstr_w(lpszUrl),debugstr_w(lpszCookieName),
-          lpCookieData, lpdwSize);
+    GetSystemTimeAsFileTime(&tm);
 
-    if (!lpszUrl)
-    {
-        SetLastError(ERROR_INVALID_PARAMETER);
-        return FALSE;
-    }
+    LIST_FOR_EACH_ENTRY(domain, &domain_list, cookie_domain, entry) {
+        struct list *cursor, *cursor2;
 
-    hostName[0] = 0;
-    ret = COOKIE_crackUrlSimple(lpszUrl, hostName, sizeof(hostName)/sizeof(hostName[0]), path, sizeof(path)/sizeof(path[0]));
-    if (!ret || !hostName[0]) return FALSE;
-
-    GetSystemTimeAsFileTime(&tm);
+        if(!COOKIE_matchDomain(host, path, domain, TRUE))
+            continue;
 
-    LIST_FOR_EACH(cursor, &domain_list)
-    {
-        cookie_domain *cookiesDomain = LIST_ENTRY(cursor, cookie_domain, entry);
-        if (COOKIE_matchDomain(hostName, path, cookiesDomain, TRUE))
-        {
-            struct list * cursor, * cursor2;
-            domain_count++;
-            TRACE("found domain %p\n", cookiesDomain);
+        domain_count++;
+        TRACE("found domain %p\n", domain);
     
-            LIST_FOR_EACH_SAFE(cursor, cursor2, &cookiesDomain->cookie_list)
+        LIST_FOR_EACH_SAFE(cursor, cursor2, &domain->cookie_list) {
+            cookie *cookie_iter = LIST_ENTRY(cursor, cookie, entry);
+
+            /* check for expiry */
+            if((cookie_iter->expiry.dwLowDateTime != 0 || cookie_iter->expiry.dwHighDateTime != 0)
+                && CompareFileTime(&tm, &cookie_iter->expiry)  > 0)
             {
-                cookie *thisCookie = LIST_ENTRY(cursor, cookie, entry);
-                /* check for expiry */
-                if ((thisCookie->expiry.dwLowDateTime != 0 || thisCookie->expiry.dwHighDateTime != 0) && CompareFileTime(&tm,&thisCookie->expiry)  > 0)
-                {
-                    TRACE("Found expired cookie. deleting\n");
-                    COOKIE_deleteCookie(thisCookie, FALSE);
-                    continue;
-                }
+                TRACE("Found expired cookie. deleting\n");
+                COOKIE_deleteCookie(cookie_iter, FALSE);
+                continue;
+            }
 
-                if (lpCookieData == NULL) /* return the size of the buffer required to lpdwSize */
-                {
-                    unsigned int len;
-
-                    if (cookie_count) cnt += 2; /* '; ' */
-                    cnt += strlenW(thisCookie->lpCookieName);
-                    if ((len = strlenW(thisCookie->lpCookieData)))
-                    {
-                        cnt += 1; /* = */
-                        cnt += len;
-                    }
+            if(!cookie_data) { /* return the size of the buffer required to lpdwSize */
+                if (cookie_count)
+                    cnt += 2; /* '; ' */
+                cnt += strlenW(cookie_iter->lpCookieName);
+                if ((len = strlenW(cookie_iter->lpCookieData))) {
+                    cnt += 1; /* = */
+                    cnt += len;
                 }
-                else
-                {
-                    static const WCHAR szsc[] = { ';',' ',0 };
-                    static const WCHAR szname[] = { '%','s',0 };
-                    static const WCHAR szdata[] = { '=','%','s',0 };
+            }else {
+                static const WCHAR szsc[] = { ';',' ',0 };
+                static const WCHAR szname[] = { '%','s',0 };
+                static const WCHAR szdata[] = { '=','%','s',0 };
 
-                    if (cookie_count) cnt += snprintfW(lpCookieData + cnt, *lpdwSize - cnt, szsc);
-                    cnt += snprintfW(lpCookieData + cnt, *lpdwSize - cnt, szname, thisCookie->lpCookieName);
+                if (cookie_count) cnt += snprintfW(cookie_data + cnt, *size - cnt, szsc);
+                cnt += snprintfW(cookie_data + cnt, *size - cnt, szname, cookie_iter->lpCookieName);
 
-                    if (thisCookie->lpCookieData[0])
-                        cnt += snprintfW(lpCookieData + cnt, *lpdwSize - cnt, szdata, thisCookie->lpCookieData);
+                if (cookie_iter->lpCookieData[0])
+                    cnt += snprintfW(cookie_data + cnt, *size - cnt, szdata, cookie_iter->lpCookieData);
 
-                    TRACE("Cookie: %s\n", debugstr_w(lpCookieData));
-                }
-                cookie_count++;
+                TRACE("Cookie: %s\n", debugstr_w(cookie_data));
             }
+            cookie_count++;
         }
     }
 
-    if (!domain_count)
-    {
-        TRACE("no cookies found for %s\n", debugstr_w(hostName));
+    if (!domain_count) {
+        TRACE("no cookies found for %s\n", debugstr_w(host));
         SetLastError(ERROR_NO_MORE_ITEMS);
         return FALSE;
     }
 
-    if (lpCookieData == NULL)
-    {
-        *lpdwSize = (cnt + 1) * sizeof(WCHAR);
-        TRACE("returning %u\n", *lpdwSize);
+    if(!cookie_data) {
+        *size = (cnt + 1) * sizeof(WCHAR);
+        TRACE("returning %u\n", *size);
         return TRUE;
     }
 
-    *lpdwSize = cnt + 1;
+    *size = cnt + 1;
+
+    TRACE("Returning %u (from %u domains): %s\n", cnt, domain_count, debugstr_w(cookie_data));
+    return cnt != 0;
+}
+
+/***********************************************************************
+ *           InternetGetCookieW (WININET.@)
+ *
+ * Retrieve cookie from the specified url
+ *
+ *  It should be noted that on windows the lpszCookieName parameter is "not implemented".
+ *    So it won't be implemented here.
+ *
+ * RETURNS
+ *    TRUE  on success
+ *    FALSE on failure
+ *
+ */
+BOOL WINAPI InternetGetCookieW(LPCWSTR lpszUrl, LPCWSTR lpszCookieName,
+    LPWSTR lpCookieData, LPDWORD lpdwSize)
+{
+    WCHAR host[INTERNET_MAX_HOST_NAME_LENGTH], path[INTERNET_MAX_PATH_LENGTH];
+    BOOL ret;
+
+    TRACE("(%s, %s, %p, %p)\n", debugstr_w(lpszUrl),debugstr_w(lpszCookieName), lpCookieData, lpdwSize);
+
+    if (!lpszUrl)
+    {
+        SetLastError(ERROR_INVALID_PARAMETER);
+        return FALSE;
+    }
 
-    TRACE("Returning %u (from %u domains): %s\n", cnt, domain_count,
-           debugstr_w(lpCookieData));
+    host[0] = 0;
+    ret = COOKIE_crackUrlSimple(lpszUrl, host, sizeof(host)/sizeof(host[0]), path, sizeof(path)/sizeof(path[0]));
+    if (!ret || !host[0]) return FALSE;
 
-    return (cnt ? TRUE : FALSE);
+    return get_cookie(host, path, lpCookieData, lpdwSize);
 }
 
 




More information about the wine-cvs mailing list