-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The widget fails to proxy in WebKit-based browsers #45
Comments
Update: the problem is racy. I can get an HTTP (not HTTPS) request to work via cURL about 50% of the time:
I haven't been able to get an HTTPS request to work yet. EDIT 12/02/2022: Given our recent focus on WebKit as the culprit -- and the fact that this bug is reproducible in desktop Safari -- it seems unlikely to be related to the old bug I described below.
I gotta keep digging... |
I fired up the widget in mobile Firefox on my iPhone, and it exhibits the same bug as it does while running under mobile Safari and mobile Chrome on that iPhone. Since the widget runs fine in mobile Chrome on my Android tablet but has issues running under all mobile browsers on my iPhone, I've changed the focus of this ticket to iOS only. My phone is an iPhone 8 running iOS 16.1.1. Update: I bumped my iPhone 8 to iOS 16.1.2 and the issue persists. |
@woodybury wisely pointed out that the unifying theme here is WebKit, since all mobile browsers on iOS are mandated by Apple to use WebKit under the hood. |
In light of #12, I've changed the focus of this ticket to WebKit-based browsers. Here's the error reported by @woodybury in desktop Safari:
|
@woodybury solved it: It's caused by an experimental WebKit feature, If you disable that feature, everything works as expected. See: https://developer.apple.com/forums/thread/685403?page=2 I'm currently investigating a serverside workaround that doesn't require WebKit-based users to disable an experimental feature. |
Another good thread about the pain of Arrest Tim Cook |
The underlying WebKit bug is related to Apple's broken implementation of WebSocket compression. Fixed with a workaround. We disable WebSocket compression in the egress server: adb7c82 A couple more interesting discussions about the WebKit bug to leave you with: |
UPDATE 12/02/2022 PART 2: In conjunction with #12, it sure seems that this issue is actually about WebKit.
UPDATE 12/02/2022 PART 1: This issue was previously focused on all mobile platforms, but after some basic sleuthing it seems that the bug is related to iOS only. See the conversation below...
In pursuit of https://github.com/getlantern/engineering/issues/78, I fired up the widget in both Chrome and Safari on my iPhone 8. The widget completes signaling as expected -- but when I try to proxy Firefox through it, it doesn't work.
The UI
Current throughput
andLifetime data proxied
values do bounce around a bit in the way I'd expect them to, indicating that we're pushing bytes through the thing.Inspecting the mobile Chrome log, it looks like the widget's connection to the egress server is borking.
Because of the way we mux and demux protocols at the egress server, sometimes WebSocket borkage actually reflects an error at a higher level of the stack -- for example, it's possible that something is going wrong with an smux stream.
Attached: the widget in mobile Chrome on my iPhone, and the related
chrome://inspect
output.The text was updated successfully, but these errors were encountered: