[jira] [Updated] (TS-4880) RemapPlugin class doesn't work correctly
[ https://issues.apache.org/jira/browse/TS-4880?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-4880: -- Description: Current atscppapi::RemapPlugin has two issues. These seem to be caused by missing utils::internal::initTransactionManagement() call. First, after TS-4555, plugins uses RemapPlugin class doesn't work because it can't pass an assertion. {noformat} # my remap.config. It uses RemapPlugin, one of atscppapi examples. map / http://127.0.0.1:80/ @plugin=RemapPlugin.so {noformat} {noformat} $ lldb /path/to/traffic_server ... (lldb) r ... (lldb) bt ... * thread #7: tid = 0x3ce4eef, 0x7fff886d0f06 libsystem_kernel.dylib`__pthread_kill + 10, name = '[ET_NET 4]', stop reason = signal SIGABRT * frame #0: 0x7fff886d0f06 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x7fff91d6b4ec libsystem_pthread.dylib`pthread_kill + 90 frame #2: 0x7fff902b56df libsystem_c.dylib`abort + 129 frame #3: 0x00039799 libtsutil.7.dylib`ink_abort(message_format="%s:%d: failed assertion `%s`") + 361 at ink_error.cc:79 frame #4: 0x0003703f libtsutil.7.dylib`::_ink_assert(expression="arg_idx >= 0 && arg_idx < HTTP_SSN_TXN_MAX_USER_ARG", file="InkAPI.cc", line=5881) + 47 at ink_assert.cc:37 frame #5: 0x0001000446c3 traffic_server`::_TSReleaseAssert(text="arg_idx >= 0 && arg_idx < HTTP_SSN_TXN_MAX_USER_ARG", file="InkAPI.cc", line=5881) + 35 at InkAPI.cc:396 frame #6: 0x000100054e0f traffic_server`::TSHttpTxnArgGet(txnp=0x05d6b200, arg_idx=-1) + 111 at InkAPI.cc:5881 frame #7: 0x0579bb9b libatscppapi.7.dylib`atscppapi::utils::internal::getTransaction(ats_txn_handle=0x05d6b200) + 27 at utils_internal.cc:159 frame #8: 0x057bba8c libatscppapi.7.dylib`::TSRemapDoRemap(ih=0x00759fe0, rh=0x05d6b200, rri=0x7058df08) + 108 at RemapPlugin.cc:35 frame #9: 0x0001001cb79e traffic_server`RemapPlugins::run_plugin(this=0x7058e0e8, plugin=0x00759f90) + 350 at RemapPlugins.cc:75 frame #10: 0x0001001cb9c3 traffic_server`RemapPlugins::run_single_remap(this=0x7058e0e8) + 435 at RemapPlugins.cc:111 ... {noformat} Second, Remap Plugin remains an another issue if we simply revert https://github.com/apache/trafficserver/commit/17fdb2fd7dc47d09f8c8d7f9b6ff27b035c00d85. Objects of atscppapi::Transaction is created correctly at utils_internal.cc, but its destructor is never called. {noformat} # Revert and rebuild ATS $ git revert 17fdb2fd7dc47d09f8c8d7f9b6ff27b035c00d85 --no-commit ... $ make && make install {noformat} {noformat} $ lldb /path/to/traffic_server ... (lldb) r ... # It can pass the assertion! but ... (lldb) b -M ~Transaction (lldb) r # atscppapi::Transaction::~Transaction() is not called. {noformat} was: Current atscppapi::RemapPlugin has two issues. These seem to be caused by missing utils::internal::initTransactionManagement() call. First, after TS-4555, plugins uses RemapPlugin class doesn't work because it can't pass an assertion. {noformat} # my remap.config. It uses RemapPlugin, one of atscppapi examples. map / http://127.0.0.1:80/ @plugin=RemapPlugin.so {noformat} {noformat} $ lldb /path/to/traffic_server ... (lldb) r ... (lldb) bt ... * thread #7: tid = 0x3ce4eef, 0x7fff886d0f06 libsystem_kernel.dylib`__pthread_kill + 10, name = '[ET_NET 4]', stop reason = signal SIGABRT * frame #0: 0x7fff886d0f06 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x7fff91d6b4ec libsystem_pthread.dylib`pthread_kill + 90 frame #2: 0x7fff902b56df libsystem_c.dylib`abort + 129 frame #3: 0x00039799 libtsutil.7.dylib`ink_abort(message_format="%s:%d: failed assertion `%s`") + 361 at ink_error.cc:79 frame #4: 0x0003703f libtsutil.7.dylib`::_ink_assert(expression="arg_idx >= 0 && arg_idx < HTTP_SSN_TXN_MAX_USER_ARG", file="InkAPI.cc", line=5881) + 47 at ink_assert.cc:37 frame #5: 0x0001000446c3 traffic_server`::_TSReleaseAssert(text="arg_idx >= 0 && arg_idx < HTTP_SSN_TXN_MAX_USER_ARG", file="InkAPI.cc", line=5881) + 35 at InkAPI.cc:396 frame #6: 0x000100054e0f traffic_server`::TSHttpTxnArgGet(txnp=0x05d6b200, arg_idx=-1) + 111 at InkAPI.cc:5881 frame #7: 0x0579bb9b libatscppapi.7.dylib`atscppapi::utils::internal::getTransaction(ats_txn_handle=0x05d6b200) + 27 at utils_internal.cc:159 frame #8: 0x057bba8c libatscppapi.7.dylib`::TSRemapDoRemap(ih=0x00759fe0, rh=0x05d6b200, rri=0x7058df08) + 108 at RemapPlugin.cc:35 frame #9: 0x0001001cb79e traffic_server`RemapPlugins::run_plugin(this=0x7058e0e8, plugin=0x00759f90) + 350 at RemapPlugins.cc:75 frame #10: 0x0001001cb9c3 traffic_server`RemapPlugins::run_single_remap(this=0x7058e0e8) + 435 at RemapPlugins.cc:111 ... {noformat} Second, Remap
[jira] [Created] (TS-4880) RemapPlugin class doesn't work correctly
Ryo Okubo created TS-4880: - Summary: RemapPlugin class doesn't work correctly Key: TS-4880 URL: https://issues.apache.org/jira/browse/TS-4880 Project: Traffic Server Issue Type: Bug Components: CPP API Reporter: Ryo Okubo Assignee: Brian Geffon Current atscppapi::RemapPlugin has two issues. These seem to be caused by missing utils::internal::initTransactionManagement() call. First, after TS-4555, plugins uses RemapPlugin class doesn't work because it can't pass an assertion. {noformat} # my remap.config. It uses RemapPlugin, one of atscppapi examples. map / http://127.0.0.1:80/ @plugin=RemapPlugin.so {noformat} {noformat} $ lldb /path/to/traffic_server ... (lldb) r ... (lldb) bt ... * thread #7: tid = 0x3ce4eef, 0x7fff886d0f06 libsystem_kernel.dylib`__pthread_kill + 10, name = '[ET_NET 4]', stop reason = signal SIGABRT * frame #0: 0x7fff886d0f06 libsystem_kernel.dylib`__pthread_kill + 10 frame #1: 0x7fff91d6b4ec libsystem_pthread.dylib`pthread_kill + 90 frame #2: 0x7fff902b56df libsystem_c.dylib`abort + 129 frame #3: 0x00039799 libtsutil.7.dylib`ink_abort(message_format="%s:%d: failed assertion `%s`") + 361 at ink_error.cc:79 frame #4: 0x0003703f libtsutil.7.dylib`::_ink_assert(expression="arg_idx >= 0 && arg_idx < HTTP_SSN_TXN_MAX_USER_ARG", file="InkAPI.cc", line=5881) + 47 at ink_assert.cc:37 frame #5: 0x0001000446c3 traffic_server`::_TSReleaseAssert(text="arg_idx >= 0 && arg_idx < HTTP_SSN_TXN_MAX_USER_ARG", file="InkAPI.cc", line=5881) + 35 at InkAPI.cc:396 frame #6: 0x000100054e0f traffic_server`::TSHttpTxnArgGet(txnp=0x05d6b200, arg_idx=-1) + 111 at InkAPI.cc:5881 frame #7: 0x0579bb9b libatscppapi.7.dylib`atscppapi::utils::internal::getTransaction(ats_txn_handle=0x05d6b200) + 27 at utils_internal.cc:159 frame #8: 0x057bba8c libatscppapi.7.dylib`::TSRemapDoRemap(ih=0x00759fe0, rh=0x05d6b200, rri=0x7058df08) + 108 at RemapPlugin.cc:35 frame #9: 0x0001001cb79e traffic_server`RemapPlugins::run_plugin(this=0x7058e0e8, plugin=0x00759f90) + 350 at RemapPlugins.cc:75 frame #10: 0x0001001cb9c3 traffic_server`RemapPlugins::run_single_remap(this=0x7058e0e8) + 435 at RemapPlugins.cc:111 ... {noformat} Second, Remap Plugin remains an another issue if we simply revert https://github.com/apache/trafficserver/commit/17fdb2fd7dc47d09f8c8d7f9b6ff27b035c00d85. Objects of atscppapi::Transaction is created correctly at utils_internal.cc, but its destructor is never called. {noformat} # Revert and rebuild ATS $ git revert 17fdb2fd7dc47d09f8c8d7f9b6ff27b035c00d85 --no-commit ... $ make && make install {noformat} {noformat} $ lldb /path/to/traffic_server ... (lldb) r ... # It can pass the assertion! but ... (lldb) b -M ~Transaction (lldb) r # atscppapi::Transaction::~Transaction() is called. {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3498) h2c (upgrade dance) seems to hang
[ https://issues.apache.org/jira/browse/TS-3498?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15240681#comment-15240681 ] Ryo Okubo commented on TS-3498: --- [~zwoop] I agree with your suggestion because major browsers don't support h2c upgrading. We should remove h2c support. > h2c (upgrade dance) seems to hang > - > > Key: TS-3498 > URL: https://issues.apache.org/jira/browse/TS-3498 > Project: Traffic Server > Issue Type: Bug > Components: HTTP/2 >Reporter: Leif Hedstrom >Assignee: Ryo Okubo > Fix For: sometime > > > I see > {code} > loki (09:37) 259/0 $ nghttp -v -u http://docs.trafficserver.apache.org > [ 0.031] Connected > [ 0.031] HTTP Upgrade request > GET / HTTP/1.1 > Host: docs.trafficserver.apache.org > Connection: Upgrade, HTTP2-Settings > Upgrade: h2c-14 > HTTP2-Settings: AAMAAABkAAQAAP__ > Accept: */* > User-Agent: nghttp2/0.7.4-DEV > [ 0.066] HTTP Upgrade response > HTTP/1.1 101 Switching Protocols > Date: Sun, 05 Apr 2015 15:37:58 GMT > Connection: Upgrade > Via: http/1.1 ATS (ApacheTrafficServer/5.3.0 [c s f ]) > Server: ATS/5.3.0 > Upgrade: h2c-14 > [ 0.066] HTTP Upgrade success > [ 0.066] recv SETTINGS frame
[jira] [Created] (TS-4087) H2 flexible resource limitation
Ryo Okubo created TS-4087: - Summary: H2 flexible resource limitation Key: TS-4087 URL: https://issues.apache.org/jira/browse/TS-4087 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Current H2 implementation depends on FetchSM and PluginVC to forward requests. But their memory footprint is very high. It may be vulnerable to DoS attack. As simple ways to avoid the problem, we can use two limitations, _proxy.config.net.connections_throttle_ and _proxy.config.http2.max_concurrent_streams_in_. But reducing number of _proxy.config.net.connections_throttle_ causes that number of acceptable HTTP/1.1 requests become lower. And reducing _proxy.config.http2.max_concurrent_streams_in_ restricts benefits of H2. I'd like to propose more flexible resource limitation for current H2 impl based on number of active H2 streams. Its adding an upper limit of active H2 streams. If tis exceeded, ATS send low number of SETTINGS_MAX_CONCURRENT_STREAMS to clients and/or RST_STREAM frame. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3478) Indexing header representations on HPACK encoder
[ https://issues.apache.org/jira/browse/TS-3478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15063244#comment-15063244 ] Ryo Okubo commented on TS-3478: --- I've done almost of fixing conflict and I'll create a PR soon. If its no problem, I'd like to land it for 6.1.0. > Indexing header representations on HPACK encoder > > > Key: TS-3478 > URL: https://issues.apache.org/jira/browse/TS-3478 > Project: Traffic Server > Issue Type: Improvement > Components: HTTP/2 >Reporter: Ryo Okubo >Assignee: Ryo Okubo > Labels: review > Fix For: 6.1.0 > > Attachments: indexing.patch > > > Support other header field representations on HPACK encoder. > http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6 > Currently the encoder supports only [Literal Header Field never > Indexed|http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6.2.3]. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3819) H2 error logging
[ https://issues.apache.org/jira/browse/TS-3819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3819: -- Attachment: h2_errorlog_0004.patch Fix conflict based on current master branch. [~zwoop] please check {{h2_errorlog_0004.patch}} H2 error logging Key: TS-3819 URL: https://issues.apache.org/jira/browse/TS-3819 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: Leif Hedstrom Fix For: 6.1.0 Attachments: h2_errorlog_0001.patch, h2_errorlog_0002.patch, h2_errorlog_0003.patch, h2_errorlog_0004.patch RST_STREAM and GOAWAY may deliver [various errors|https://tools.ietf.org/html/rfc7540#section-7]. I want to record them to error.log -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3860) Buffer overflow in H2 on debug build
[ https://issues.apache.org/jira/browse/TS-3860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3860: -- Attachment: ts-3860-02.patch Fixed types of argumets passed to {{mime_field_name_value_set()}} [~bcall] please check a new patch. Buffer overflow in H2 on debug build Key: TS-3860 URL: https://issues.apache.org/jira/browse/TS-3860 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Leif Hedstrom Assignee: Ryo Okubo Labels: yahoo Fix For: 6.1.0 Attachments: ts-3860-01.patch, ts-3860-02.patch {code} ==15480==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00acafe8 at pc 0x7f13fa bp 0x7ff13b8e3ee0 sp 0x7ff13b8e3ed8 READ of size 1 at 0x00acafe8 thread T8 ([ET_NET 7]) #0 0x7f13f9 in checksum_block(char const*, int) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:530 #1 0x7f167f in mime_hdr_sanity_check(MIMEHdrImpl*) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:560 #2 0x7f5d6d in mime_hdr_field_attach(MIMEHdrImpl*, MIMEField*, int, MIMEField*) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:1533 #3 0x6fd29a in http2_write_psuedo_headers(HTTPHdr*, unsigned char*, unsigned long, Http2DynamicTable) /usr/local/src/trafficserver/proxy/http2/HTTP2.cc:560 #4 0x710ecd in Http2ConnectionState::send_headers_frame(FetchSM*) /usr/local/src/trafficserver/proxy/http2/Http2ConnectionState.cc:966 #5 0x70f906 in Http2ConnectionState::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ConnectionState.cc:768 #6 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #7 0x704fe9 in send_connection_event /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:60 #8 0x707176 in Http2ClientSession::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:259 #9 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #10 0x52bd6a in FetchSM::InvokePluginExt(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:260 #11 0x52d6e6 in FetchSM::process_fetch_read(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:456 #12 0x52df4a in FetchSM::fetch_handler(int, void*) /usr/local/src/trafficserver/proxy/FetchSM.cc:518 #13 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #14 0x5abc09 in PluginVC::process_read_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:663 #15 0x5aa834 in PluginVC::process_write_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:555 #16 0x5a74dc in PluginVC::main_handler(int, void*) /usr/local/src/trafficserver/proxy/PluginVC.cc:208 #17 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #18 0xa23154 in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:128 #19 0xa236f7 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:179 #20 0xa21662 in spawn_thread_internal /usr/local/src/trafficserver/iocore/eventsystem/Thread.cc:86 #21 0x7ff143381df4 in start_thread (/lib64/libpthread.so.0+0x7df4) #22 0x7ff1426291ac in __clone (/lib64/libc.so.6+0xf61ac) 0x00acafe8 is located 0 bytes to the right of global variable '*.LC7' from 'HPACK.cc' (0xacafe0) of size 8 '*.LC7' is ascii string ':status' SUMMARY: AddressSanitizer: global-buffer-overflow /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:530 checksum_block(char const*, int) Shadow bytes around the buggy address: 0x801515a0: 04 f9 f9 f9 f9 f9 f9 f9 00 00 00 00 00 00 00 00 0x801515b0: 01 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9 0x801515c0: 01 f9 f9 f9 f9 f9 f9 f9 00 00 00 04 f9 f9 f9 f9 0x801515d0: 00 00 05 f9 f9 f9 f9 f9 00 00 00 00 00 f9 f9 f9 0x801515e0: f9 f9 f9 f9 00 f9 f9 f9 f9 f9 f9 f9 00 03 f9 f9 =0x801515f0: f9 f9 f9 f9 06 f9 f9 f9 f9 f9 f9 f9 00[f9]f9 f9 0x80151600: f9 f9 f9 f9 00 00 00 00 00 00 00 00 00 00 00 00 0x80151610: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 f9 f9 0x80151620: f9 f9 f9 f9 00 00 06 f9 f9 f9 f9 f9 00 00 00 00 0x80151630: 00 00 00 05 f9 f9 f9 f9 00 00 00 00 00 00 00 00 0x80151640: 00 00 03 f9 f9 f9 f9 f9 00 00 00 02 f9 f9 f9 f9 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Heap right redzone: fb Freed heap region: fd Stack left redzone: f1
[jira] [Commented] (TS-3860) Buffer overflow in H2 on debug build
[ https://issues.apache.org/jira/browse/TS-3860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14710764#comment-14710764 ] Ryo Okubo commented on TS-3860: --- [~bcall] [~zwoop] I think adding a new flag would confuse ... as an other approach, I post a patch that disables {{n_v_raw_printable}} flag. Can you try it? Buffer overflow in H2 on debug build Key: TS-3860 URL: https://issues.apache.org/jira/browse/TS-3860 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Leif Hedstrom Assignee: Ryo Okubo Labels: yahoo Fix For: 6.1.0 Attachments: ts-3860-01.patch {code} ==15480==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00acafe8 at pc 0x7f13fa bp 0x7ff13b8e3ee0 sp 0x7ff13b8e3ed8 READ of size 1 at 0x00acafe8 thread T8 ([ET_NET 7]) #0 0x7f13f9 in checksum_block(char const*, int) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:530 #1 0x7f167f in mime_hdr_sanity_check(MIMEHdrImpl*) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:560 #2 0x7f5d6d in mime_hdr_field_attach(MIMEHdrImpl*, MIMEField*, int, MIMEField*) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:1533 #3 0x6fd29a in http2_write_psuedo_headers(HTTPHdr*, unsigned char*, unsigned long, Http2DynamicTable) /usr/local/src/trafficserver/proxy/http2/HTTP2.cc:560 #4 0x710ecd in Http2ConnectionState::send_headers_frame(FetchSM*) /usr/local/src/trafficserver/proxy/http2/Http2ConnectionState.cc:966 #5 0x70f906 in Http2ConnectionState::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ConnectionState.cc:768 #6 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #7 0x704fe9 in send_connection_event /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:60 #8 0x707176 in Http2ClientSession::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:259 #9 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #10 0x52bd6a in FetchSM::InvokePluginExt(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:260 #11 0x52d6e6 in FetchSM::process_fetch_read(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:456 #12 0x52df4a in FetchSM::fetch_handler(int, void*) /usr/local/src/trafficserver/proxy/FetchSM.cc:518 #13 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #14 0x5abc09 in PluginVC::process_read_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:663 #15 0x5aa834 in PluginVC::process_write_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:555 #16 0x5a74dc in PluginVC::main_handler(int, void*) /usr/local/src/trafficserver/proxy/PluginVC.cc:208 #17 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #18 0xa23154 in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:128 #19 0xa236f7 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:179 #20 0xa21662 in spawn_thread_internal /usr/local/src/trafficserver/iocore/eventsystem/Thread.cc:86 #21 0x7ff143381df4 in start_thread (/lib64/libpthread.so.0+0x7df4) #22 0x7ff1426291ac in __clone (/lib64/libc.so.6+0xf61ac) 0x00acafe8 is located 0 bytes to the right of global variable '*.LC7' from 'HPACK.cc' (0xacafe0) of size 8 '*.LC7' is ascii string ':status' SUMMARY: AddressSanitizer: global-buffer-overflow /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:530 checksum_block(char const*, int) Shadow bytes around the buggy address: 0x801515a0: 04 f9 f9 f9 f9 f9 f9 f9 00 00 00 00 00 00 00 00 0x801515b0: 01 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9 0x801515c0: 01 f9 f9 f9 f9 f9 f9 f9 00 00 00 04 f9 f9 f9 f9 0x801515d0: 00 00 05 f9 f9 f9 f9 f9 00 00 00 00 00 f9 f9 f9 0x801515e0: f9 f9 f9 f9 00 f9 f9 f9 f9 f9 f9 f9 00 03 f9 f9 =0x801515f0: f9 f9 f9 f9 06 f9 f9 f9 f9 f9 f9 f9 00[f9]f9 f9 0x80151600: f9 f9 f9 f9 00 00 00 00 00 00 00 00 00 00 00 00 0x80151610: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 f9 f9 0x80151620: f9 f9 f9 f9 00 00 06 f9 f9 f9 f9 f9 00 00 00 00 0x80151630: 00 00 00 05 f9 f9 f9 f9 00 00 00 00 00 00 00 00 0x80151640: 00 00 03 f9 f9 f9 f9 f9 00 00 00 02 f9 f9 f9 f9 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Heap right redzone:
[jira] [Updated] (TS-3860) Buffer overflow in H2 on debug build
[ https://issues.apache.org/jira/browse/TS-3860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3860: -- Attachment: ts-3860-01.patch When {{n_v_raw_printable}} flag is true, a pair of header field name and value seems to be regarded as they're arranged on consecutive addresses. Its not in {{http2_write_psuedo_headers()}} so {{mime_field_name_value_set()}} should be called with false as {{n_v_raw_printable}}. Buffer overflow in H2 on debug build Key: TS-3860 URL: https://issues.apache.org/jira/browse/TS-3860 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Leif Hedstrom Assignee: Ryo Okubo Labels: yahoo Fix For: 6.1.0 Attachments: ts-3860-01.patch {code} ==15480==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00acafe8 at pc 0x7f13fa bp 0x7ff13b8e3ee0 sp 0x7ff13b8e3ed8 READ of size 1 at 0x00acafe8 thread T8 ([ET_NET 7]) #0 0x7f13f9 in checksum_block(char const*, int) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:530 #1 0x7f167f in mime_hdr_sanity_check(MIMEHdrImpl*) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:560 #2 0x7f5d6d in mime_hdr_field_attach(MIMEHdrImpl*, MIMEField*, int, MIMEField*) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:1533 #3 0x6fd29a in http2_write_psuedo_headers(HTTPHdr*, unsigned char*, unsigned long, Http2DynamicTable) /usr/local/src/trafficserver/proxy/http2/HTTP2.cc:560 #4 0x710ecd in Http2ConnectionState::send_headers_frame(FetchSM*) /usr/local/src/trafficserver/proxy/http2/Http2ConnectionState.cc:966 #5 0x70f906 in Http2ConnectionState::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ConnectionState.cc:768 #6 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #7 0x704fe9 in send_connection_event /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:60 #8 0x707176 in Http2ClientSession::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:259 #9 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #10 0x52bd6a in FetchSM::InvokePluginExt(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:260 #11 0x52d6e6 in FetchSM::process_fetch_read(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:456 #12 0x52df4a in FetchSM::fetch_handler(int, void*) /usr/local/src/trafficserver/proxy/FetchSM.cc:518 #13 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #14 0x5abc09 in PluginVC::process_read_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:663 #15 0x5aa834 in PluginVC::process_write_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:555 #16 0x5a74dc in PluginVC::main_handler(int, void*) /usr/local/src/trafficserver/proxy/PluginVC.cc:208 #17 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #18 0xa23154 in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:128 #19 0xa236f7 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:179 #20 0xa21662 in spawn_thread_internal /usr/local/src/trafficserver/iocore/eventsystem/Thread.cc:86 #21 0x7ff143381df4 in start_thread (/lib64/libpthread.so.0+0x7df4) #22 0x7ff1426291ac in __clone (/lib64/libc.so.6+0xf61ac) 0x00acafe8 is located 0 bytes to the right of global variable '*.LC7' from 'HPACK.cc' (0xacafe0) of size 8 '*.LC7' is ascii string ':status' SUMMARY: AddressSanitizer: global-buffer-overflow /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:530 checksum_block(char const*, int) Shadow bytes around the buggy address: 0x801515a0: 04 f9 f9 f9 f9 f9 f9 f9 00 00 00 00 00 00 00 00 0x801515b0: 01 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9 0x801515c0: 01 f9 f9 f9 f9 f9 f9 f9 00 00 00 04 f9 f9 f9 f9 0x801515d0: 00 00 05 f9 f9 f9 f9 f9 00 00 00 00 00 f9 f9 f9 0x801515e0: f9 f9 f9 f9 00 f9 f9 f9 f9 f9 f9 f9 00 03 f9 f9 =0x801515f0: f9 f9 f9 f9 06 f9 f9 f9 f9 f9 f9 f9 00[f9]f9 f9 0x80151600: f9 f9 f9 f9 00 00 00 00 00 00 00 00 00 00 00 00 0x80151610: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 f9 f9 0x80151620: f9 f9 f9 f9 00 00 06 f9 f9 f9 f9 f9 00 00 00 00 0x80151630: 00 00 00 05 f9 f9 f9 f9 00 00 00 00 00 00 00 00 0x80151640: 00 00 03 f9 f9 f9 f9 f9 00 00 00 02 f9 f9 f9 f9 Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00
[jira] [Commented] (TS-3860) Buffer overflow in H2 on debug build
[ https://issues.apache.org/jira/browse/TS-3860?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14706100#comment-14706100 ] Ryo Okubo commented on TS-3860: --- We've just catched the same issue. It may occur when you build with --enable-debug option. Its caused by calling mime_field_name_value_set() without must_copy_strings flag. Current HPACK encoder passes char* variables refering to separated address as header field name/value. https://github.com/apache/trafficserver/blob/master/proxy/http2/HTTP2.cc#L558-L559 But mime_hdr_sanity_check() seems to suppose header field name/value are put on consecutive address. https://github.com/apache/trafficserver/blob/master/proxy/hdrs/MIME.cc#L559-L560 I have a basic question ... should header field name/value stored at HdrHeap are put on consecutive address? If so, we should modify to call mime_field_name_value_set() with must_copy_strings. Buffer overflow in H2 on debug build Key: TS-3860 URL: https://issues.apache.org/jira/browse/TS-3860 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Leif Hedstrom Labels: yahoo Fix For: 6.1.0 {code} ==15480==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00acafe8 at pc 0x7f13fa bp 0x7ff13b8e3ee0 sp 0x7ff13b8e3ed8 READ of size 1 at 0x00acafe8 thread T8 ([ET_NET 7]) #0 0x7f13f9 in checksum_block(char const*, int) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:530 #1 0x7f167f in mime_hdr_sanity_check(MIMEHdrImpl*) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:560 #2 0x7f5d6d in mime_hdr_field_attach(MIMEHdrImpl*, MIMEField*, int, MIMEField*) /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:1533 #3 0x6fd29a in http2_write_psuedo_headers(HTTPHdr*, unsigned char*, unsigned long, Http2DynamicTable) /usr/local/src/trafficserver/proxy/http2/HTTP2.cc:560 #4 0x710ecd in Http2ConnectionState::send_headers_frame(FetchSM*) /usr/local/src/trafficserver/proxy/http2/Http2ConnectionState.cc:966 #5 0x70f906 in Http2ConnectionState::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ConnectionState.cc:768 #6 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #7 0x704fe9 in send_connection_event /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:60 #8 0x707176 in Http2ClientSession::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:259 #9 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #10 0x52bd6a in FetchSM::InvokePluginExt(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:260 #11 0x52d6e6 in FetchSM::process_fetch_read(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:456 #12 0x52df4a in FetchSM::fetch_handler(int, void*) /usr/local/src/trafficserver/proxy/FetchSM.cc:518 #13 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #14 0x5abc09 in PluginVC::process_read_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:663 #15 0x5aa834 in PluginVC::process_write_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:555 #16 0x5a74dc in PluginVC::main_handler(int, void*) /usr/local/src/trafficserver/proxy/PluginVC.cc:208 #17 0x53075a in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #18 0xa23154 in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:128 #19 0xa236f7 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:179 #20 0xa21662 in spawn_thread_internal /usr/local/src/trafficserver/iocore/eventsystem/Thread.cc:86 #21 0x7ff143381df4 in start_thread (/lib64/libpthread.so.0+0x7df4) #22 0x7ff1426291ac in __clone (/lib64/libc.so.6+0xf61ac) 0x00acafe8 is located 0 bytes to the right of global variable '*.LC7' from 'HPACK.cc' (0xacafe0) of size 8 '*.LC7' is ascii string ':status' SUMMARY: AddressSanitizer: global-buffer-overflow /usr/local/src/trafficserver/proxy/hdrs/MIME.cc:530 checksum_block(char const*, int) Shadow bytes around the buggy address: 0x801515a0: 04 f9 f9 f9 f9 f9 f9 f9 00 00 00 00 00 00 00 00 0x801515b0: 01 f9 f9 f9 f9 f9 f9 f9 01 f9 f9 f9 f9 f9 f9 f9 0x801515c0: 01 f9 f9 f9 f9 f9 f9 f9 00 00 00 04 f9 f9 f9 f9 0x801515d0: 00 00 05 f9 f9 f9 f9 f9 00 00 00 00 00 f9 f9 f9 0x801515e0: f9 f9 f9 f9 00 f9 f9 f9 f9 f9 f9 f9 00 03 f9 f9 =0x801515f0: f9 f9 f9 f9 06 f9 f9 f9 f9 f9 f9 f9 00[f9]f9 f9 0x80151600: f9 f9 f9
[jira] [Commented] (TS-3808) ☂ Testing HTTP/2 features by h2spec
[ https://issues.apache.org/jira/browse/TS-3808?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14693089#comment-14693089 ] Ryo Okubo commented on TS-3808: --- TS-3834 covers 5.4.1. Connection Error Handling ☂ Testing HTTP/2 features by h2spec Key: TS-3808 URL: https://issues.apache.org/jira/browse/TS-3808 Project: Traffic Server Issue Type: Test Components: HTTP/2 Reporter: Masaori Koshiba Labels: Umbrella Fix For: 6.1.0 This is an umbrella ticket for testing HTTP/2 features of ATS by [h2spec|https://github.com/summerwind/h2spec]. Goal : pass all tests. h3. Status * ATS : {{35f11dd5aab06364547d423e26b3d5bc31c4b1e1}} * h2spec : {{v1.1.1}} * 68 tests, 48 passed, 1 skipped, 19 failed h4. Details * 3.5. HTTP/2 Connection Preface ** ✓ Sends invalid connection preface * 4.2. Frame Size ** ✓ Sends large size frame that exceeds the SETTINGS_MAX_FRAME_SIZE * 4.3. Header Compression and Decompression ** ✓ Sends invalid header block fragment * 5.1. Stream States ** ✓ idle: Sends a DATA frame ** × idle: Sends a RST_STREAM frame ** × idle: Sends a WINDOW_UPDATE frame ** ✓ idle: Sends a CONTINUATION frame ** ✓ half closed (remote): Sends a DATA frame ** × half closed (remote): Sends a HEADERS frame ** ✓ half closed (remote): Sends a CONTINUATION frame ** × closed: Sends a CONTINUATION frame ** 5.1.1. Stream Identifiers *** ✓ Sends even-numbered stream identifier ** 5.1.2. Stream Concurrency *** Skipped: SETTINGS_MAX_CONCURRENT_STREAMS is unlimited * 5.3. Stream Priority ** 5.3.1. Stream Dependencies *** × Sends HEADERS frame that depend on itself *** ✓ Sends PRIORITY frame that depend on itself * 5.4. Error Handling ** 5.4.1. Connection Error Handling *** × Receives a GOAWAY frame * 5.5. Extending HTTP/2 ** ✓ Sends an unknown extension frame ** × Sends an unknown extension frame in the middle of a header block * 6.1. DATA ** ✓ Sends a DATA frame with 0x0 stream identifier ** ✓ Sends a DATA frame on the stream that is not opend ** ✓ Sends a DATA frame with invalid pad length * 6.2. HEADERS ** ✓ Sends a HEADERS frame followed by any frame other than CONTINUATION ** ✓ Sends a HEADERS frame followed by a frame on a different stream ** ✓ Sends a HEADERS frame with 0x0 stream identifier ** ✓ Sends a HEADERS frame with invalid pad length * 6.3. PRIORITY ** ✓ Sends a PRIORITY frame with 0x0 stream identifier ** ✓ Sends a PRIORITY frame with a length other than 5 octets * 6.4. RST_STREAM ** ✓ Sends a RST_STREAM frame with 0x0 stream identifier ** × Sends a RST_STREAM frame on a idle stream ** ✓ Sends a RST_STREAM frame with a length other than 4 octets * 6.5. SETTINGS ** ✓ Sends a SETTINGS frame ** ✓ Sends a SETTINGS frame that is not a zero-length with ACK flag ** ✓ Sends a SETTINGS frame with the stream identifier that is not 0x0 ** × Sends a SETTINGS frame with a length other than a multiple of 6 octets ** 6.5.2. Defined SETTINGS Parameters *** ✓ SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1 *** ✓ SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the maximum flow control window size *** ✓ SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value *** ✓ SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size * 6.7. PING ** ✓ Sends a PING frame ** ✓ Sends a PING frame with the stream identifier that is not 0x0 ** ✓ Sends a PING frame with a length field value other than 8 * 6.8. GOAWAY ** ✓ Sends a GOAWAY frame with the stream identifier that is not 0x0 * 6.9. WINDOW_UPDATE ** ✓ Sends a WINDOW_UPDATE frame ** ✓ Sends a WINDOW_UPDATE frame with an flow control window increment of 0 ** ✓ Sends a WINDOW_UPDATE frame with an flow control window increment of 0 on a stream ** ✓ Sends a WINDOW_UPDATE frame with a length other than a multiple of 4 octets ** 6.9.1. The Flow Control Window *** × Sends multiple WINDOW_UPDATE frames on a connection increasing the flow control window to above 2^31-1 *** × Sends multiple WINDOW_UPDATE frames on a stream increasing the flow control window to above 2^31-1 ** 6.9.2. Initial Flow Control Window Size *** ✓ Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded maximum window size value * 6.10. CONTINUATION ** × Sends a CONTINUATION frame ** × Sends multiple CONTINUATION frames ** × Sends a CONTINUATION frame followed by any frame other than CONTINUATION ** × Sends a CONTINUATION frame followed by a frame on a different stream ** × Sends a CONTINUATION frame with the stream identifier that is 0x0 ** ✓ Sends a CONTINUATION frame after the frame other than HEADERS, PUSH_PROMISE or CONTINUATION * 8.1. HTTP Request/Response Exchange ** ✓ Sends a HEADERS frame as HEAD request ** × Sends a HEADERS frame
[jira] [Commented] (TS-3834) Close a client session after sending GOAWAY with errors
[ https://issues.apache.org/jira/browse/TS-3834?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14693087#comment-14693087 ] Ryo Okubo commented on TS-3834: --- I'm working it now. Close a client session after sending GOAWAY with errors --- Key: TS-3834 URL: https://issues.apache.org/jira/browse/TS-3834 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Ryo Okubo According to [Section 5.4.1 of RFC7540|https://tools.ietf.org/html/rfc7540#section-5.4.1] , after sending with error codes, a server must close TCP connection. Current ATS only sends GOAWAY but doesn't close client session. This behavior can be checked by [h2spec|https://github.com/summerwind/h2spec] with -s 5.4.1 option. {noformat} $ ./h2spec -h host -p port -s 5.4.1 5.4. Error Handling 5.4.1. Connection Error Handling × Receives a GOAWAY frame - After sending the GOAWAY frame, the endpoint MUST close the TCP connection. Expected: Connection close Actual: Error: Connection closed, but did not receive a GOAWAY Frame. 68 tests, 0 passed, 67 skipped, 1 failed === Failed tests === 5.4. Error Handling 5.4.1. Connection Error Handling × Receives a GOAWAY frame - After sending the GOAWAY frame, the endpoint MUST close the TCP connection. Expected: Connection close Actual: Error: Connection closed, but did not receive a GOAWAY Frame. {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (TS-3834) Close a client session after sending GOAWAY with errors
Ryo Okubo created TS-3834: - Summary: Close a client session after sending GOAWAY with errors Key: TS-3834 URL: https://issues.apache.org/jira/browse/TS-3834 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Ryo Okubo According to [Section 5.4.1 of RFC7540|https://tools.ietf.org/html/rfc7540#section-5.4.1] , after sending with error codes, a server must close TCP connection. Current ATS only sends GOAWAY but doesn't close client session. This behavior can be checked by [h2spec|https://github.com/summerwind/h2spec] with -s 5.4.1 option. {noformat} $ ./h2spec -h host -p port -s 5.4.1 5.4. Error Handling 5.4.1. Connection Error Handling × Receives a GOAWAY frame - After sending the GOAWAY frame, the endpoint MUST close the TCP connection. Expected: Connection close Actual: Error: Connection closed, but did not receive a GOAWAY Frame. 68 tests, 0 passed, 67 skipped, 1 failed === Failed tests === 5.4. Error Handling 5.4.1. Connection Error Handling × Receives a GOAWAY frame - After sending the GOAWAY frame, the endpoint MUST close the TCP connection. Expected: Connection close Actual: Error: Connection closed, but did not receive a GOAWAY Frame. {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3819) H2 error logging
[ https://issues.apache.org/jira/browse/TS-3819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3819: -- Attachment: h2_errorlog_0003.patch Regenerated my patch. [~zwoop] pelase look h2_errorlog_0003.patch H2 error logging Key: TS-3819 URL: https://issues.apache.org/jira/browse/TS-3819 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Fix For: 6.0.0 Attachments: h2_errorlog_0001.patch, h2_errorlog_0002.patch, h2_errorlog_0003.patch RST_STREAM and GOAWAY may deliver [various errors|https://tools.ietf.org/html/rfc7540#section-7]. I want to record them to error.log -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-3819) H2 error logging
[ https://issues.apache.org/jira/browse/TS-3819?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14661147#comment-14661147 ] Ryo Okubo edited comment on TS-3819 at 8/7/15 1:00 AM: --- Regenerated my patch. [~zwoop] please look h2_errorlog_0003.patch was (Author: rokubo): Regenerated my patch. [~zwoop] pelase look h2_errorlog_0003.patch H2 error logging Key: TS-3819 URL: https://issues.apache.org/jira/browse/TS-3819 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Fix For: 6.0.0 Attachments: h2_errorlog_0001.patch, h2_errorlog_0002.patch, h2_errorlog_0003.patch RST_STREAM and GOAWAY may deliver [various errors|https://tools.ietf.org/html/rfc7540#section-7]. I want to record them to error.log -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3819) H2 error logging
[ https://issues.apache.org/jira/browse/TS-3819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3819: -- Attachment: h2_errorlog_0002.patch Additinal patch replaces Log::error() with Error() and clang-format's H2 error logging Key: TS-3819 URL: https://issues.apache.org/jira/browse/TS-3819 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Fix For: 6.0.0 Attachments: h2_errorlog_0001.patch, h2_errorlog_0002.patch RST_STREAM and GOAWAY may deliver [various errors|https://tools.ietf.org/html/rfc7540#section-7]. I want to record them to error.log -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3782) Add tests for HTTP/2 in TSQA
[ https://issues.apache.org/jira/browse/TS-3782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14655006#comment-14655006 ] Ryo Okubo commented on TS-3782: --- [~masaori] yes. [~zwoop] please wait a few days. Add tests for HTTP/2 in TSQA Key: TS-3782 URL: https://issues.apache.org/jira/browse/TS-3782 Project: Traffic Server Issue Type: Test Components: CI, HTTP/2 Reporter: Masaori Koshiba Assignee: Thomas Jackson Labels: review Fix For: 6.0.0 Attachments: exceptional_scenario_tests_001.patch, normal_scenario_tests_001.patch Add tests for HTTP/2 in TSQA. IMO, it is better to add two types of tests for HTTP/2 below. 1. Normal Scenario Tests - Do HTTP requests with [hyper|https://github.com/lukasa/hyper] or other HTTP/2 client. 2. Exceptional Scenario Tests - [h2spec|https://github.com/summerwind/h2spec] looks good test tool for edge cases of HTTP/2. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (TS-3819) H2 error logging
Ryo Okubo created TS-3819: - Summary: H2 error logging Key: TS-3819 URL: https://issues.apache.org/jira/browse/TS-3819 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo RST_STREAM and GOAWAY may deliver [various errors|https://tools.ietf.org/html/rfc7540#section-7]. I want to record them to error.log -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3819) H2 error logging
[ https://issues.apache.org/jira/browse/TS-3819?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3819: -- Attachment: h2_errorlog_0001.patch Logging H2 error codes to error.log if they're not NO_ERROR. In this patch, error log example is as below: {noformat} 20150805.18h51m42s ConnectionError: sent GOAWAY (last_stream_id=0,error_code=PROTOCOL_ERROR(1)) 20150805.18h51m42s StreamError: sent RST_STREAM (stream_id=1,error_code=PROTOCOL_ERROR(1)) 20150805.18h51m42s ConnectionError: sent GOAWAY (last_stream_id=0,error_code=FRAME_SIZE_ERROR(6)) {noformat} H2 error logging Key: TS-3819 URL: https://issues.apache.org/jira/browse/TS-3819 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Attachments: h2_errorlog_0001.patch RST_STREAM and GOAWAY may deliver [various errors|https://tools.ietf.org/html/rfc7540#section-7]. I want to record them to error.log -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3782) Add tests for HTTP/2 in TSQA
[ https://issues.apache.org/jira/browse/TS-3782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14659370#comment-14659370 ] Ryo Okubo commented on TS-3782: --- [~zwoop] no problem. My patch, exceptional_scenario_tests_001.patch hasn't merged yet. :) I'll create a new PR on GitHub after modification. Add tests for HTTP/2 in TSQA Key: TS-3782 URL: https://issues.apache.org/jira/browse/TS-3782 Project: Traffic Server Issue Type: Test Components: CI, HTTP/2 Reporter: Masaori Koshiba Assignee: Thomas Jackson Labels: review Fix For: 6.0.0 Attachments: exceptional_scenario_tests_001.patch, normal_scenario_tests_001.patch Add tests for HTTP/2 in TSQA. IMO, it is better to add two types of tests for HTTP/2 below. 1. Normal Scenario Tests - Do HTTP requests with [hyper|https://github.com/lukasa/hyper] or other HTTP/2 client. 2. Exceptional Scenario Tests - [h2spec|https://github.com/summerwind/h2spec] looks good test tool for edge cases of HTTP/2. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3819) H2 error logging
[ https://issues.apache.org/jira/browse/TS-3819?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14659357#comment-14659357 ] Ryo Okubo commented on TS-3819: --- [~zwoop] I want to land 6.0.0. Its helpful for debug and operation. H2 error logging Key: TS-3819 URL: https://issues.apache.org/jira/browse/TS-3819 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Fix For: 6.0.0 Attachments: h2_errorlog_0001.patch RST_STREAM and GOAWAY may deliver [various errors|https://tools.ietf.org/html/rfc7540#section-7]. I want to record them to error.log -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3814) Treat requests with Connection header field as malformed
[ https://issues.apache.org/jira/browse/TS-3814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3814: -- Attachment: fixed_sec8_1_2_2.patch Fixed patch by comparing WKSs. Treat requests with Connection header field as malformed Key: TS-3814 URL: https://issues.apache.org/jira/browse/TS-3814 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Ryo Okubo Fix For: 6.0.0 Attachments: fixed_sec8_1_2_2.patch, sec8_1_2_2.patch According to [Section 8.1.2.2 in RFC7540|https://tools.ietf.org/html/rfc7540#section-8.1.2.2], H2 requests with Connection header field should be treated as malformed. But current ATS passes them. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3814) Treat requests with Connection header field as malformed
[ https://issues.apache.org/jira/browse/TS-3814?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14654603#comment-14654603 ] Ryo Okubo commented on TS-3814: --- [~zwoop] The patch on your comment works correctly. I updated my patch based on your advice. I'll try replacing other strcmp()s. Treat requests with Connection header field as malformed Key: TS-3814 URL: https://issues.apache.org/jira/browse/TS-3814 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Ryo Okubo Fix For: 6.0.0 Attachments: fixed_sec8_1_2_2.patch, sec8_1_2_2.patch According to [Section 8.1.2.2 in RFC7540|https://tools.ietf.org/html/rfc7540#section-8.1.2.2], H2 requests with Connection header field should be treated as malformed. But current ATS passes them. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (TS-3814) Treat requests with Connection header field as malformed
Ryo Okubo created TS-3814: - Summary: Treat requests with Connection header field as malformed Key: TS-3814 URL: https://issues.apache.org/jira/browse/TS-3814 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Ryo Okubo According to [Section 8.1.2.2 in RFC7540|https://tools.ietf.org/html/rfc7540#section-8.1.2.2], H2 requests with Connection header field should be treated as malformed. But current ATS passes them. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3814) Treat requests with Connection header field as malformed
[ https://issues.apache.org/jira/browse/TS-3814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3814: -- Attachment: sec8_1_2_2.patch Current ATS removes connection-specific headers simply. This patch removes this behavior and treats requests containing Connection header field as malformed. Treat requests with Connection header field as malformed Key: TS-3814 URL: https://issues.apache.org/jira/browse/TS-3814 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Ryo Okubo Attachments: sec8_1_2_2.patch According to [Section 8.1.2.2 in RFC7540|https://tools.ietf.org/html/rfc7540#section-8.1.2.2], H2 requests with Connection header field should be treated as malformed. But current ATS passes them. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3478) Indexing header representations on HPACK encoder
[ https://issues.apache.org/jira/browse/TS-3478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3478: -- Summary: Indexing header representations on HPACK encoder (was: Support some header representations on HPACK encoder) Indexing header representations on HPACK encoder Key: TS-3478 URL: https://issues.apache.org/jira/browse/TS-3478 Project: Traffic Server Issue Type: Improvement Components: HTTP/2 Reporter: Ryo Okubo Assignee: Leif Hedstrom Labels: review Fix For: 6.0.0 Attachments: indexing.patch Support other header field representations on HPACK encoder. http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6 Currently the encoder supports only [Literal Header Field never Indexed|http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6.2.3]. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3749) Error log isn't recorded
[ https://issues.apache.org/jira/browse/TS-3749?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14648633#comment-14648633 ] Ryo Okubo commented on TS-3749: --- Both patches work correctly. Thanks :) {noformat} $ tail /var/log/trafficserver/error.log 20150731.10h56m49s RESPONSE: sent 127.0.0.1 status 502 (Cannot find server.) for 'http://nonexistent.yahoo.co.jp/' {noformat} Error log isn't recorded Key: TS-3749 URL: https://issues.apache.org/jira/browse/TS-3749 Project: Traffic Server Issue Type: Bug Components: Logging Reporter: Ryo Okubo Assignee: Phil Sorber Priority: Blocker Fix For: 6.0.0 error.log has not been recorded after TS-1985. Enabling error logging and specifying a format of error.log depended on pre-defined log format but this logic was eliminated on the issue. Error logging works fine when I tried to revert [5c2b032fb9f8f05ae7be1794a3103140ffe7d07e|https://github.com/apache/trafficserver/commit/5c2b032fb9f8f05ae7be1794a3103140ffe7d07e]. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3478) Support some header representations on HPACK encoder
[ https://issues.apache.org/jira/browse/TS-3478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14648732#comment-14648732 ] Ryo Okubo commented on TS-3478: --- [~zwoop] I think 6.1.0 is better. This is a optional feature so H2 clients maybe don't require it. Support some header representations on HPACK encoder Key: TS-3478 URL: https://issues.apache.org/jira/browse/TS-3478 Project: Traffic Server Issue Type: Improvement Components: HTTP/2 Reporter: Ryo Okubo Assignee: Leif Hedstrom Labels: review Fix For: 6.0.0 Attachments: indexing.patch Support other header field representations on HPACK encoder. http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6 Currently the encoder supports only [Literal Header Field never Indexed|http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6.2.3]. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3782) Add tests for HTTP/2 in TSQA
[ https://issues.apache.org/jira/browse/TS-3782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3782: -- Attachment: exceptional_scenario_tests_001.patch Exceptional test cases with [h2spec|https://github.com/summerwind/h2spec]. You can apply it after normal_scenario_tests_001.patch. Unfortunately current ATS can't pass all test cases of h2spec ... so this patch uses only passable test cases. Add tests for HTTP/2 in TSQA Key: TS-3782 URL: https://issues.apache.org/jira/browse/TS-3782 Project: Traffic Server Issue Type: Test Components: CI, HTTP/2 Reporter: Masaori Koshiba Assignee: Thomas Jackson Labels: review Fix For: 6.1.0 Attachments: exceptional_scenario_tests_001.patch, normal_scenario_tests_001.patch Add tests for HTTP/2 in TSQA. IMO, it is better to add two types of tests for HTTP/2 below. 1. Normal Scenario Tests - Do HTTP requests with [hyper|https://github.com/lukasa/hyper] or other HTTP/2 client. 2. Exceptional Scenario Tests - [h2spec|https://github.com/summerwind/h2spec] looks good test tool for edge cases of HTTP/2. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3492) Only send SETTINGS which are different than protocol defaults
[ https://issues.apache.org/jira/browse/TS-3492?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3492: -- Attachment: settings.patch This patch contains below modifications: 1. Validate SETTINGS values which are loaded from records.config 2. Send SETTINGS only different than previous values I'll submit test code on other JIRA issue. Only send SETTINGS which are different than protocol defaults - Key: TS-3492 URL: https://issues.apache.org/jira/browse/TS-3492 Project: Traffic Server Issue Type: Improvement Components: HTTP/2 Reporter: Leif Hedstrom Assignee: Ryo Okubo Labels: newbie Fix For: 6.1.0 Attachments: settings.patch I'm thinking, why bother sending SETTINGS for values which are at the protocol defaults? Also, should we make our default configs match the protocol defaults consistently? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3492) Only send SETTINGS which are different than protocol defaults
[ https://issues.apache.org/jira/browse/TS-3492?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14624508#comment-14624508 ] Ryo Okubo commented on TS-3492: --- I'm working for it. I'll also add some regression tests for processes of SETTINGS. Only send SETTINGS which are different than protocol defaults - Key: TS-3492 URL: https://issues.apache.org/jira/browse/TS-3492 Project: Traffic Server Issue Type: Improvement Components: HTTP/2 Reporter: Leif Hedstrom Labels: newbie Fix For: 6.1.0 I'm thinking, why bother sending SETTINGS for values which are at the protocol defaults? Also, should we make our default configs match the protocol defaults consistently? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3478) Support some header representations on HPACK encoder
[ https://issues.apache.org/jira/browse/TS-3478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3478: -- Attachment: indexing.patch Attached patch enables HPACK encoder to index by using static/dynamic table. Support some header representations on HPACK encoder Key: TS-3478 URL: https://issues.apache.org/jira/browse/TS-3478 Project: Traffic Server Issue Type: Improvement Components: HTTP/2 Reporter: Ryo Okubo Fix For: 6.1.0 Attachments: indexing.patch Support other header field representations on HPACK encoder. http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6 Currently the encoder supports only [Literal Header Field never Indexed|http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6.2.3]. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (TS-3749) Error log isn't recorded
Ryo Okubo created TS-3749: - Summary: Error log isn't recorded Key: TS-3749 URL: https://issues.apache.org/jira/browse/TS-3749 Project: Traffic Server Issue Type: Bug Components: Logging Reporter: Ryo Okubo error.log has not been recorded after TS-1985. Enabling error logging and specifying a format of error.log depended on pre-defined log format but this logic was eliminated on the issue. Error logging works fine when I tried to revert [5c2b032fb9f8f05ae7be1794a3103140ffe7d07e|https://github.com/apache/trafficserver/commit/5c2b032fb9f8f05ae7be1794a3103140ffe7d07e]. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3513) http2 core dump
[ https://issues.apache.org/jira/browse/TS-3513?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14493450#comment-14493450 ] Ryo Okubo commented on TS-3513: --- [~bcall] the HPACK_ERROR_COMPRESSION_ERROR means maybe compression error at there. When the error occurs and more data doesn't exist in the buffer (this judge is processed in [the outer HPACK decoder|https://github.com/apache/trafficserver/blob/master/proxy/http2/Http2ConnectionState.cc#L221]), its handled as real error. Error handling around HPACK encoder/decoder may cause misunderstanding so I want to refactoring it at sometime. It looks like your commit is valid. thanks. http2 core dump --- Key: TS-3513 URL: https://issues.apache.org/jira/browse/TS-3513 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Affects Versions: 5.3.0 Reporter: Bryan Call Assignee: Bryan Call Labels: crash Fix For: 6.0.0 {code} traffic_server: Segmentation fault (Invalid permissions for mapped object [0x2ab5cbb3854d])traffic_server - STACK TRACE: /usr/bin/traffic_server(_Z19crash_logger_invokeiP7siginfoPv+0xc3)[0x50abe2] /lib64/libpthread.so.0(+0x3bb560f710)[0x2ab4b57c8710] /lib64/libc.so.6(memmove+0x107)[0x3bb4e83907] /usr/bin/traffic_server[0x63e8b4] /usr/bin/traffic_server(_ZN20Http2ConnectionState18main_event_handlerEiPv+0x2eb)[0x640137] /usr/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x6c)[0x50da20] /usr/bin/traffic_server[0x63b5fd] /usr/bin/traffic_server(_ZN18Http2ClientSession25state_complete_frame_readEiPv+0x28f)[0x63d379] /usr/bin/traffic_server(_ZN18Http2ClientSession18main_event_handlerEiPv+0xfb)[0x63c26d] /usr/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x6c)[0x50da20] /usr/bin/traffic_server(_ZN18Http2ClientSession22state_start_frame_readEiPv+0x892)[0x63d0c0] /usr/bin/traffic_server(_ZN18Http2ClientSession18main_event_handlerEiPv+0xfb)[0x63c26d] /usr/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x6c)[0x50da20] /usr/bin/traffic_server[0x76dac7] /usr/bin/traffic_server(_ZN18UnixNetVConnection19readSignalAndUpdateEi+0x20)[0x7703f4] /usr/bin/traffic_server(_ZN17SSLNetVConnection11net_read_ioEP10NetHandlerP7EThread+0x832)[0x75751c] /usr/bin/traffic_server(_ZN10NetHandler12mainNetEventEiP5Event+0x628)[0x7676c8] /usr/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x6c)[0x50da20] /usr/bin/traffic_server(_ZN7EThread13process_eventEP5Eventi+0xc6)[0x78de82] /usr/bin/traffic_server(_ZN7EThread7executeEv+0x3dc)[0x78e38c] /usr/bin/traffic_server[0x78d43d] /lib64/libpthread.so.0(+0x3bb56079d1)[0x2ab4b57c09d1] /lib64/libc.so.6(clone+0x6d)[0x3bb4ee88fd] {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3513) http2 core dump
[ https://issues.apache.org/jira/browse/TS-3513?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14491859#comment-14491859 ] Ryo Okubo commented on TS-3513: --- {{decoded_bytes}} is supporsed to be equal or less than {{read_len}}, but it isn't on above case. I'll check HPACK decoder logic. http2 core dump --- Key: TS-3513 URL: https://issues.apache.org/jira/browse/TS-3513 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Affects Versions: 5.3.0 Reporter: Bryan Call Assignee: Ryo Okubo Labels: crash Fix For: 6.0.0 {code} traffic_server: Segmentation fault (Invalid permissions for mapped object [0x2ab5cbb3854d])traffic_server - STACK TRACE: /usr/bin/traffic_server(_Z19crash_logger_invokeiP7siginfoPv+0xc3)[0x50abe2] /lib64/libpthread.so.0(+0x3bb560f710)[0x2ab4b57c8710] /lib64/libc.so.6(memmove+0x107)[0x3bb4e83907] /usr/bin/traffic_server[0x63e8b4] /usr/bin/traffic_server(_ZN20Http2ConnectionState18main_event_handlerEiPv+0x2eb)[0x640137] /usr/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x6c)[0x50da20] /usr/bin/traffic_server[0x63b5fd] /usr/bin/traffic_server(_ZN18Http2ClientSession25state_complete_frame_readEiPv+0x28f)[0x63d379] /usr/bin/traffic_server(_ZN18Http2ClientSession18main_event_handlerEiPv+0xfb)[0x63c26d] /usr/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x6c)[0x50da20] /usr/bin/traffic_server(_ZN18Http2ClientSession22state_start_frame_readEiPv+0x892)[0x63d0c0] /usr/bin/traffic_server(_ZN18Http2ClientSession18main_event_handlerEiPv+0xfb)[0x63c26d] /usr/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x6c)[0x50da20] /usr/bin/traffic_server[0x76dac7] /usr/bin/traffic_server(_ZN18UnixNetVConnection19readSignalAndUpdateEi+0x20)[0x7703f4] /usr/bin/traffic_server(_ZN17SSLNetVConnection11net_read_ioEP10NetHandlerP7EThread+0x832)[0x75751c] /usr/bin/traffic_server(_ZN10NetHandler12mainNetEventEiP5Event+0x628)[0x7676c8] /usr/bin/traffic_server(_ZN12Continuation11handleEventEiPv+0x6c)[0x50da20] /usr/bin/traffic_server(_ZN7EThread13process_eventEP5Eventi+0xc6)[0x78de82] /usr/bin/traffic_server(_ZN7EThread7executeEv+0x3dc)[0x78e38c] /usr/bin/traffic_server[0x78d43d] /lib64/libpthread.so.0(+0x3bb56079d1)[0x2ab4b57c09d1] /lib64/libc.so.6(clone+0x6d)[0x3bb4ee88fd] {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3480) Large stream id cause PROTOCOL_ERROR
[ https://issues.apache.org/jira/browse/TS-3480?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3480: -- Attachment: ts-3480.diff Add counter of current streams and logic which compares it with MAX_CONCURRENT_STREAM. Large stream id cause PROTOCOL_ERROR Key: TS-3480 URL: https://issues.apache.org/jira/browse/TS-3480 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Masakazu Kitajo Assignee: Ryo Okubo Fix For: 6.0.0 Attachments: ts-3480.diff TS sends back a GOAWAY frame with PROTOCOL_ERROR if the stream id in a request is over the value of SETTINGS_MAX_CONCURRENT_STREAMS. This is because current implementation uses the value of the setting as the maximum value for stream id, but not the maximum number of concurrent streams. https://git-wip-us.apache.org/repos/asf?p=trafficserver.git;a=blob;f=proxy/http2/Http2ConnectionState.cc;h=574c4ce5cf8303476ca3c7440ac6e0038477a933;hb=26f438d486eaa04267db953d8d5f1249a63af2c3#l712 How to reproduce: {noformat} nghttp -v -m 51 http://localhost/ {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-3480) Large stream id cause PROTOCOL_ERROR
[ https://issues.apache.org/jira/browse/TS-3480?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14482967#comment-14482967 ] Ryo Okubo edited comment on TS-3480 at 4/7/15 10:42 AM: Add counter of current streams and logic which compares it with MAX_CONCURRENT_STREAM. The counter checks only streams started by client but another counter for server push streams. And a limiter which is the sum of these streams counter may be required. was (Author: rokubo): Add counter of current streams and logic which compares it with MAX_CONCURRENT_STREAM. Large stream id cause PROTOCOL_ERROR Key: TS-3480 URL: https://issues.apache.org/jira/browse/TS-3480 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Masakazu Kitajo Assignee: Ryo Okubo Fix For: 6.0.0 Attachments: ts-3480.diff TS sends back a GOAWAY frame with PROTOCOL_ERROR if the stream id in a request is over the value of SETTINGS_MAX_CONCURRENT_STREAMS. This is because current implementation uses the value of the setting as the maximum value for stream id, but not the maximum number of concurrent streams. https://git-wip-us.apache.org/repos/asf?p=trafficserver.git;a=blob;f=proxy/http2/Http2ConnectionState.cc;h=574c4ce5cf8303476ca3c7440ac6e0038477a933;hb=26f438d486eaa04267db953d8d5f1249a63af2c3#l712 How to reproduce: {noformat} nghttp -v -m 51 http://localhost/ {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3498) h2c (upgrade dance) seems to hang
[ https://issues.apache.org/jira/browse/TS-3498?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14481166#comment-14481166 ] Ryo Okubo commented on TS-3498: --- Its caused by missing fetching to origin server after upgrade. I'll fix it. h2c (upgrade dance) seems to hang - Key: TS-3498 URL: https://issues.apache.org/jira/browse/TS-3498 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Leif Hedstrom Assignee: Ryo Okubo Fix For: 6.0.0 I see {code} loki (09:37) 259/0 $ nghttp -v -u http://docs.trafficserver.apache.org [ 0.031] Connected [ 0.031] HTTP Upgrade request GET / HTTP/1.1 Host: docs.trafficserver.apache.org Connection: Upgrade, HTTP2-Settings Upgrade: h2c-14 HTTP2-Settings: AAMAAABkAAQAAP__ Accept: */* User-Agent: nghttp2/0.7.4-DEV [ 0.066] HTTP Upgrade response HTTP/1.1 101 Switching Protocols Date: Sun, 05 Apr 2015 15:37:58 GMT Connection: Upgrade Via: http/1.1 ATS (ApacheTrafficServer/5.3.0 [c s f ]) Server: ATS/5.3.0 Upgrade: h2c-14 [ 0.066] HTTP Upgrade success [ 0.066] recv SETTINGS frame length=36, flags=0x00, stream_id=0 (niv=6) [SETTINGS_HEADER_TABLE_SIZE(0x01):4096] [SETTINGS_ENABLE_PUSH(0x02):0] [SETTINGS_MAX_CONCURRENT_STREAMS(0x03):66] [SETTINGS_INITIAL_WINDOW_SIZE(0x04):123456] [SETTINGS_MAX_FRAME_SIZE(0x05):16384] [SETTINGS_MAX_HEADER_LIST_SIZE(0x06):4294967295] [ 0.066] send SETTINGS frame length=12, flags=0x00, stream_id=0 (niv=2) [SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100] [SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535] [ 0.066] send SETTINGS frame length=0, flags=0x01, stream_id=0 ; ACK (niv=0) [ 0.097] recv SETTINGS frame length=0, flags=0x01, stream_id=0 ; ACK (niv=0) {code} And then it hangs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (TS-3478) Support some header representations on HPACK encoder
Ryo Okubo created TS-3478: - Summary: Support some header representations on HPACK encoder Key: TS-3478 URL: https://issues.apache.org/jira/browse/TS-3478 Project: Traffic Server Issue Type: Improvement Components: HTTP/2 Reporter: Ryo Okubo Support other header field representations on HPACK encoder. http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6 Currently the encoder supports only [Literal Header Field never Indexed|http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-12#section-6.2.3]. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3415) H2 sending FIN stream too early
[ https://issues.apache.org/jira/browse/TS-3415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14381459#comment-14381459 ] Ryo Okubo commented on TS-3415: --- [~zwoop], [~shinrich]: Was the problem fixed? If its running correctly, I want to close this issue. H2 sending FIN stream too early --- Key: TS-3415 URL: https://issues.apache.org/jira/browse/TS-3415 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Sudheer Vinukonda Assignee: Ryo Okubo Fix For: 6.0.0 Attachments: ts-3415-02.diff, ts-3415-3414.diff, ts-3415.diff With H2 running on the docs/jenkins server, some of us have noticed empty pages on chrome/FF when hitting those servers. Looking at the H2 traces, it seems that ATS is sending FIN streams (both SPDY_SESSION_RECV_HEADERS and SPDY_SESSION_RECV_DATA with fin flag set to true) before sending the data frames. This makes the browser display blank pages. Example: {code} t=31890437 [st=140]SPDY_SESSION_RECV_DATA -- fin = true -- size = 0 -- stream_id = 1 t=31890437 [st=140]SPDY_SESSION_RECV_DATA -- fin = false -- size = 2591 -- stream_id = 1 {code} Detailed traces below: {code} 1112054: SPDY_SESSION ci.trafficserver.apache.org:443 (DIRECT) Start Time: 2015-02-26 13:30:14.060 t=31890297 [st= 0] +SPDY_SESSION [dt=?] -- host = ci.trafficserver.apache.org:443 -- proxy = DIRECT t=31890297 [st= 0]SPDY_SESSION_INITIALIZED -- protocol = h2-14 -- source_dependency = 1112049 (SOCKET) t=31890297 [st= 0]SPDY_SESSION_SEND_SETTINGS -- settings = [[id:3 flags:0 value:1000],[id:4 flags:0 value:10485760]] t=31890297 [st= 0]SPDY_STREAM_UPDATE_RECV_WINDOW -- delta = 10420224 -- window_size = 10485760 t=31890297 [st= 0]SPDY_SESSION_SENT_WINDOW_UPDATE_FRAME -- delta = 10420224 -- stream_id = 0 t=31890297 [st= 0]SPDY_SESSION_SYN_STREAM -- fin = true -- :authority: ci.trafficserver.apache.org :method: GET :path: /job/tsqa-master/180/consoleFull :scheme: https accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 accept-encoding: gzip, deflate, sdch accept-language: en-US,en;q=0.8 cache-control: max-age=0 cookie: [71 bytes were stripped] user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 -- spdy_priority = 0 -- stream_id = 1 -- unidirectional = false t=31890335 [st= 38]SPDY_SESSION_RECV_SETTINGS -- clear_persisted = false -- host = ci.trafficserver.apache.org:443 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 1 -- value = 4096 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 2 -- value = 0 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 3 -- value = 100 t=31890436 [st=139]SPDY_SESSION_RECV_HEADERS -- fin = true -- :status: 200 age: 1 cache-control: no-cache,no-store,must-revalidate content-encoding: gzip content-type: text/html;charset=UTF-8 date: Thu, 26 Feb 2015 21:30:14 GMT expires: Thu, 01 Jan 1970 00:00:00 GMT server: ATS/5.3.0 set-cookie: [67 bytes were stripped] strict-transport-security: max-age=86400 via: http/1.1 ATS (ApacheTrafficServer/5.3.0 [cMsSf ]) x-frame-options: sameorigin x-hudson: 1.395 x-hudson-cli-port: 40666 x-hudson-theme: default x-instance-identity:
[jira] [Updated] (TS-3415) H2 sending FIN stream too early
[ https://issues.apache.org/jira/browse/TS-3415?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3415: -- Attachment: ts-3415-02.diff ts-3415-02.diff (includes ts-3415.diff) fixes the problem around chunking. HPACK encoder removes connection-specific response header fields of FetchSM directly to satisfy [requirements for intermediaries|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.1.2.2] but these are used to check whether chunked body is done. I fix the encoder to skip these but not remove. H2 sending FIN stream too early --- Key: TS-3415 URL: https://issues.apache.org/jira/browse/TS-3415 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Sudheer Vinukonda Attachments: ts-3415-02.diff, ts-3415-3414.diff, ts-3415.diff With H2 running on the docs/jenkins server, some of us have noticed empty pages on chrome/FF when hitting those servers. Looking at the H2 traces, it seems that ATS is sending FIN streams (both SPDY_SESSION_RECV_HEADERS and SPDY_SESSION_RECV_DATA with fin flag set to true) before sending the data frames. This makes the browser display blank pages. Example: {code} t=31890437 [st=140]SPDY_SESSION_RECV_DATA -- fin = true -- size = 0 -- stream_id = 1 t=31890437 [st=140]SPDY_SESSION_RECV_DATA -- fin = false -- size = 2591 -- stream_id = 1 {code} Detailed traces below: {code} 1112054: SPDY_SESSION ci.trafficserver.apache.org:443 (DIRECT) Start Time: 2015-02-26 13:30:14.060 t=31890297 [st= 0] +SPDY_SESSION [dt=?] -- host = ci.trafficserver.apache.org:443 -- proxy = DIRECT t=31890297 [st= 0]SPDY_SESSION_INITIALIZED -- protocol = h2-14 -- source_dependency = 1112049 (SOCKET) t=31890297 [st= 0]SPDY_SESSION_SEND_SETTINGS -- settings = [[id:3 flags:0 value:1000],[id:4 flags:0 value:10485760]] t=31890297 [st= 0]SPDY_STREAM_UPDATE_RECV_WINDOW -- delta = 10420224 -- window_size = 10485760 t=31890297 [st= 0]SPDY_SESSION_SENT_WINDOW_UPDATE_FRAME -- delta = 10420224 -- stream_id = 0 t=31890297 [st= 0]SPDY_SESSION_SYN_STREAM -- fin = true -- :authority: ci.trafficserver.apache.org :method: GET :path: /job/tsqa-master/180/consoleFull :scheme: https accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 accept-encoding: gzip, deflate, sdch accept-language: en-US,en;q=0.8 cache-control: max-age=0 cookie: [71 bytes were stripped] user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 -- spdy_priority = 0 -- stream_id = 1 -- unidirectional = false t=31890335 [st= 38]SPDY_SESSION_RECV_SETTINGS -- clear_persisted = false -- host = ci.trafficserver.apache.org:443 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 1 -- value = 4096 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 2 -- value = 0 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 3 -- value = 100 t=31890436 [st=139]SPDY_SESSION_RECV_HEADERS -- fin = true -- :status: 200 age: 1 cache-control: no-cache,no-store,must-revalidate content-encoding: gzip content-type: text/html;charset=UTF-8 date: Thu, 26 Feb 2015 21:30:14 GMT expires: Thu, 01 Jan 1970 00:00:00 GMT server: ATS/5.3.0 set-cookie: [67 bytes were stripped] strict-transport-security: max-age=86400 via: http/1.1 ATS (ApacheTrafficServer/5.3.0 [cMsSf ]) x-frame-options: sameorigin
[jira] [Commented] (TS-3415) H2 sending FIN stream too early
[ https://issues.apache.org/jira/browse/TS-3415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14343129#comment-14343129 ] Ryo Okubo commented on TS-3415: --- Susan, Thank you for your examining. ts-3415.diff looks good. I The problem occured after applying this patch is caused by of HPACK encoder. I'll post a patch to fix it tomorrow. H2 sending FIN stream too early --- Key: TS-3415 URL: https://issues.apache.org/jira/browse/TS-3415 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Sudheer Vinukonda Attachments: ts-3415-3414.diff, ts-3415.diff With H2 running on the docs/jenkins server, some of us have noticed empty pages on chrome/FF when hitting those servers. Looking at the H2 traces, it seems that ATS is sending FIN streams (both SPDY_SESSION_RECV_HEADERS and SPDY_SESSION_RECV_DATA with fin flag set to true) before sending the data frames. This makes the browser display blank pages. Example: {code} t=31890437 [st=140]SPDY_SESSION_RECV_DATA -- fin = true -- size = 0 -- stream_id = 1 t=31890437 [st=140]SPDY_SESSION_RECV_DATA -- fin = false -- size = 2591 -- stream_id = 1 {code} Detailed traces below: {code} 1112054: SPDY_SESSION ci.trafficserver.apache.org:443 (DIRECT) Start Time: 2015-02-26 13:30:14.060 t=31890297 [st= 0] +SPDY_SESSION [dt=?] -- host = ci.trafficserver.apache.org:443 -- proxy = DIRECT t=31890297 [st= 0]SPDY_SESSION_INITIALIZED -- protocol = h2-14 -- source_dependency = 1112049 (SOCKET) t=31890297 [st= 0]SPDY_SESSION_SEND_SETTINGS -- settings = [[id:3 flags:0 value:1000],[id:4 flags:0 value:10485760]] t=31890297 [st= 0]SPDY_STREAM_UPDATE_RECV_WINDOW -- delta = 10420224 -- window_size = 10485760 t=31890297 [st= 0]SPDY_SESSION_SENT_WINDOW_UPDATE_FRAME -- delta = 10420224 -- stream_id = 0 t=31890297 [st= 0]SPDY_SESSION_SYN_STREAM -- fin = true -- :authority: ci.trafficserver.apache.org :method: GET :path: /job/tsqa-master/180/consoleFull :scheme: https accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 accept-encoding: gzip, deflate, sdch accept-language: en-US,en;q=0.8 cache-control: max-age=0 cookie: [71 bytes were stripped] user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36 -- spdy_priority = 0 -- stream_id = 1 -- unidirectional = false t=31890335 [st= 38]SPDY_SESSION_RECV_SETTINGS -- clear_persisted = false -- host = ci.trafficserver.apache.org:443 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 1 -- value = 4096 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 2 -- value = 0 t=31890335 [st= 38]SPDY_SESSION_RECV_SETTING -- flags = 0 -- id = 3 -- value = 100 t=31890436 [st=139]SPDY_SESSION_RECV_HEADERS -- fin = true -- :status: 200 age: 1 cache-control: no-cache,no-store,must-revalidate content-encoding: gzip content-type: text/html;charset=UTF-8 date: Thu, 26 Feb 2015 21:30:14 GMT expires: Thu, 01 Jan 1970 00:00:00 GMT server: ATS/5.3.0 set-cookie: [67 bytes were stripped] strict-transport-security: max-age=86400 via: http/1.1 ATS (ApacheTrafficServer/5.3.0 [cMsSf ]) x-frame-options: sameorigin x-hudson: 1.395 x-hudson-cli-port: 40666 x-hudson-theme: default x-instance-identity:
[jira] [Updated] (TS-3405) Memory use after free in HTTP/2
[ https://issues.apache.org/jira/browse/TS-3405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3405: -- Attachment: 0002-fix-h2.patch Fix the bug of fix-h2.patch. This patch gets mutex_lock when checking whether GOAWAY was sent or not but maybe It should be replace with mutex_try_lock. Memory use after free in HTTP/2 --- Key: TS-3405 URL: https://issues.apache.org/jira/browse/TS-3405 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Bryan Call Fix For: 5.3.0 Attachments: 0002-fix-h2.patch, fix-h2.patch From Leif running on docs.trafficserver.apache.org: {code} traffic_server: using root directory '/opt/ats' = ==31101==ERROR: AddressSanitizer: heap-use-after-free on address 0x6180c888 at pc 0x4f3558 bp 0x2aaf10c88930 sp 0x2aaf10c88928 READ of size 8 at 0x6180c888 thread T2 ([ET_NET 1]) #0 0x4f3557 in Continuation::handleEvent(int, void*) ../iocore/eventsystem/I_Continuation.h:146 #1 0x4f3557 in FetchSM::InvokePluginExt(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:301 #2 0x4f3a7a in FetchSM::process_fetch_read(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:465 #3 0x4f5112 in FetchSM::fetch_handler(int, void*) /usr/local/src/trafficserver/proxy/FetchSM.cc:514 #4 0x59f1b7 in Continuation::handleEvent(int, void*) ../iocore/eventsystem/I_Continuation.h:146 #5 0x59f1b7 in PluginVC::process_read_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:640 #6 0x5abcb9 in PluginVC::main_handler(int, void*) /usr/local/src/trafficserver/proxy/PluginVC.cc:206 #7 0xc821fe in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #8 0xc821fe in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:144 #9 0xc84819 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:238 #10 0xc80e18 in spawn_thread_internal /usr/local/src/trafficserver/iocore/eventsystem/Thread.cc:88 #11 0x2aaf0b083df2 in start_thread (/lib64/libpthread.so.0+0x7df2) #12 0x2aaf0c8ec1ac in clone (/lib64/libc.so.6+0xf61ac) 0x6180c888 is located 8 bytes inside of 816-byte region [0x6180c880,0x6180cbb0) freed by thread T0 ([ET_NET 0]) here: #0 0x2aaf08c131c7 in __interceptor_free ../../.././libsanitizer/asan/asan_malloc_linux.cc:62 #1 0x7b7d42 in Http2ClientSession::do_io_close(int) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:194 #2 0x7b7d42 in Http2ClientSession::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:237 #3 0xc1351f in Continuation::handleEvent(int, void*) ../../iocore/eventsystem/I_Continuation.h:146 #4 0xc1351f in read_signal_and_update /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:140 #5 0xc1351f in read_signal_done /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:185 #6 0xc1351f in UnixNetVConnection::readSignalDone(int, NetHandler*) /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:939 #7 0xbbabf8 in SSLNetVConnection::net_read_io(NetHandler*, EThread*) /usr/local/src/trafficserver/iocore/net/SSLNetVConnection.cc:596 #8 0xbda09c in NetHandler::mainNetEvent(int, Event*) /usr/local/src/trafficserver/iocore/net/UnixNet.cc:513 #9 0xc85089 in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #10 0xc85089 in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:144 #11 0xc85089 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:268 #12 0x498f96 in main /usr/local/src/trafficserver/proxy/Main.cc:1826 #13 0x2aaf0c817af4 in __libc_start_main (/lib64/libc.so.6+0x21af4) previously allocated by thread T0 ([ET_NET 0]) here: #0 0x2aaf08c1393b in __interceptor_posix_memalign ../../.././libsanitizer/asan/asan_malloc_linux.cc:130 #1 0x2aaf09afd2f9 in ats_memalign /usr/local/src/trafficserver/lib/ts/ink_memory.cc:96 #2 0x7cd804 in ClassAllocatorHttp2ClientSession::alloc() ../../lib/ts/Allocator.h:124 #3 0x7cd804 in Http2SessionAccept::accept(NetVConnection*, MIOBuffer*, IOBufferReader*) /usr/local/src/trafficserver/proxy/http2/Http2SessionAccept.cc:57 #4 0x7cd3c4 in Http2SessionAccept::mainEvent(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2SessionAccept.cc:69 #5 0xbc2fae in SSLNextProtocolTrampoline::ioCompletionEvent(int, void*) /usr/local/src/trafficserver/iocore/net/SSLNextProtocolAccept.cc:101 #6 0xc1351f in
[jira] [Updated] (TS-3405) Memory use after free in HTTP/2
[ https://issues.apache.org/jira/browse/TS-3405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3405: -- Attachment: fix-h2.patch Fix missing releasing processes for FetchSM and Http2ConnectionState. It may fix use-after-free. Memory use after free in HTTP/2 --- Key: TS-3405 URL: https://issues.apache.org/jira/browse/TS-3405 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Bryan Call Fix For: 5.3.0 Attachments: fix-h2.patch From Leif running on docs.trafficserver.apache.org: {code} traffic_server: using root directory '/opt/ats' = ==31101==ERROR: AddressSanitizer: heap-use-after-free on address 0x6180c888 at pc 0x4f3558 bp 0x2aaf10c88930 sp 0x2aaf10c88928 READ of size 8 at 0x6180c888 thread T2 ([ET_NET 1]) #0 0x4f3557 in Continuation::handleEvent(int, void*) ../iocore/eventsystem/I_Continuation.h:146 #1 0x4f3557 in FetchSM::InvokePluginExt(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:301 #2 0x4f3a7a in FetchSM::process_fetch_read(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:465 #3 0x4f5112 in FetchSM::fetch_handler(int, void*) /usr/local/src/trafficserver/proxy/FetchSM.cc:514 #4 0x59f1b7 in Continuation::handleEvent(int, void*) ../iocore/eventsystem/I_Continuation.h:146 #5 0x59f1b7 in PluginVC::process_read_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:640 #6 0x5abcb9 in PluginVC::main_handler(int, void*) /usr/local/src/trafficserver/proxy/PluginVC.cc:206 #7 0xc821fe in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #8 0xc821fe in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:144 #9 0xc84819 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:238 #10 0xc80e18 in spawn_thread_internal /usr/local/src/trafficserver/iocore/eventsystem/Thread.cc:88 #11 0x2aaf0b083df2 in start_thread (/lib64/libpthread.so.0+0x7df2) #12 0x2aaf0c8ec1ac in clone (/lib64/libc.so.6+0xf61ac) 0x6180c888 is located 8 bytes inside of 816-byte region [0x6180c880,0x6180cbb0) freed by thread T0 ([ET_NET 0]) here: #0 0x2aaf08c131c7 in __interceptor_free ../../.././libsanitizer/asan/asan_malloc_linux.cc:62 #1 0x7b7d42 in Http2ClientSession::do_io_close(int) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:194 #2 0x7b7d42 in Http2ClientSession::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:237 #3 0xc1351f in Continuation::handleEvent(int, void*) ../../iocore/eventsystem/I_Continuation.h:146 #4 0xc1351f in read_signal_and_update /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:140 #5 0xc1351f in read_signal_done /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:185 #6 0xc1351f in UnixNetVConnection::readSignalDone(int, NetHandler*) /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:939 #7 0xbbabf8 in SSLNetVConnection::net_read_io(NetHandler*, EThread*) /usr/local/src/trafficserver/iocore/net/SSLNetVConnection.cc:596 #8 0xbda09c in NetHandler::mainNetEvent(int, Event*) /usr/local/src/trafficserver/iocore/net/UnixNet.cc:513 #9 0xc85089 in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #10 0xc85089 in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:144 #11 0xc85089 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:268 #12 0x498f96 in main /usr/local/src/trafficserver/proxy/Main.cc:1826 #13 0x2aaf0c817af4 in __libc_start_main (/lib64/libc.so.6+0x21af4) previously allocated by thread T0 ([ET_NET 0]) here: #0 0x2aaf08c1393b in __interceptor_posix_memalign ../../.././libsanitizer/asan/asan_malloc_linux.cc:130 #1 0x2aaf09afd2f9 in ats_memalign /usr/local/src/trafficserver/lib/ts/ink_memory.cc:96 #2 0x7cd804 in ClassAllocatorHttp2ClientSession::alloc() ../../lib/ts/Allocator.h:124 #3 0x7cd804 in Http2SessionAccept::accept(NetVConnection*, MIOBuffer*, IOBufferReader*) /usr/local/src/trafficserver/proxy/http2/Http2SessionAccept.cc:57 #4 0x7cd3c4 in Http2SessionAccept::mainEvent(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2SessionAccept.cc:69 #5 0xbc2fae in SSLNextProtocolTrampoline::ioCompletionEvent(int, void*) /usr/local/src/trafficserver/iocore/net/SSLNextProtocolAccept.cc:101 #6 0xc1351f in Continuation::handleEvent(int, void*)
[jira] [Commented] (TS-3405) Memory use after free in HTTP/2
[ https://issues.apache.org/jira/browse/TS-3405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14335875#comment-14335875 ] Ryo Okubo commented on TS-3405: --- Susan, I made a trivial mistake. I should raise HTTP2_SESSION_EVENT_FINI after calling HTTP2_SESSION_EVENT_XMIT as below code. I'll fix soon. {code} // xmit event MUTEX_LOCK(lock, this-ua_session-mutex, this_ethread()); this-ua_session-handleEvent(HTTP2_SESSION_EVENT_XMIT, frame); // finalize ConnectionState handleEvent(HTTP2_SESSION_EVENT_FINI, NULL); {code} I'll also try reproducing the CPU usage problem. Memory use after free in HTTP/2 --- Key: TS-3405 URL: https://issues.apache.org/jira/browse/TS-3405 Project: Traffic Server Issue Type: Bug Components: HTTP/2 Reporter: Bryan Call Fix For: 5.3.0 Attachments: fix-h2.patch From Leif running on docs.trafficserver.apache.org: {code} traffic_server: using root directory '/opt/ats' = ==31101==ERROR: AddressSanitizer: heap-use-after-free on address 0x6180c888 at pc 0x4f3558 bp 0x2aaf10c88930 sp 0x2aaf10c88928 READ of size 8 at 0x6180c888 thread T2 ([ET_NET 1]) #0 0x4f3557 in Continuation::handleEvent(int, void*) ../iocore/eventsystem/I_Continuation.h:146 #1 0x4f3557 in FetchSM::InvokePluginExt(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:301 #2 0x4f3a7a in FetchSM::process_fetch_read(int) /usr/local/src/trafficserver/proxy/FetchSM.cc:465 #3 0x4f5112 in FetchSM::fetch_handler(int, void*) /usr/local/src/trafficserver/proxy/FetchSM.cc:514 #4 0x59f1b7 in Continuation::handleEvent(int, void*) ../iocore/eventsystem/I_Continuation.h:146 #5 0x59f1b7 in PluginVC::process_read_side(bool) /usr/local/src/trafficserver/proxy/PluginVC.cc:640 #6 0x5abcb9 in PluginVC::main_handler(int, void*) /usr/local/src/trafficserver/proxy/PluginVC.cc:206 #7 0xc821fe in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #8 0xc821fe in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:144 #9 0xc84819 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:238 #10 0xc80e18 in spawn_thread_internal /usr/local/src/trafficserver/iocore/eventsystem/Thread.cc:88 #11 0x2aaf0b083df2 in start_thread (/lib64/libpthread.so.0+0x7df2) #12 0x2aaf0c8ec1ac in clone (/lib64/libc.so.6+0xf61ac) 0x6180c888 is located 8 bytes inside of 816-byte region [0x6180c880,0x6180cbb0) freed by thread T0 ([ET_NET 0]) here: #0 0x2aaf08c131c7 in __interceptor_free ../../.././libsanitizer/asan/asan_malloc_linux.cc:62 #1 0x7b7d42 in Http2ClientSession::do_io_close(int) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:194 #2 0x7b7d42 in Http2ClientSession::main_event_handler(int, void*) /usr/local/src/trafficserver/proxy/http2/Http2ClientSession.cc:237 #3 0xc1351f in Continuation::handleEvent(int, void*) ../../iocore/eventsystem/I_Continuation.h:146 #4 0xc1351f in read_signal_and_update /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:140 #5 0xc1351f in read_signal_done /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:185 #6 0xc1351f in UnixNetVConnection::readSignalDone(int, NetHandler*) /usr/local/src/trafficserver/iocore/net/UnixNetVConnection.cc:939 #7 0xbbabf8 in SSLNetVConnection::net_read_io(NetHandler*, EThread*) /usr/local/src/trafficserver/iocore/net/SSLNetVConnection.cc:596 #8 0xbda09c in NetHandler::mainNetEvent(int, Event*) /usr/local/src/trafficserver/iocore/net/UnixNet.cc:513 #9 0xc85089 in Continuation::handleEvent(int, void*) /usr/local/src/trafficserver/iocore/eventsystem/I_Continuation.h:146 #10 0xc85089 in EThread::process_event(Event*, int) /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:144 #11 0xc85089 in EThread::execute() /usr/local/src/trafficserver/iocore/eventsystem/UnixEThread.cc:268 #12 0x498f96 in main /usr/local/src/trafficserver/proxy/Main.cc:1826 #13 0x2aaf0c817af4 in __libc_start_main (/lib64/libc.so.6+0x21af4) previously allocated by thread T0 ([ET_NET 0]) here: #0 0x2aaf08c1393b in __interceptor_posix_memalign ../../.././libsanitizer/asan/asan_malloc_linux.cc:130 #1 0x2aaf09afd2f9 in ats_memalign /usr/local/src/trafficserver/lib/ts/ink_memory.cc:96 #2 0x7cd804 in ClassAllocatorHttp2ClientSession::alloc() ../../lib/ts/Allocator.h:124 #3 0x7cd804 in Http2SessionAccept::accept(NetVConnection*, MIOBuffer*, IOBufferReader*) /usr/local/src/trafficserver/proxy/http2/Http2SessionAccept.cc:57 #4 0x7cd3c4 in
[jira] [Commented] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14328381#comment-14328381 ] Ryo Okubo commented on TS-2729: --- I couldn't reproduce the bug, but I found a pattern which misses releasing FetchSM and maybe it causes the bug. I'm going to publish newer patch to fix it (and some other bugs) at the next week. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 5.3.0 Attachments: 0003-h2-prototype.patch, 0004-h2-prototype.patch, 0005-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch, improve-mime.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * 0003-h2-prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. DONE * Fundamental HTTP/2 frame handling * Flow control * Some error handlings h2. TODO * Refactoring * More debugging * Write documents * Add test tools for HPACK, HTTP/2 frames h2. No plan * [Server Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] This would probably require support for [Link preload|http://w3c.github.io/preload/#interoperability-with-http-link-header]? * [Stream Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] * [Alternative Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: 0005-h2-prototype.patch * 0005-h2-prototype.patch ** Fix a bug around releasing HTTP/2 stream resources and flow control. Leif, could you test this patch? maybe it fixes the bug which you found. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 5.3.0 Attachments: 0003-h2-prototype.patch, 0004-h2-prototype.patch, 0005-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch, improve-mime.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * 0003-h2-prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. DONE * Fundamental HTTP/2 frame handling * Flow control * Some error handlings h2. TODO * Refactoring * More debugging * Write documents * Add test tools for HPACK, HTTP/2 frames h2. No plan * [Server Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] This would probably require support for [Link preload|http://w3c.github.io/preload/#interoperability-with-http-link-header]? * [Stream Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] * [Alternative Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: 0004-h2-prototype.patch improve-mime.patch * improve-mime.patch ** Add some const qualifier to MIME.h ** Please merge it if it has no problem * 0004-h2-prototype.patch ** Fix some bugs of the base h2 patch, 0003-h2-prototype.patch. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: 0003-h2-prototype.patch, 0004-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch, improve-mime.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * 0003-h2-prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. DONE * Fundamental HTTP/2 frame handling * Flow control * Some error handlings h2. TODO * Refactoring * More debugging * Write documents * Add test tools for HPACK, HTTP/2 frames h2. No plan * [Server Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] This would probably require support for [Link preload|http://w3c.github.io/preload/#interoperability-with-http-link-header]? * [Stream Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] * [Alternative Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14314120#comment-14314120 ] Ryo Okubo commented on TS-2729: --- I already have write permission for Wiki and create the HTTP/2 Support page. https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=51810161 Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: 0003-h2-prototype.patch, 0004-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch, improve-mime.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * 0003-h2-prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. DONE * Fundamental HTTP/2 frame handling * Flow control * Some error handlings h2. TODO * Refactoring * More debugging * Write documents * Add test tools for HPACK, HTTP/2 frames h2. No plan * [Server Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] This would probably require support for [Link preload|http://w3c.github.io/preload/#interoperability-with-http-link-header]? * [Stream Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] * [Alternative Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14311912#comment-14311912 ] Ryo Okubo commented on TS-2729: --- Hi Leif, Thanks for catching. I'll fix these warnings at this weekend. I couldn't reproduce the ALPN problem ... please make sure that openssl-1.0.2 is installed on the client. To test ALPN, the openssl s_server command is useful. {noformat} // server (use only ALPN) $ openssl s_server -accept 443 -key server.key -cert server.crt -alpn h2-14 // client $ nghttp -v ... // If the client can use ALPN, the openssl s_server command print ALPN protocols selected: h2-14 {noformat} Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: 0003-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * 0003-h2-prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. DONE * Fundamental HTTP/2 frame handling * Flow control * Some error handlings h2. TODO * Refactoring * More debugging * Write documents * Add test tools for HPACK, HTTP/2 frames h2. No plan * [Server Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] * [Stream Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] * [Alternative Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * 0003-h2-prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. DONE * Fundamental HTTP/2 frame handling * Flow control * Some error handlings h2. TODO * Refactoring * More debugging * Write documents * Add test tools for HPACK, HTTP/2 frames h2. No plan * [Server Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] * [Stream Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] * [Alternative Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: 0003-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * 0003-h2-prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. DONE * Fundamental HTTP/2 frame handling * Flow control * Some error handlings h2. TODO * Refactoring * More debugging * Write documents * Add test tools for HPACK, HTTP/2 frames h2. No plan * [Server Push|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-8.2] * [Stream Priority|https://tools.ietf.org/html/draft-ietf-httpbis-http2-16#section-5.3] * [Alternative Services|https://tools.ietf.org/html/draft-ietf-httpbis-alt-svc-06] -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: 0003-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-16. https://tools.ietf.org/html/draft-ietf-httpbis-http2-16 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Add settings to records.config to use http2. {noformat} CONFIG proxy.config.http2.enabled INT 1 {noformat} # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: 0002-h2-prototype.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: 0003-h2-prototype.patch Update http2 patch. This patch supports almost of essential HTTP/2 features. It contains below improvements. * Enable to accpet large header * Flow control * Some error handlings TODO * Refactoring * Unit tests for HTTP/2 frames * Enable to set values of SETTINGS as entries of records.config * Support stream priority and weight * Support Alt-Svc Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: 0003-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: h2-14.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: add_const.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: fix_typo.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: h2_prototype.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: 0002-h2-prototype.patch Update the patch of HTTP/2 prototype. It contains below improvements. * Stream state management. * Around handling responses from origin server. * Enable to receive POST method HTTP/2 requests. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: 0002-h2-prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: h2c_upgrade.patch This patch enables to upgrade from HTTP/1 processes to HTTP/2 by using [upgrade mechanism|https://tools.ietf.org/html/draft-ietf-httpbis-http2-15#section-3.2]. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, fix_typo.patch, h2-14.patch, h2_prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14228071#comment-14228071 ] Ryo Okubo edited comment on TS-2729 at 11/28/14 7:37 AM: - This patch enables to upgrade from HTTP/1 processes to HTTP/2 by using [upgrade mechanism|https://tools.ietf.org/html/draft-ietf-httpbis-http2-15#section-3.2]. We can test it by nghttp2 with _--upgrade_ option. {noformat} $ nghttp --verbose --upgrade http://localhost:8080/ [ 0.006] HTTP Upgrade request GET / HTTP/1.1 Host: localhost:8080 Connection: Upgrade, HTTP2-Settings Upgrade: h2c-14 HTTP2-Settings: AAMAAABkAAQAAP__ Accept: */* User-Agent: nghttp2/0.6.1 [ 0.007] HTTP Upgrade response HTTP/1.1 101 Switching Protocols Date: Fri, 28 Nov 2014 07:31:06 GMT Connection: Upgrade Server: ATS/5.3.0 Upgrade: h2c-14 [ 0.007] HTTP Upgrade success [ 0.007] send SETTINGS frame length=12, flags=0x00, stream_id=0 (niv=2) [SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100] [SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535] [ 0.008] recv SETTINGS frame length=0, flags=0x00, stream_id=0 (niv=0) [ 0.008] send SETTINGS frame length=0, flags=0x01, stream_id=0 ; ACK (niv=0) [ 0.008] recv SETTINGS frame length=0, flags=0x01, stream_id=0 ; ACK (niv=0) {noformat} Processes after upgrading haven't been implemented yet. was (Author: rokubo): This patch enables to upgrade from HTTP/1 processes to HTTP/2 by using [upgrade mechanism|https://tools.ietf.org/html/draft-ietf-httpbis-http2-15#section-3.2]. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, fix_typo.patch, h2-14.patch, h2_prototype.patch, h2c_upgrade.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. Known issues * When an origin server responds 302, this patch can't respond response body. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. WIP * Improve h2_prototype * Implement hpack test tools -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-3156) Mutex[Try]Lock bool() operator change and unused API removal
[ https://issues.apache.org/jira/browse/TS-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3156: -- Attachment: fix-MutexLock.patch The cause of above issue is probably calling pthread_mutex_lock() for destroyed mutex lock. If a variable of ProxyMutex* is passed to MUTEX_LOCK(), it's destroyed when leaving that scope. For example, pthread_mutex_destroy() is called in MakeHttpProxyAcceptor(): {noformat} (gdb) bt #0 0x77830e70 in pthread_mutex_destroy () from /lib64/libpthread.so.0 #1 0x004e03da in ink_mutex_destroy (m=0xac7890) at ../lib/ts/ink_mutex.h:87 #2 0x004e15c2 in ProxyMutex::free (this=0xac7880) at ../iocore/eventsystem/I_Lock.h:543 #3 0x004e2f39 in PtrProxyMutex::~Ptr (this=0x7fffe3b0, __in_chrg=value optimized out) at ../lib/ts/Ptr.h:393 #4 0x00520f17 in MutexLock::~MutexLock (this=0x7fffe3b0, __in_chrg=value optimized out) at ../iocore/eventsystem/I_Lock.h:465 #5 0x005cea60 in MakeHttpProxyAcceptor (acceptor=..., port=..., nthreads=1) at HttpProxyServerMain.cc:230 #6 0x005cec45 in init_HttpProxyServer (n_accept_threads=1) at HttpProxyServerMain.cc:270 #7 0x0052aded in main (argv=0x7fffe7a8) at Main.cc:1554 {noformat} I tried to replace ProxyMutex* with PtrProxyMutex. It looks to work fine. @Powell, what do you think about fix-MutexLock.patch? Mutex[Try]Lock bool() operator change and unused API removal Key: TS-3156 URL: https://issues.apache.org/jira/browse/TS-3156 Project: Traffic Server Issue Type: Improvement Components: Core Reporter: Powell Molleti Assignee: James Peach Priority: Minor Labels: review Fix For: 5.2.0 Attachments: MutexLock-ats.patch, MutexLock-ats.patch, fix-MutexLock.patch Removed unused constructor in MutexLock along with set_and_take() method, had to change FORCE_PLUGIN_MUTEX() for that. Removed release() method. default bool and ! operator from both MutexLock and MutexTryLock with is_locked() API. Changes if (lock) to if (lock.is_locked()) across the code base. Ran make test will be performing more system testing. Posted before for early comments / feedback. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3156) Mutex[Try]Lock bool() operator change and unused API removal
[ https://issues.apache.org/jira/browse/TS-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14204240#comment-14204240 ] Ryo Okubo commented on TS-3156: --- Hi Powell, As you said, this issue may be caused by an uninitialized lock. I tried to print strerror() by writing that code: {noformat} static inline int ink_mutex_acquire(ink_mutex * m) { int err = pthread_mutex_lock(m); if (err != 0) { fprintf(stderr, Failed to acquire mutex lock: %s, strerror(err)); abort(); } return 0; } {noformat} then I got Mutex[Try]Lock bool() operator change and unused API removal Key: TS-3156 URL: https://issues.apache.org/jira/browse/TS-3156 Project: Traffic Server Issue Type: Improvement Components: Core Reporter: Powell Molleti Assignee: James Peach Priority: Minor Labels: review Fix For: 5.2.0 Attachments: MutexLock-ats.patch, MutexLock-ats.patch Removed unused constructor in MutexLock along with set_and_take() method, had to change FORCE_PLUGIN_MUTEX() for that. Removed release() method. default bool and ! operator from both MutexLock and MutexTryLock with is_locked() API. Changes if (lock) to if (lock.is_locked()) across the code base. Ran make test will be performing more system testing. Posted before for early comments / feedback. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3156) Mutex[Try]Lock bool() operator change and unused API removal
[ https://issues.apache.org/jira/browse/TS-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14204241#comment-14204241 ] Ryo Okubo commented on TS-3156: --- Hi Powell, As you said, this issue may be caused by an uninitialized lock. I tried to print strerror() by writing that code: {noformat} static inline int ink_mutex_acquire(ink_mutex * m) { int err = pthread_mutex_lock(m); if (err != 0) { fprintf(stderr, Failed to acquire mutex lock: %s, strerror(err)); abort(); } return 0; } {noformat} then I got Mutex[Try]Lock bool() operator change and unused API removal Key: TS-3156 URL: https://issues.apache.org/jira/browse/TS-3156 Project: Traffic Server Issue Type: Improvement Components: Core Reporter: Powell Molleti Assignee: James Peach Priority: Minor Labels: review Fix For: 5.2.0 Attachments: MutexLock-ats.patch, MutexLock-ats.patch Removed unused constructor in MutexLock along with set_and_take() method, had to change FORCE_PLUGIN_MUTEX() for that. Removed release() method. default bool and ! operator from both MutexLock and MutexTryLock with is_locked() API. Changes if (lock) to if (lock.is_locked()) across the code base. Ran make test will be performing more system testing. Posted before for early comments / feedback. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Issue Comment Deleted] (TS-3156) Mutex[Try]Lock bool() operator change and unused API removal
[ https://issues.apache.org/jira/browse/TS-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3156: -- Comment: was deleted (was: Hi Powell, As you said, this issue may be caused by an uninitialized lock. I tried to print strerror() by writing that code: {noformat} static inline int ink_mutex_acquire(ink_mutex * m) { int err = pthread_mutex_lock(m); if (err != 0) { fprintf(stderr, Failed to acquire mutex lock: %s, strerror(err)); abort(); } return 0; } {noformat} then I got ) Mutex[Try]Lock bool() operator change and unused API removal Key: TS-3156 URL: https://issues.apache.org/jira/browse/TS-3156 Project: Traffic Server Issue Type: Improvement Components: Core Reporter: Powell Molleti Assignee: James Peach Priority: Minor Labels: review Fix For: 5.2.0 Attachments: MutexLock-ats.patch, MutexLock-ats.patch Removed unused constructor in MutexLock along with set_and_take() method, had to change FORCE_PLUGIN_MUTEX() for that. Removed release() method. default bool and ! operator from both MutexLock and MutexTryLock with is_locked() API. Changes if (lock) to if (lock.is_locked()) across the code base. Ran make test will be performing more system testing. Posted before for early comments / feedback. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-3156) Mutex[Try]Lock bool() operator change and unused API removal
[ https://issues.apache.org/jira/browse/TS-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14204240#comment-14204240 ] Ryo Okubo edited comment on TS-3156 at 11/10/14 2:13 AM: - Hi Powell, As you said, this issue may be caused by an uninitialized lock. I tried to print strerror() by writing that code: {noformat} static inline int ink_mutex_acquire(ink_mutex * m) { int err = pthread_mutex_lock(m); if (err != 0) { fprintf(stderr, Failed to acquire mutex lock: %s, strerror(err)); abort(); } return 0; } {noformat} then I got EINVAL. {noformat} Failed to acquire mutex lock: Invalid argument {noformat} was (Author: rokubo): Hi Powell, As you said, this issue may be caused by an uninitialized lock. I tried to print strerror() by writing that code: {noformat} static inline int ink_mutex_acquire(ink_mutex * m) { int err = pthread_mutex_lock(m); if (err != 0) { fprintf(stderr, Failed to acquire mutex lock: %s, strerror(err)); abort(); } return 0; } {noformat} then I got Mutex[Try]Lock bool() operator change and unused API removal Key: TS-3156 URL: https://issues.apache.org/jira/browse/TS-3156 Project: Traffic Server Issue Type: Improvement Components: Core Reporter: Powell Molleti Assignee: James Peach Priority: Minor Labels: review Fix For: 5.2.0 Attachments: MutexLock-ats.patch, MutexLock-ats.patch Removed unused constructor in MutexLock along with set_and_take() method, had to change FORCE_PLUGIN_MUTEX() for that. Removed release() method. default bool and ! operator from both MutexLock and MutexTryLock with is_locked() API. Changes if (lock) to if (lock.is_locked()) across the code base. Ran make test will be performing more system testing. Posted before for early comments / feedback. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (TS-3156) Mutex[Try]Lock bool() operator change and unused API removal
[ https://issues.apache.org/jira/browse/TS-3156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14201863#comment-14201863 ] Ryo Okubo commented on TS-3156: --- I found a bug which raised SIGABRT after applying [53e56ffc7499648bc096d63f9c0f9da0ea9212ba|https://github.com/apache/trafficserver/commit/53e56ffc7499648bc096d63f9c0f9da0ea9212ba] When I specified multiple ports for ssl: {noformat} CONFIG proxy.config.http.server_ports STRING 443:ssl 4430:ssl {noformat} then I caught the below problem. {noformat} #0 0x003e06232925 in raise () from /lib64/libc.so.6 #1 0x003e06234105 in abort () from /lib64/libc.so.6 #2 0x004f5cd2 in ink_mutex_acquire (m=0xac76d0) at ../lib/ts/ink_mutex.h:94 #3 0x004f8482 in Mutex_lock (afile=0x7aa937 HttpProxyServerMain.cc, aline=227, ahandler=0x0, m=0xac76c0, t=0x76225010) at ../iocore/eventsystem/I_Lock.h:392 #4 0x00520e3a in MutexLock::MutexLock (this=0x7fffe3b0, afile=0x7aa937 HttpProxyServerMain.cc, aline=227, ahandler=0x0, am=0xac76c0, t=0x76225010) at ../iocore/eventsystem/I_Lock.h:459 #5 0x005ce9e2 in MakeHttpProxyAcceptor (acceptor=..., port=..., nthreads=1) at HttpProxyServerMain.cc:227 #6 0x005cebf5 in init_HttpProxyServer (n_accept_threads=1) at HttpProxyServerMain.cc:270 #7 0x0052ad9d in main (argv=0x7fffe7a8) at Main.cc:1554 {noformat} Mutex[Try]Lock bool() operator change and unused API removal Key: TS-3156 URL: https://issues.apache.org/jira/browse/TS-3156 Project: Traffic Server Issue Type: Improvement Components: Core Reporter: Powell Molleti Assignee: James Peach Priority: Minor Labels: review Fix For: 5.2.0 Attachments: MutexLock-ats.patch, MutexLock-ats.patch Removed unused constructor in MutexLock along with set_and_take() method, had to change FORCE_PLUGIN_MUTEX() for that. Removed release() method. default bool and ! operator from both MutexLock and MutexTryLock with is_locked() API. Changes if (lock) to if (lock.is_locked()) across the code base. Ran make test will be performing more system testing. Posted before for early comments / feedback. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. Known issues * When an origin server responds 302, this patch can't respond response body. was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. h2. Known issues * When an origin server responds 302, this patch can't respond response body. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch ** Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and dirty. More refactoring is required. was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch ** Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch ** Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and dirty. More refactoring is required. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and dirty. More refactoring is required. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experiment. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this code is unsafe and dirty. More refactoring is required. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: hpack_prototype.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2-14.patch, http2-0004.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: h2_prototype.patch hpack.patch add_const.patch Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 was: h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * was: h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch * Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch * A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch * For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch * Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch * A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch * For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch ** Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch * Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch * A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch * For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch ** Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Description: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch ** Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. was: h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test 1. Build ATS codes normally. you need neither any build option nor external HTTP/2 library. 2. Configure settings to use https. 3. Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch ** Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: add_const.patch, h2-14.patch, h2_prototype.patch, hpack.patch, http2-0004.patch h2. Overview Support HTTP/2 as a client side L7 protocol. This feature is implemented into ATS core. Now, it supports the latest HTTP/2 draft version, h2-14. https://tools.ietf.org/html/draft-ietf-httpbis-http2-14 h2. How to test # Build ATS codes normally. you need neither any build option nor external HTTP/2 library. # Configure settings to use https. # Access to ATS by HTTP/2 client. h2. Descriptions of current attached patches. * add_const.patch ** Add some const qualifer to Vec and MIMEField. Its needed to make HPACK codes more safety. * hpack.patch ** A implementation of HPACK, header compression format of HTTP/2. * h2_prototype.patch ** For experimental. Please don't merge it. It enables to interpret HTTP/2 requests and respond for it. But now this codes is unsafe and duty. More refactoring is required. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: h2-14.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: hpack_prototype.patch, http2-0004.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: h2-14.patch Updated h2-14.patch. it was modified considering byte order. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2-14.patch, hpack_prototype.patch, http2-0004.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: h2-14.patch Current HTTP/2 implementation supports draft-12, but it isn't latest specification. After this patch is applied, you can use latest draft. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2-14.patch, http2-0004.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Comment Edited] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14131283#comment-14131283 ] Ryo Okubo edited comment on TS-2729 at 9/12/14 8:48 AM: Current HTTP/2 implementation supports draft-12, but it isn't latest specification. After h2-14.patch is applied, you can use latest draft. was (Author: rokubo): Current HTTP/2 implementation supports draft-12, but it isn't latest specification. After this patch is applied, you can use latest draft. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2-14.patch, http2-0004.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: hpack_prototype.patch The hpack_prototype.patch enables to handle HTTP/2 headers that's encoded/decoded by HPACK. http://tools.ietf.org/html/draft-ietf-httpbis-header-compression-09 This patch has below features. - The encoder supports essential features. - The decoder supports all of compression format required by HPACK draft-09. - Some regression tests. - Decoded headers are stored into HTTPHdr object. Large parts of this patch are implemented by Daiki Aminaka, a student who had worked for our company as intern. thanks! :) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Assignee: James Peach Labels: review Fix For: 6.0.0 Attachments: h2-14.patch, hpack_prototype.patch, http2-0004.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (TS-3001) ATS responds 403 when OCSP request posted for GlobalSign
Ryo Okubo created TS-3001: - Summary: ATS responds 403 when OCSP request posted for GlobalSign Key: TS-3001 URL: https://issues.apache.org/jira/browse/TS-3001 Project: Traffic Server Issue Type: Bug Components: SSL Reporter: Ryo Okubo OCSP request for GlobalSign requires Host header but OCSP_sendreq_new() doesn't attach it. so OCSP request failed with 403 status code. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Comment Edited] (TS-3001) ATS responds 403 when OCSP request posted for GlobalSign
[ https://issues.apache.org/jira/browse/TS-3001?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14092536#comment-14092536 ] Ryo Okubo edited comment on TS-3001 at 8/11/14 7:48 AM: This patch fixes query_responder() to attach Host header to OCSP request. was (Author: rokubo): This patch fixes query_responder() to attach Host headers to OCSP request. ATS responds 403 when OCSP request posted for GlobalSign Key: TS-3001 URL: https://issues.apache.org/jira/browse/TS-3001 Project: Traffic Server Issue Type: Bug Components: SSL Reporter: Ryo Okubo Attachments: ocsp.diff OCSP request for GlobalSign requires Host header but OCSP_sendreq_new() doesn't attach it. so OCSP request failed with 403 status code. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-3001) ATS responds 403 when OCSP request posted for GlobalSign
[ https://issues.apache.org/jira/browse/TS-3001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3001: -- Attachment: ocsp.diff This patch fixes query_responder() to attach Host headers to OCSP request. ATS responds 403 when OCSP request posted for GlobalSign Key: TS-3001 URL: https://issues.apache.org/jira/browse/TS-3001 Project: Traffic Server Issue Type: Bug Components: SSL Reporter: Ryo Okubo Attachments: ocsp.diff OCSP request for GlobalSign requires Host header but OCSP_sendreq_new() doesn't attach it. so OCSP request failed with 403 status code. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-3001) GlobalSign responds 403 when OCSP request posted without Host header
[ https://issues.apache.org/jira/browse/TS-3001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3001: -- Summary: GlobalSign responds 403 when OCSP request posted without Host header (was: ATS responds 403 when OCSP request posted for GlobalSign) GlobalSign responds 403 when OCSP request posted without Host header Key: TS-3001 URL: https://issues.apache.org/jira/browse/TS-3001 Project: Traffic Server Issue Type: Bug Components: SSL Reporter: Ryo Okubo Attachments: ocsp.diff OCSP request for GlobalSign requires Host header but OCSP_sendreq_new() doesn't attach it. so OCSP request failed with 403 status code. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-3001) GlobalSign responds 403 when OCSP request posted without Host header
[ https://issues.apache.org/jira/browse/TS-3001?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-3001: -- Attachment: (was: ocsp.diff) GlobalSign responds 403 when OCSP request posted without Host header Key: TS-3001 URL: https://issues.apache.org/jira/browse/TS-3001 Project: Traffic Server Issue Type: Bug Components: SSL Reporter: Ryo Okubo Attachments: ocsp.diff OCSP request for GlobalSign requires Host header but OCSP_sendreq_new() doesn't attach it. so OCSP request failed with 403 status code. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2921) Build failure is caused by mismatching types
[ https://issues.apache.org/jira/browse/TS-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2921: -- Attachment: (was: fix_sslutils.diff) Build failure is caused by mismatching types Key: TS-2921 URL: https://issues.apache.org/jira/browse/TS-2921 Project: Traffic Server Issue Type: Bug Components: Build Reporter: Ryo Okubo After modification of TS-2893 merged, build failure is occured as below log. {noformat} SSLUtils.cc: In function 'SSL_CTX* SSLInitServerContext(const SSLConfigParams*, const ssl_user_config)': SSLUtils.cc:976: error: operands to ?: have different types 'const xptrchar' and 'const char [1]' SSLUtils.cc:986: warning: too many arguments for format {noformat} -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2921) Build failure is caused by mismatching types
[ https://issues.apache.org/jira/browse/TS-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2921: -- Attachment: fix_sslutils.diff Build failure is caused by mismatching types Key: TS-2921 URL: https://issues.apache.org/jira/browse/TS-2921 Project: Traffic Server Issue Type: Bug Components: Build Reporter: Ryo Okubo Attachments: fix_sslutils.diff After modification of TS-2893 merged, build failure is occured as below log. {noformat} SSLUtils.cc: In function 'SSL_CTX* SSLInitServerContext(const SSLConfigParams*, const ssl_user_config)': SSLUtils.cc:976: error: operands to ?: have different types 'const xptrchar' and 'const char [1]' SSLUtils.cc:986: warning: too many arguments for format {noformat} -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Created] (TS-2921) Build failure is caused by mismatching types
Ryo Okubo created TS-2921: - Summary: Build failure is caused by mismatching types Key: TS-2921 URL: https://issues.apache.org/jira/browse/TS-2921 Project: Traffic Server Issue Type: Bug Components: Build Reporter: Ryo Okubo After modification of TS-2893 merged, build failure is occured as below log. {noformat} SSLUtils.cc: In function 'SSL_CTX* SSLInitServerContext(const SSLConfigParams*, const ssl_user_config)': SSLUtils.cc:976: error: operands to ?: have different types 'const xptrchar' and 'const char [1]' SSLUtils.cc:986: warning: too many arguments for format {noformat} -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2921) Build failure is caused by mismatching types
[ https://issues.apache.org/jira/browse/TS-2921?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2921: -- Attachment: fix_sslutils.diff Build failure is caused by mismatching types Key: TS-2921 URL: https://issues.apache.org/jira/browse/TS-2921 Project: Traffic Server Issue Type: Bug Components: Build Reporter: Ryo Okubo Attachments: fix_sslutils.diff After modification of TS-2893 merged, build failure is occured as below log. {noformat} SSLUtils.cc: In function 'SSL_CTX* SSLInitServerContext(const SSLConfigParams*, const ssl_user_config)': SSLUtils.cc:976: error: operands to ?: have different types 'const xptrchar' and 'const char [1]' SSLUtils.cc:986: warning: too many arguments for format {noformat} -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2915) SEGV occurs when POST request was posted without Expect: 100-continue header
[ https://issues.apache.org/jira/browse/TS-2915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2915: -- Attachment: bugfix.diff SEGV occurs when POST request was posted without Expect: 100-continue header Key: TS-2915 URL: https://issues.apache.org/jira/browse/TS-2915 Project: Traffic Server Issue Type: Bug Components: HTTP Reporter: Ryo Okubo Attachments: bugfix.diff The patch merged on TS-1125 has a bug that occurs Segmentation fault. It reproduces when send_100_continue_response option was enabled and POST request was posted without Expect: 100-continue header. Please check follow links. https://github.com/apache/trafficserver/blob/master/proxy/http/HttpSM.cc#L1898 https://github.com/apache/trafficserver/blob/master/proxy/http/HttpSM.cc#L3290 -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2915) SEGV occurs when POST request was posted without Expect: 100-continue header
[ https://issues.apache.org/jira/browse/TS-2915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2915: -- Description: The patch merged on TS-1125 has a bug that occurs Segmentation fault. It's reproduced when send_100_continue_response option was enabled and POST request was posted without Expect: 100-continue header. Please check follow links. https://github.com/apache/trafficserver/blob/master/proxy/http/HttpSM.cc#L1898 https://github.com/apache/trafficserver/blob/master/proxy/http/HttpSM.cc#L3290 was: The patch merged on TS-1125 has a bug that occurs Segmentation fault. It reproduces when send_100_continue_response option was enabled and POST request was posted without Expect: 100-continue header. Please check follow links. https://github.com/apache/trafficserver/blob/master/proxy/http/HttpSM.cc#L1898 https://github.com/apache/trafficserver/blob/master/proxy/http/HttpSM.cc#L3290 SEGV occurs when POST request was posted without Expect: 100-continue header Key: TS-2915 URL: https://issues.apache.org/jira/browse/TS-2915 Project: Traffic Server Issue Type: Bug Components: HTTP Reporter: Ryo Okubo Attachments: bugfix.diff The patch merged on TS-1125 has a bug that occurs Segmentation fault. It's reproduced when send_100_continue_response option was enabled and POST request was posted without Expect: 100-continue header. Please check follow links. https://github.com/apache/trafficserver/blob/master/proxy/http/HttpSM.cc#L1898 https://github.com/apache/trafficserver/blob/master/proxy/http/HttpSM.cc#L3290 -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14029348#comment-14029348 ] Ryo Okubo commented on TS-2729: --- Hi, James I want to see your solution and patches that supports HTTP/2. I'll help in order to make better HTTP/2 implementation. By the way, what do you think about current SPDY implementation that depends on spdylay? If we decide to create HTTP/2 implementation without external libraries, I think we should rethink its dependency because HTTP/2 and SPDY have a lot of similar parts. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Labels: review Fix For: 5.1.0 Attachments: draft11.patch, fix-handling-version-string.patch, http2-0002.patch, http2-0004.patch, ts2743.patch, ts2760.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: cleanuped-0002.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Labels: review Fix For: 5.1.0 Attachments: draft11.patch, fix-handling-version-string.patch, http2-0002.patch, http2-0003.patch, ts2743.patch, ts2760.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: draft12.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Labels: review Fix For: 5.1.0 Attachments: draft11.patch, fix-handling-version-string.patch, http2-0002.patch, http2-0003.patch, ts2743.patch, ts2760.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: (was: http2-0001.patch) Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Labels: review Fix For: 5.1.0 Attachments: draft11.patch, fix-handling-version-string.patch, http2-0002.patch, http2-0003.patch, ts2743.patch, ts2760.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ryo Okubo updated TS-2729: -- Attachment: http2-0003.patch To follow TS-2751, TS-2767 and recent changes for SPDY implementation, I did some modification. You can use HTTP/2 functions on latest master branch by applying only http2-0003.patch. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Labels: review Fix For: 5.1.0 Attachments: cleanuped-0002.patch, draft11.patch, draft12.patch, fix-handling-version-string.patch, http2-0001.patch, http2-0002.patch, http2-0003.patch, ts2743.patch, ts2760.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (TS-2729) Add HTTP/2 support to ATS
[ https://issues.apache.org/jira/browse/TS-2729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14004539#comment-14004539 ] Ryo Okubo commented on TS-2729: --- Hi, kawtar This patch is only for _TrafficServer_. so you can't apply it to httpd. Add HTTP/2 support to ATS - Key: TS-2729 URL: https://issues.apache.org/jira/browse/TS-2729 Project: Traffic Server Issue Type: New Feature Components: HTTP/2 Reporter: Ryo Okubo Labels: review Fix For: 5.1.0 Attachments: cleanuped-0002.patch, draft11.patch, draft12.patch, fix-handling-version-string.patch, http2-0001.patch, http2-0002.patch, ts2743.patch, ts2760.patch h2. Overview We, CDN team of Yahoo! JAPAN, have implemented HTTP/2 support in ATS core experimentally. Now, it supports HTTP/2 draft-12. http://tools.ietf.org/html/draft-ietf-httpbis-http2-12 Our implementation similar to the SPDY implementation in ATS core(TS-2431) but we use nghttp2 library instead of spdylay to interpret HTTP/2 frames. https://github.com/tatsuhiro-t/nghttp2 We tested NPN and ALPN negotiation. h2. How to test it * Install nghttp2 library, here is URL of this library: https://github.com/tatsuhiro-t/nghttp2 * Use '--enable-http2' option to compile ATS: {noformat} $ ./configure --enable-http2 $ make all make install {noformat} * You can use '--with-openssl=dir' option. * Need not configure anything if you just want to test HTTP/2 without SSL. The code can recognize HTTP2, SPDY or HTTP by reading first to 3rd bytes of requests. * You can use nghttp in nghttp2 library(or other HTTP/2 client) to request, for example: {noformat} # HTTP/2 without SSL $ nghttp -v http://localhost/b.txt # HTTP/2 + SSL $ nghttp -v https://localhost/b.txt {noformat} h2. TODO * -Cleanup codes.- * Follow -http2 draft-12- and later. * -Support ALPN.- * Add settings related to HTTP/2 into records.config. ** it'll refer to configuration settings for SPDY on TS-2740 -- This message was sent by Atlassian JIRA (v6.2#6252)