[Bug 37046] Roblox Studio/Player fails to download games ('Accept-Encoding' header is valid for 'HTTP/1.0' requests)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Nov 30 10:59:27 CST 2014


https://bugs.winehq.org/show_bug.cgi?id=37046

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download
             Status|UNCONFIRMED                 |NEW
                URL|                            |http://www.roblox.com/insta
                   |                            |ll/setup.ashx
                 CC|                            |focht at gmx.net
            Summary|Roblox Studio cannot load   |Roblox Studio/Player fails
                   |games due to issue in       |to download games
                   |wininet                     |('Accept-Encoding' header
                   |(trace:wininet:DllMain      |is valid for 'HTTP/1.0'
                   |0x7dec0000,2,(nil))         |requests)
     Ever confirmed|0                           |1

--- Comment #2 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

confirming.

Useful Wiki/HOWTOs: http://roblox.wikia.com/wiki/Roblox_on_Linux

A list of games is available here:
http://www.roblox.com/games/?SortFilter=default&TimeFilter=0&GenreFilter=1

http://www.roblox.com/JAWS-place?id=6798894 -> 6798894 = game id

--- snip ---
$ pwd
/home/focht/.wine/drive_c/users/focht/Local Settings/Application
Data/RobloxVersions/version-0aae98b55b324621

$ WINEDEBUG=+tid,+seh,+relay,+wininet wine ./RobloxPlayerBeta.exe --id 6798894
>>log.txt 2>&1
...
0023:Call wininet.HttpOpenRequestA(00000002,00decd88 "GET",0016fbf0
"/Game/PlaceLauncher.ashx?request=RequestGame&placeId=6798894&isPartyLeader=false&gender=&isTeleport=true",00decd74
"HTTP/1.0",00e9951b "",00000000,00400010,00000000) ret=008551d5
0023:trace:wininet:HttpOpenRequestA (0x2, "GET",
"/Game/PlaceLauncher.ashx?request=RequestGame&placeId=6798894&isPartyLeader=false&gender=&isTeleport=true",
"HTTP/1.0", "", (nil), 00400010, 00000000) 
...
0023:trace:wininet:HttpOpenRequestW (0x2, L"GET",
L"/Game/PlaceLauncher.ashx?request=RequestGame&placeId=6798894&isPartyLeader=false&gender=&isTeleport=true",
L"HTTP/1.0", L"", (nil), 00400010, 00000000)
...
0023:trace:wininet:HTTP_HttpOpenRequestW --> 
...
0023:trace:wininet:HTTP_ProcessHeader --> L"Host": L"www.roblox.com" -
0x22000000
0023:trace:wininet:HTTP_InsertCustomHeader --> L"Host": L"www.roblox.com"
...
0023:trace:wininet:HTTP_HttpOpenRequestW <-- (0x16fd60)
...
0023:trace:wininet:HttpOpenRequestW returning 0x3 
...
0023:Ret  wininet.HttpOpenRequestA() retval=00000003 ret=008551d5 
...
0023:Call wininet.HttpAddRequestHeadersA(00000003,019935f8 "Requester:
Client\r\n",00000013,20000000) ret=008554f4
0023:trace:wininet:HttpAddRequestHeadersA 0x3, "Requester: Client\r\n", 19,
536870912 
...
0023:trace:wininet:HttpAddRequestHeadersW 0x3, L"Requester: Client\r\n", 19,
536870912
...
0023:trace:wininet:HTTP_HttpAddRequestHeadersW copying header: L"Requester:
Client\r\n" 
...
0023:trace:wininet:HTTP_InterpretHttpHeader field(L"Requester")
Value(L"Client")
0023:trace:wininet:HTTP_ProcessHeader --> L"Requester": L"Client" - 0x22000000
0023:trace:wininet:HTTP_InsertCustomHeader --> L"Requester": L"Client" 
...
0023:trace:wininet:HTTP_HttpAddRequestHeadersW interpreting header L""
...
0023:Ret  wininet.HttpAddRequestHeadersA() retval=00000001 ret=008554f4 
...
0023:Call wininet.HttpAddRequestHeadersA(00000003,00decef4 "Accept-Encoding:
gzip\r\n",00000017,20000000) ret=0085553a
0023:trace:wininet:HttpAddRequestHeadersA 0x3, "Accept-Encoding: gzip\r\n", 23,
536870912 
...
0023:trace:wininet:HttpAddRequestHeadersW 0x3, L"Accept-Encoding: gzip\r\n",
23, 536870912
...
0023:trace:wininet:HTTP_HttpAddRequestHeadersW copying header:
L"Accept-Encoding: gzip\r\n"
...
0023:trace:wininet:HTTP_HttpAddRequestHeadersW interpreting header
L"Accept-Encoding: gzip"
...
0023:trace:wininet:HTTP_InterpretHttpHeader field(L"Accept-Encoding")
Value(L"gzip")
...
0023:Ret  wininet.HttpAddRequestHeadersA() retval=00000000 ret=0085553a
0023:Call KERNEL32.GetLastError() ret=0059fef2
0023:Ret  KERNEL32.GetLastError() retval=00002f79 ret=0059fef2
0023:Call
KERNEL32.FormatMessageA(00001000,00000000,00002f79,00000800,0033dbb8,00000100,00000000)
ret=0059ff4c
0023:Ret  KERNEL32.FormatMessageA() retval=00000000 ret=0059ff4c 
...
0023:Call msvcr110._CxxThrowException(0033dcb8,01072300) ret=0059ff78
0023:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0033db54)
ret=7e14dac1
0023:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b83b1d3
ip=7b83b1d3 tid=0023
0023:trace:seh:raise_exception  info[0]=19930520
0023:trace:seh:raise_exception  info[1]=0033dcb8
0023:trace:seh:raise_exception  info[2]=01072300
0023:trace:seh:raise_exception  eax=7b826e65 ebx=7b8be000 ecx=19930520
edx=0033daa4 esi=0033db50 edi=0033db10
0023:trace:seh:raise_exception  ebp=0033dae8 esp=0033da84 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00000283
...
0023:Call KERNEL32.OutputDebugStringA(01993e20 "WARNING: httpGet
http://www.roblox.com/Game/PlaceLauncher.ashx?request=RequestGame&placeId=6798894&isPartyLeader=false&gender=&isTeleport=true
failed. Trying again. Error:
http://www.roblox.com/Game/PlaceLauncher.ashx?request=RequestGame&placeId=6798894&isPartyLeader=false&gender=&isTeleport=true:
Ht"...) ret=0041010e 
--- snip ---

0x2F79 -> 'ERROR_HTTP_INVALID_HEADER'

Debugger session:

--- snip ---
Wine-dbg>s
HTTP_VerifyValidHeader () at
/home/focht/projects/wine/wine.repo/src/dlls/wininet/http.c:6354
6354    {

Wine-dbg>n
6356        if (!strcmpW(request->version, g_szHttp1_0) && !strcmpiW(field,
szAccept_Encoding))

Wine-dbg>p *request
{hdr={htype=WH_HHTTPREQ, vtbl=0x7e3c1740, hInternet=0x3, valid_handle=0x1,
dwFlags=0x400010, dwContext=0, dwError=0, ErrorMask=0, dwInternalFlags=0,
refs=0x2, lpfnStatusCB=(nil), entry={next=0x14cf54, prev=0x14cf54},
children={next=0x14d14c, prev=0x14d14c}}, session=0x14cf20, server=0x14f268,
proxy=(nil),
path="/Game/PlaceLauncher.ashx?request=RequestGame&placeId=6798894&isPartyLeader=false&gender=&isTeleport=true",
verb="GET", netconn=(nil), security_flags=0, connect_timeout=0xea60,
send_timeout=0xffffffff, receive_timeout=0xffffffff, version="HTTP/1.0",
status_code=0, statusText=0x0(nil), bytesToWrite=0, bytesWritten=0, ...}

Wine-dbg>p field 
"Accept-Encoding"
--- snip ---

Source:
http://source.winehq.org/git/wine.git/blob/06afdda61777d43f6c7d5b78157b465172b0174b:/dlls/wininet/http.c#l6353

--- snip ---
6353 static BOOL HTTP_VerifyValidHeader(http_request_t *request, LPCWSTR field)
6354 {
6355     /* Accept-Encoding is stripped from HTTP/1.0 requests. It is invalid
*/
6356     if (!strcmpW(request->version, g_szHttp1_0) && !strcmpiW(field,
szAccept_Encoding))
6357         return ERROR_HTTP_INVALID_HEADER;
6358
6359     return ERROR_SUCCESS;
6360 }
--- snip ---

The specification:
http://www.w3.org/Protocols/HTTP/1.0/spec.html#Accept-Encoding ("Hypertext
Transfer Protocol -- HTTP/1.0")

http://www8.org/w8-papers/5c-protocols/key/key.html ("Key Differences between
HTTP/1.0 and HTTP/1.1")

--- quote ---
Compression
...
HTTP/1.1 (unlike HTTP/1.0) carefully specifies the Accept-Encoding header, used
by a client to indicate what content-codings it can handle, and which ones it
prefers. One tricky issue is the need to support ``robot'' clients that are
attempting to create mirrors of the origin server's resources; another problem
is the need to interoperate with HTTP/1.0 implementations, for which
Accept-Encoding was poorly specified.
--- quote ---

Additionally I captured the session with Wireshark, showing native allows the
header.

Request:

--- snip ---
GET
/Game/PlaceLauncher.ashx?request=RequestGame&placeId=6798894&isPartyLeader=false&gender=&isTeleport=true
HTTP/1.0
Requester: Client
Accept-Encoding: gzip
User-Agent: Roblox/WinInet
Host: www.roblox.com
Connection: Keep-Alive
--- snip ---

Answer:

--- snip ---
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Expires: -1
Set-Cookie: ...
Connection: keep-alive
Content-Length: 979

{"jobId":...}
--- snip ---

$ sha1sum RobloxPlayerLauncher.exe 
1139b620baadace6ce6ee224c190ce0dee248146  RobloxPlayerLauncher.exe

$ du -sh RobloxPlayerLauncher.exe 
628K    RobloxPlayerLauncher.exe

$ wine --version
wine-1.7.32

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list