https://bugs.winehq.org/show_bug.cgi?id=37046
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Status|UNCONFIRMED |NEW URL| |http://www.roblox.com/insta | |ll/setup.ashx CC| |focht@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@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&GenreFi...
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&placeI... failed. Trying again. Error: http://www.roblox.com/Game/PlaceLauncher.ashx?request=RequestGame&placeI...: 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/06afdda61777d43f6c7d5b78157b46517...
--- 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