Jacek Caban : mshtml: Get rid of handling post data in IPersistMoniker:: Load hack.

Alexandre Julliard julliard at winehq.org
Tue Aug 25 08:44:00 CDT 2009


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Aug 24 20:12:51 2009 +0200

mshtml: Get rid of handling post data in IPersistMoniker::Load hack.

---

 dlls/mshtml/persist.c |  131 +------------------------------------------------
 1 files changed, 1 insertions(+), 130 deletions(-)

diff --git a/dlls/mshtml/persist.c b/dlls/mshtml/persist.c
index f2a3df7..6c1a0e5 100644
--- a/dlls/mshtml/persist.c
+++ b/dlls/mshtml/persist.c
@@ -39,129 +39,6 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
 
-#define USER_AGENT "User-Agent:"
-#define CONTENT_TYPE "Content-Type:"
-
-static int fix_headers(char *buf, DWORD post_len)
-{
-    char *ptr = buf, *ptr2;
-
-    while(*ptr && (ptr[0] != '\r' || ptr[1] != '\n')) {
-        for(ptr2=ptr+1; *ptr2 && (ptr2[0] != '\r' || ptr2[1] != '\n'); ptr2++);
-
-        if(*ptr2)
-            ptr2 += 2;
-
-        if(!strncasecmp(ptr, USER_AGENT, sizeof(USER_AGENT)-1)) {
-            FIXME("Ignoring User-Agent header\n");
-            memmove(ptr, ptr2, strlen(ptr2)+1);
-        }else if(!post_len && !strncasecmp(ptr, CONTENT_TYPE, sizeof(CONTENT_TYPE)-1)) {
-            TRACE("Ignoring Content-Type header\n");
-            memmove(ptr, ptr2, strlen(ptr2)+1);
-        }else {
-            ptr = ptr2;
-        }
-    }
-
-    *ptr = 0;
-    return ptr-buf;
-}
-
-static nsIInputStream *get_post_data_stream(IBindCtx *bctx)
-{
-    nsIInputStream *ret = NULL;
-    IUnknown *unk;
-    IBindStatusCallback *callback;
-    IServiceProvider *service_provider;
-    BINDINFO bindinfo;
-    DWORD bindf = 0;
-    DWORD post_len = 0, headers_len = 0;
-    LPWSTR headers = NULL;
-    WCHAR emptystr[] = {0};
-    char *data;
-    HRESULT hres;
-
-    static WCHAR _BSCB_Holder_[] =
-        {'_','B','S','C','B','_','H','o','l','d','e','r','_',0};
-
-
-    /* FIXME: This should be done in URLMoniker */
-    if(!bctx)
-        return NULL;
-
-    hres = IBindCtx_GetObjectParam(bctx, _BSCB_Holder_, &unk);
-    if(FAILED(hres))
-        return NULL;
-
-    hres = IUnknown_QueryInterface(unk, &IID_IBindStatusCallback, (void**)&callback);
-    if(FAILED(hres)) {
-        IUnknown_Release(unk);
-        return NULL;
-    }
-
-    hres = IUnknown_QueryInterface(unk, &IID_IServiceProvider, (void**)&service_provider);
-    IUnknown_Release(unk);
-    if(SUCCEEDED(hres)) {
-        IHttpNegotiate *http_negotiate;
-
-        hres = IServiceProvider_QueryService(service_provider, &IID_IHttpNegotiate, &IID_IHttpNegotiate,
-                                             (void**)&http_negotiate);
-        if(SUCCEEDED(hres)) {
-            hres = IHttpNegotiate_BeginningTransaction(http_negotiate, emptystr,
-                                                       emptystr, 0, &headers);
-            IHttpNegotiate_Release(http_negotiate);
-
-            if(SUCCEEDED(hres) && headers)
-                headers_len = WideCharToMultiByte(CP_ACP, 0, headers, -1, NULL, 0, NULL, NULL);
-        }
-
-        IServiceProvider_Release(service_provider);
-    }
-
-    memset(&bindinfo, 0, sizeof(bindinfo));
-    bindinfo.cbSize = sizeof(bindinfo);
-
-    hres = IBindStatusCallback_GetBindInfo(callback, &bindf, &bindinfo);
-
-    if(SUCCEEDED(hres) && bindinfo.dwBindVerb == BINDVERB_POST)
-        post_len = bindinfo.cbstgmedData;
-
-    if(headers_len || post_len) {
-        int len = 0;
-
-        static const char content_length[] = "Content-Length: %u\r\n\r\n";
-
-        data = heap_alloc(headers_len+post_len+sizeof(content_length)+10);
-
-        if(headers_len) {
-            WideCharToMultiByte(CP_ACP, 0, headers, -1, data, headers_len, NULL, NULL);
-            len = fix_headers(data, post_len);
-            if(len >= 2 && (data[len-1] != '\n' || data[len-2] != '\r')) {
-                data[len++] = '\r';
-                data[len++] = '\n';
-            }
-        }
-
-        if(post_len) {
-            sprintf(data+len, content_length, post_len);
-            len += strlen(data+len);
-
-            memcpy(data+len, bindinfo.stgmedData.u.hGlobal, post_len);
-        }
-
-        TRACE("data = %s\n", debugstr_an(data, len+post_len));
-
-        if(len)
-            ret = create_nsstream(data, len+post_len);
-    }
-
-    CoTaskMemFree(headers);
-    ReleaseBindInfo(&bindinfo);
-    IBindStatusCallback_Release(callback);
-
-    return ret;
-}
-
 static BOOL use_gecko_script(LPCWSTR url)
 {
     static const WCHAR fileW[] = {'f','i','l','e',':'};
@@ -304,16 +181,10 @@ static HRESULT set_moniker(HTMLDocument *This, IMoniker *mon, IBindCtx *pibc, BO
     push_task(task);
 
     if(This->nscontainer) {
-        nsIInputStream *post_data_stream = get_post_data_stream(pibc);
-
         This->nscontainer->bscallback = bscallback;
         nsres = nsIWebNavigation_LoadURI(This->nscontainer->navigation, url,
-                LOAD_FLAGS_NONE, NULL, post_data_stream, NULL);
+                LOAD_FLAGS_NONE, NULL, NULL, NULL);
         This->nscontainer->bscallback = NULL;
-
-        if(post_data_stream)
-            nsIInputStream_Release(post_data_stream);
-
         if(NS_FAILED(nsres)) {
             WARN("LoadURI failed: %08x\n", nsres);
             IUnknown_Release((IUnknown*)bscallback);




More information about the wine-cvs mailing list