python-hyper / hyper

HTTP/2 for Python.
http://hyper.rtfd.org/en/latest/
MIT License
1.05k stars 191 forks source link

Ping does not work correctly #412

Open PrimozGodec opened 5 years ago

PrimozGodec commented 5 years ago

Issue

Ping function from Hyper does not check the real state of the connection. In my case, I make a connection to the server and then I switch off the internet connection. When I ping after switching off the internet connection ping is still successful. I went through the Hyper implementation and found out that ping function does not check whether the response (pong) comes back from the server. It just sends a request. Am I correct?

An example:

from hyper import HTTP20Connection
conn = HTTP20Connection('api.garaza.io:443',force_proto='h2')
# here I swithc off internet connection
conn.ping(bytes(8))

Am I doing anything wrong? Should I check the response separately?

PrimozGodec commented 5 years ago

@Lukasa can you give me just a hint on how to correct the issue or how to correctly use the ping function.

PrimozGodec commented 5 years ago

@njsmith, @sethmlarson, and @tomchristie I would be extremely happy if you give me a hint on how to solve the issue. It is a functionality that needs to work but I do not know how to start solving the issue since I do not understand the library exactly. I would be also happy if someone confirms that it is an issue.

tomchristie commented 5 years ago

Sorry, can't help here - I've not dug into it myself. (We likely won't want httpx to send outgoing ping messages, or expose that level of functionality in a public interface.)