[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