On 14/02/18 15:41, Rémy Maucherat wrote: > Hi, > > I'm using h2test on and off to see what's going on. It helps me find a > significant issue sometimes (like this one r1823670).
I've been using h2spec which also found a number of issues. Generally, test suites are very helpful. > Now, it almost looks ok, with a few oddities left: > - The ping flag may be inverted (ack is supposed to be 0, not 1, from what > I read in the spec). Did I miss something ? The relevant text appears to be in 6.7. My reading of that (before I look at the code) is that if an endpoint receives a PING frame without an ACK, it must echo it back with an ACK. If and endpoint receives a PING frame with an ACK it does nothing. Checking the code now... For receiving pings[1], the behaviour looks to be correct. If ACK is set, the roound-trip time is updated. If ACK is not set, a PING frame is sent back and the payload is echoed. For sending new pings, the ACK[2] is not sent and we use the payload to hold the sequence (it makes determining the round-trip time easier). There are also a handful of test cases for PING frames that check various aspects of this. Everything looks to be correct as far as I can tell. Can you elaborate on where you think the problem is? > - The ping opaque data seems (to me) to be processed and sent back > properly, but for some reason the client sees it corrupted. Odd. Very odd. Can you do this over h2c and get a wireshark trace? Mark [1] https://github.com/apache/tomcat/blob/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java#L1444 [2] https://github.com/apache/tomcat/blob/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java#L1436 --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org