[ 
https://issues.apache.org/jira/browse/TS-4092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15155592#comment-15155592
 ] 

ASF GitHub Bot commented on TS-4092:
------------------------------------

Github user maskit commented on a diff in the pull request:

    https://github.com/apache/trafficserver/pull/460#discussion_r53549624
  
    --- Diff: proxy/http2/Http2ConnectionState.cc ---
    @@ -992,43 +998,50 @@ Http2ConnectionState::send_headers_frame(FetchSM 
*fetch_sm)
     
       DebugHttp2Stream(ua_session, stream->get_id(), "Send HEADERS frame");
     
    -  // Write pseudo headers
    -  payload_length += http2_write_psuedo_headers(resp_header, 
payload_buffer, buf_len, *(this->remote_indexing_table));
    -
    -  // If response body is empty, set END_STREAM flag to HEADERS frame
    -  // Must check to ensure content-length is there.  Otherwise the value 
defaults
    -  // to 0
    -  if (resp_header->presence(MIME_PRESENCE_CONTENT_LENGTH) && 
resp_header->get_content_length() == 0) {
    -    flags |= HTTP2_FLAGS_HEADERS_END_STREAM;
    --- End diff --
    
    It's not intended but it seems OK, actually.
    
    I've looked into it and I found that current implementation (on master) 
sends END_STREAM flag twice. The first one is on a HEADERS frame and the second 
one is on an empty DATA frame. I'll create a jira ticket for it.
    
    But this logic should be here for efficient framing. I'm going to restore 
the logic.


> Decouple HPACK from HTTP/2
> --------------------------
>
>                 Key: TS-4092
>                 URL: https://issues.apache.org/jira/browse/TS-4092
>             Project: Traffic Server
>          Issue Type: Improvement
>          Components: HTTP/2
>            Reporter: Masakazu Kitajo
>            Assignee: Masakazu Kitajo
>             Fix For: 6.2.0
>
>
> Our HTTP/2 implementation and HPACK implementation are coupled tightly. This 
> is bad. It makes things complicated.
> I tried to write a test runner which uses [hpack-test-case 
> |https://github.com/http2jp/hpack-test-case], however, I had to call 
> functions in HTTP2.cc. Because HPACK.cc has only primitive encoder and 
> decoder, and doesn't handle header blocks. HTTP2.cc covers not only RFC7540 
> but also some part of RFC7541.
> On the other hand, HPACK.h exports pseudo header names as constants. They 
> should be in HTTP2.h or MIME.h as WKS. We don't need them in HPACK 
> implementation.
> Also, HPACK is used with QUIC (at least in current draft). We should decouple 
> HPACK from HTTP/2 so that we can use the module with QUIC in the future.
> Once we have done this, we can write tests for these improvements more easily.
> TS-4002, TS-4061, TS-4014 and TS-3478



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to