You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ic...@apache.org on 2016/08/24 14:44:53 UTC
svn commit: r1757534 - in /httpd/httpd/trunk: CHANGES
modules/http2/h2_filter.c modules/http2/h2_response.c
modules/http2/h2_stream.c modules/http2/h2_stream.h modules/http2/h2_task.c
Author: icing
Date: Wed Aug 24 14:44:53 2016
New Revision: 1757534
URL: http://svn.apache.org/viewvc?rev=1757534&view=rev
Log:
mod_http2: latest h2/state debug draft, fixes in 100-continue response generation
Modified:
httpd/httpd/trunk/CHANGES
httpd/httpd/trunk/modules/http2/h2_filter.c
httpd/httpd/trunk/modules/http2/h2_response.c
httpd/httpd/trunk/modules/http2/h2_stream.c
httpd/httpd/trunk/modules/http2/h2_stream.h
httpd/httpd/trunk/modules/http2/h2_task.c
Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1757534&r1=1757533&r2=1757534&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Wed Aug 24 14:44:53 2016
@@ -1,6 +1,10 @@
-*- coding: utf-8 -*-
Changes with Apache 2.5.0
+ *) mod_http2: h2 status resource follows latest draft, see
+ http://www.ietf.org/id/draft-benfield-http2-debug-state-01.txt
+ [Stefan Eissing]
+
*) mod_http2: handling graceful shutdown gracefully, e.g. handling existing
streams to the end. [Stefan Eissing]
Modified: httpd/httpd/trunk/modules/http2/h2_filter.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_filter.c?rev=1757534&r1=1757533&r2=1757534&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_filter.c (original)
+++ httpd/httpd/trunk/modules/http2/h2_filter.c Wed Aug 24 14:44:53 2016
@@ -258,6 +258,7 @@ static int add_stream(h2_stream *stream,
flowOut = nghttp2_session_get_stream_remote_window_size(x->s->ngh2, stream->id);
bbout(x->bb, "%s\n \"%d\": {\n", (x->idx? "," : ""), stream->id);
bbout(x->bb, " \"state\": \"%s\",\n", h2_stream_state_str(stream));
+ bbout(x->bb, " \"created\": %f,\n", ((double)stream->created)/APR_USEC_PER_SEC);
bbout(x->bb, " \"flowIn\": %d,\n", flowIn);
bbout(x->bb, " \"flowOut\": %d,\n", flowOut);
bbout(x->bb, " \"dataIn\": %"APR_UINT64_T_FMT",\n", stream->in_data_octets);
@@ -363,6 +364,7 @@ static apr_status_t h2_status_stream_fil
apr_itoa(stream->pool, connFlowOut));
bbout(bb, "{\n");
+ bbout(bb, " \"version\": \"draft-01\",\n");
add_settings(bb, s, 0);
add_peer_settings(bb, s, 0);
bbout(bb, " \"connFlowIn\": %d,\n", connFlowIn);
Modified: httpd/httpd/trunk/modules/http2/h2_response.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_response.c?rev=1757534&r1=1757533&r2=1757534&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_response.c (original)
+++ httpd/httpd/trunk/modules/http2/h2_response.c Wed Aug 24 14:44:53 2016
@@ -144,7 +144,7 @@ h2_response *h2_response_rcreate(int str
response->stream_id = stream_id;
response->http_status = status;
response->content_length = -1;
- response->headers = header;
+ response->headers = header? header : apr_table_make(pool, 5);
response->sos_filter = get_sos_filter(r->notes);
check_clen(response, r, pool);
Modified: httpd/httpd/trunk/modules/http2/h2_stream.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_stream.c?rev=1757534&r1=1757533&r2=1757534&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_stream.c (original)
+++ httpd/httpd/trunk/modules/http2/h2_stream.c Wed Aug 24 14:44:53 2016
@@ -181,6 +181,7 @@ h2_stream *h2_stream_open(int id, apr_po
h2_stream *stream = apr_pcalloc(pool, sizeof(h2_stream));
stream->id = id;
+ stream->created = apr_time_now();
stream->state = H2_STREAM_ST_IDLE;
stream->pool = pool;
stream->session = session;
Modified: httpd/httpd/trunk/modules/http2/h2_stream.h
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_stream.h?rev=1757534&r1=1757533&r2=1757534&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_stream.h (original)
+++ httpd/httpd/trunk/modules/http2/h2_stream.h Wed Aug 24 14:44:53 2016
@@ -43,6 +43,7 @@ typedef struct h2_stream h2_stream;
struct h2_stream {
int id; /* http2 stream id */
+ apr_time_t created; /* when stream was created */
h2_stream_state_t state; /* http/2 state of this stream */
struct h2_session *session; /* the session this stream belongs to */
Modified: httpd/httpd/trunk/modules/http2/h2_task.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http2/h2_task.c?rev=1757534&r1=1757533&r2=1757534&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/http2/h2_task.c (original)
+++ httpd/httpd/trunk/modules/http2/h2_task.c Wed Aug 24 14:44:53 2016
@@ -520,11 +520,11 @@ static apr_status_t h2_filter_continue(a
apr_status_t status;
AP_DEBUG_ASSERT(task);
- if (f->r->expecting_100) {
+ if (f->r->expecting_100 && ap_is_HTTP_SUCCESS(f->r->status)) {
h2_response *response;
response = h2_response_rcreate(task->stream_id, f->r, HTTP_CONTINUE,
- f->r->headers_out, f->r->pool);
+ NULL, f->r->pool);
ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, f->r,
"h2_task(%s): send 100 Continue", task->id);
status = open_response(task, response);