Closed
Bug 1500743
Opened 6 years ago
Closed 6 years ago
weixin.qq.com (The Official website of WeChat) can not be opened, but Chrome and Safari can
Categories
(Web Compatibility :: Site Reports, defect, P1)
Tracking
(firefox-esr60 wontfix, firefox63 wontfix, firefox64 wontfix, firefox65 wontfix)
People
(Reporter: kingboy9525, Unassigned)
References
()
Details
(Keywords: parity-chrome, parity-edge, Whiteboard: [sitewait])
Attachments
(1 file)
1.54 MB,
application/octet-stream
|
Details |
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:62.0) Gecko/20100101 Firefox/62.0
Steps to reproduce:
I open the weixin.qq.com with Firefox/Chrome/Safari. They are all the newest released version.
Btw, the website is the official website of WeChat. WeChat is the most popular instant-messager app in China.
Actual results:
The website can not be opened with Firefox, but Chrome and Safari can.
I have used Firefox's safe mode and stoped all my plugins and addons.
And I also called my friend who had tried the same operation(also use the 62.0.3). But it's also not functioning properly.
Expected results:
weixin.qq.com can be opened normally with Firefox.
Updated•6 years ago
|
Summary: weixin.qq.comweixin.qq.com(The Official website of WeChat) can not be opened, but Chrome and Safari can can not be opened, but Chrome and Safari can → weixin.qq.com(The Official website of WeChat) can not be opened, but Chrome and Safari can can not be opened, but Chrome and Safari can
Updated•6 years ago
|
Summary: weixin.qq.com(The Official website of WeChat) can not be opened, but Chrome and Safari can can not be opened, but Chrome and Safari can → weixin.qq.com(The Official website of WeChat) can not be opened, but Chrome and Safari can
Comment 1•6 years ago
|
||
Interesting, i can reproduce the issue too.
Daniel, I think you like this kind of bug. Do you have a clue?
Flags: needinfo?(dholbert)
Comment 2•6 years ago
|
||
Daniel^2, I have been told that it might be http2 related. If you have an idea!
Flags: needinfo?(daniel)
Updated•6 years ago
|
Status: UNCONFIRMED → NEW
Ever confirmed: true
Comment 3•6 years ago
|
||
Comment 4•6 years ago
|
||
In using mozregression, I got this pushlog:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=ced1402861b8&tochange=cef590a6f946
Updated•6 years ago
|
Has STR: --- → yes
status-firefox63:
--- → affected
status-firefox64:
--- → affected
status-firefox65:
--- → affected
status-firefox-esr60:
--- → affected
Keywords: regression
Updated•6 years ago
|
Component: Untriaged → Networking: HTTP
Product: Firefox → Core
Comment 5•6 years ago
|
||
(In reply to Calixte Denizet (:calixte) from comment #4)
> In using mozregression, I got this pushlog:
> https://hg.mozilla.org/mozilla-central/
> pushloghtml?fromchange=ced1402861b8&tochange=cef590a6f946
Suspect: bug 1097320
Blocks: 1097320
Updated•6 years ago
|
Keywords: parity-chrome,
parity-edge
So this is because the server is sending us a GOAWAY frame with the error PROTOCOL_ERROR - indicating that it thinks we spoke broken http/2 in... some way or another. This is immediately after us sending all the things we usually do when we open an http/2 connection - the required "magic", our SETTINGS frame, a WINDOW_UPDATE for the session, and a bunch of nodes for our priority dependency tree, followed by the very first request (which includes the HEADERS+PRIORITY as well as a WINDOW_UPDATE frame for the stream - there is no request body, so there are no DATA frames).
After that, we receive the server's SETTINGS, plus an ACK for our SETTINGS, and we send out an ACK for their SETTINGS (as required).
This is exactly what we do with every other h2 server in the world, and no others abruptly hang up on us claiming we're broken. Without more data from the server side of things (specifically what it thinks we did wrong - PROTOCOL_ERROR is kind of a catchall), I can't get any farther figuring out what potentially went wrong. However, I suspect this is a server-side issue anyway, given that no one else complains about us.
Flags: needinfo?(daniel)
Comment 7•6 years ago
|
||
Nicholas, don't you think that we should at least show an error message/warning in Firefox?
Flags: needinfo?(dholbert)
Bumping this over to tech evangelism, so they can reach out to wechat to help figure out what's going wrong here. I'm more than happy to help with technical details, if needed.
(In reply to Sylvestre Ledru [:sylvestre] from comment #7)
> Nicholas, don't you think that we should at least show an error
> message/warning in Firefox?
That's bug 1050329 :)
Comment 10•6 years ago
|
||
Argh, I said I was moving the bug, then the comment collision happened, and it didn't get moved. Really, truly, I'm moving the bug this time. (See comment 8)
Component: Networking: HTTP → Desktop
Product: Core → Tech Evangelism
Version: 62 Branch → Firefox 62
Updated•6 years ago
|
Summary: weixin.qq.com(The Official website of WeChat) can not be opened, but Chrome and Safari can → weixin.qq.com (The Official website of WeChat) can not be opened, but Chrome and Safari can
Comment 11•6 years ago
|
||
Filed a bug at:
https://help.wechat.com/oshelpcenter
Attempted email contact to these addresses:
https://open.wechat.com/cgi-bin/newreadtemplate?t=overseas_open/contact
Also Chris Arnold is reaching out to contacts there.
Whiteboard: [sitewait]
Comment 12•6 years ago
|
||
Another point here, that I've uncovered with a hunch and a little more digging: at least part of the issue is that we send "te: trailers" as a header on our requests in http/2. That's perfectly legal, but any other "te" header would be illegal. If I make a build that does not send "te: trailers", then things get a bit farther (though they still fail) - the server doesn't send a GOAWAY frame (good), but the load never completes (bad).
So, right now, there is one server-side bug (failure to accept "te: trailers" as legal), and one bug of unknown source (load never completes).
I'm digging in on the incomplete load right now, to see if I can figure out more there.
Comment 13•6 years ago
|
||
OK, I've looked at the incomplete load, and that also appears to be a server-side issue. Once we send our request, the server just never responds (no traffic at all on the net, with the exception of the TCP-level ACK of our the packets that include our http/2 request).
The only thing that appears significantly different between us and chrome is that chrome does not send a WINDOW_UPDATE http/2 frame in the same TCP packet as the HEADERS http/2 frame, while we do. Chrome doesn't send a WINDOW_UPDATE for the stream at all, in fact. That's, again, totally legal for us to do, but it's also my best guess as to what is messing up the server in the second bug I mentioned in comment 12 (since it's the only appreciable difference between us & chrome that isn't also present in http/1.1).
Comment 14•6 years ago
|
||
Just an additional data-point that I happened to notice.
If I try this page with curl (which gets content back over h2) there's a very interesting little detail in its verbose details:
$ curl weixin.qq.com -vL -o /dev/null
...
* Connection state changed (MAX_CONCURRENT_STREAMS == 4294967295)!
That's a lot of streams! =)
Comment 15•6 years ago
|
||
(In reply to Daniel Stenberg [:bagder] from comment #14)
> Just an additional data-point that I happened to notice.
>
> If I try this page with curl (which gets content back over h2) there's a
> very interesting little detail in its verbose details:
>
> $ curl weixin.qq.com -vL -o /dev/null
> ...
> * Connection state changed (MAX_CONCURRENT_STREAMS == 4294967295)!
>
> That's a lot of streams! =)
Interesting, I assume that's coming from wechat (and not from curl)? I ask, because I note that wechat does not send *any* actual settings values to either firefox or chrome, just an empty SETTINGS frame to satisfy the server preamble requirement from 7540.
Comment 16•6 years ago
|
||
Ooooh. One last thing I noticed (which caused a few people problems during the ietf process, but was explicitly agreed upon as ok). The first stream ID firefox uses is somewhere between 0x3 and 0xF (depending on if the priority tree is enabled). However, chrome (and curl, and, I assume, safari) all use 0x1 as the first stream id. I wouldn't be surprised if wechat's server is waiting for stream 0x1 to come in (which it never does, as firefox intentionally never uses that stream id).
Comment 17•6 years ago
|
||
Their policy team responded:
"I have forwarded the report to the appropriate member of our team to diagnose and repair the situation"
Updated•6 years ago
|
Priority: -- → P1
Comment 18•6 years ago
|
||
(In reply to Nicholas Hurley [:nwgh][:hurley] (he/him) from comment #16)
> Ooooh. One last thing I noticed (which caused a few people problems during
> the ietf process, but was explicitly agreed upon as ok). The first stream ID
> firefox uses is somewhere between 0x3 and 0xF (depending on if the priority
> tree is enabled). However, chrome (and curl, and, I assume, safari) all use
> 0x1 as the first stream id. I wouldn't be surprised if wechat's server is
> waiting for stream 0x1 to come in (which it never does, as firefox
> intentionally never uses that stream id).
Nicholas, how hard would it be to test sending 0x1, to see if it makes a difference here?
Flags: needinfo?(hurley)
Comment 19•6 years ago
|
||
I can do a quick local build with the changed stream id to check. Leaving ni? until I have an answer.
Comment 20•6 years ago
|
||
Unfortunately, it would seem my idea in comment 16 was incorrect - changing our first stream id to 0x1 does not make any difference.
Flags: needinfo?(hurley)
Comment 21•6 years ago
|
||
thanks for checking!
Comment 22•6 years ago
|
||
Following up with the policy team to see if we can get an update.
Comment 23•6 years ago
|
||
We've been put in contact with the relevant engineers. Added :nwgh and :stpeter to the email chain.
Comment 24•6 years ago
|
||
They have acknowledged the issue and committed to fixing it. Asking if they can provide an estimate of when it will be fixed.
Comment 25•6 years ago
|
||
They are looking to have the issue addressed sometime this month.
Updated•6 years ago
|
Keywords: regression
Comment 26•6 years ago
|
||
Comment 27•6 years ago
|
||
It seems that WeChat has solved this problem.
Comment 28•6 years ago
|
||
Yes, they responded that they have deployed the fix. Thanks everyone!
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Assignee | ||
Updated•6 years ago
|
Product: Tech Evangelism → Web Compatibility
Updated•5 years ago
|
You need to log in
before you can comment on or make changes to this bug.
Description
•