-
Notifications
You must be signed in to change notification settings - Fork 59
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
Hangs when HTTP/2 is used #36
Comments
Have you got a server that I can test with? |
@fangfufu Here: https://lib3.net/httpdirfs Enabling |
I am not a big fan of Fixed in 4491377. |
Hrm. A forced protocol downgrade seems like a harsh workaround... Isn't there some way we could just properly close all open connections after each filesystem operation? |
Right now network connections are not coupled to filesystem operations. I think it is better performance to allow libcurl to reuse existing connections for the next filesystem operation, rather than opening and closing a connection after each operation. I have absolutely no idea why I can't use HTTP2. I don't know if it is related to this: |
I think this is definitely a problem with libcurl, or maybe a misconfiguration of libcurl. I created a dev branch, with HTTP2 and HTTP2 multiplexing enabled. It gets stuck at the following line: I have no idea why it gets stuck in |
Let's push the protocol downgrade as a workaround for the next version, but keep the HTTP/2 branch for debugging. It might be worth it to dig deeper into the documentation or check with libcurl developpers. |
I tried setting connection timeout to 1 sec, it doesn't help. I think this might needs some sort of packet sniffing, or at least check externally to see if the connection is still open.
Update: This seems to occasionally help. |
I tried building with newer libcurl, 7.65.1 but there was no improvement. |
Setting |
By the way, this has got nothing to do with multithreading - running HTTPDirFS in single thread mode does not help with this problem. |
Okay, I figured out why now. I use curl's share interface to share as many things as possible between curl handles. It looks like the flag Since we are using curl multi interface, it is not necessary to configure Finally I cannot get [2] to work at all, even after setting Fixed in ed37aa5 |
When HTTP/2 is used between libcurl and the server, HTTPDirFS will hang when requesting a subdirectory. The initial request for the root directory works fine, it seems to hang when trying to list a directory or requesting a file after the initial setup. For example, with
CURLOPT_VERBOSE
:The problems doesn't occur when using HTTP/1.1.
The text was updated successfully, but these errors were encountered: