Define NGHTTP2_CLIENT_CONNECTION_PREFACE macro

NGHTTP2_CLIENT_CONNECTION_PREFACE has the same content with
NGHTTP2_CLIENT_CONNECTION_HEADER, which is now obsoleted by
NGHTTP2_CLIENT_CONNECTION_PREFACE.
This commit is contained in:
Tatsuhiro Tsujikawa 2014-03-30 21:02:25 +09:00
parent ab2dc5967d
commit 60a2c260a5
11 changed files with 47 additions and 29 deletions

View File

@ -613,8 +613,8 @@ static void fetch_uri(const struct URI *uri)
connection.want_io = IO_NONE; connection.want_io = IO_NONE;
/* Send connection header in blocking I/O mode */ /* Send connection header in blocking I/O mode */
SSL_write(ssl, NGHTTP2_CLIENT_CONNECTION_HEADER, SSL_write(ssl, NGHTTP2_CLIENT_CONNECTION_PREFACE,
NGHTTP2_CLIENT_CONNECTION_HEADER_LEN); NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN);
/* Here make file descriptor non-block */ /* Here make file descriptor non-block */
make_non_block(fd); make_non_block(fd);

View File

@ -371,8 +371,8 @@ static void send_client_connection_header(http2_session_data *session_data)
int rv; int rv;
bufferevent_write(session_data->bev, bufferevent_write(session_data->bev,
NGHTTP2_CLIENT_CONNECTION_HEADER, NGHTTP2_CLIENT_CONNECTION_PREFACE,
NGHTTP2_CLIENT_CONNECTION_HEADER_LEN); NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN);
rv = nghttp2_submit_settings(session_data->session, NGHTTP2_FLAG_NONE, rv = nghttp2_submit_settings(session_data->session, NGHTTP2_FLAG_NONE,
iv, ARRLEN(iv)); iv, ARRLEN(iv));
if(rv != 0) { if(rv != 0) {

View File

@ -190,7 +190,7 @@ static http2_session_data* create_http2_session_data(app_context *app_ctx,
(app_ctx->evbase, fd, ssl, (app_ctx->evbase, fd, ssl,
BUFFEREVENT_SSL_ACCEPTING, BUFFEREVENT_SSL_ACCEPTING,
BEV_OPT_CLOSE_ON_FREE | BEV_OPT_DEFER_CALLBACKS); BEV_OPT_CLOSE_ON_FREE | BEV_OPT_DEFER_CALLBACKS);
session_data->handshake_leftlen = NGHTTP2_CLIENT_CONNECTION_HEADER_LEN; session_data->handshake_leftlen = NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN;
rv = getnameinfo(addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); rv = getnameinfo(addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST);
if(rv != 0) { if(rv != 0) {
session_data->client_addr = strdup("(unknown)"); session_data->client_addr = strdup("(unknown)");
@ -629,9 +629,9 @@ static void handshake_readcb(struct bufferevent *bev, void *ptr)
uint8_t data[24]; uint8_t data[24];
struct evbuffer *input = bufferevent_get_input(session_data->bev); struct evbuffer *input = bufferevent_get_input(session_data->bev);
int readlen = evbuffer_remove(input, data, session_data->handshake_leftlen); int readlen = evbuffer_remove(input, data, session_data->handshake_leftlen);
const char *conhead = NGHTTP2_CLIENT_CONNECTION_HEADER; const char *conhead = NGHTTP2_CLIENT_CONNECTION_PREFACE;
if(memcmp(conhead + NGHTTP2_CLIENT_CONNECTION_HEADER_LEN if(memcmp(conhead + NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN
- session_data->handshake_leftlen, data, readlen) != 0) { - session_data->handshake_leftlen, data, readlen) != 0) {
delete_http2_session_data(session_data); delete_http2_session_data(session_data);
return; return;

View File

@ -135,18 +135,36 @@ typedef struct {
*/ */
#define NGHTTP2_MAX_HEADER_TABLE_SIZE (1 << 16) #define NGHTTP2_MAX_HEADER_TABLE_SIZE (1 << 16)
/** /**
* @macro * @macro
* *
* The client connection header. * The client connection preface.
*/ */
#define NGHTTP2_CLIENT_CONNECTION_HEADER "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" #define NGHTTP2_CLIENT_CONNECTION_PREFACE "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"
/**
* @macro
*
* The length of :macro:`NGHTTP2_CLIENT_CONNECTION_PREFACE`.
*/
#define NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN 24
/**
* @macro
*
* The client connection header. This macro is obsoleted by
* NGHTTP2_CLIENT_CONNECTION_PREFACE.
*/
#define NGHTTP2_CLIENT_CONNECTION_HEADER NGHTTP2_CLIENT_CONNECTION_PREFACE
/** /**
* @macro * @macro
* *
* The length of :macro:`NGHTTP2_CLIENT_CONNECTION_HEADER`. * The length of :macro:`NGHTTP2_CLIENT_CONNECTION_HEADER`.
*/ */
#define NGHTTP2_CLIENT_CONNECTION_HEADER_LEN 24 #define NGHTTP2_CLIENT_CONNECTION_HEADER_LEN \
NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN
/** /**
* @enum * @enum

View File

@ -25,7 +25,7 @@ from libc.stdint cimport uint8_t, uint16_t, uint32_t, int32_t
cdef extern from 'nghttp2/nghttp2.h': cdef extern from 'nghttp2/nghttp2.h':
const char NGHTTP2_PROTO_VERSION_ID[] const char NGHTTP2_PROTO_VERSION_ID[]
const char NGHTTP2_CLIENT_CONNECTION_HEADER[] const char NGHTTP2_CLIENT_CONNECTION_PREFACE[]
const size_t NGHTTP2_INITIAL_WINDOW_SIZE const size_t NGHTTP2_INITIAL_WINDOW_SIZE
ctypedef struct nghttp2_session: ctypedef struct nghttp2_session:

View File

@ -901,7 +901,7 @@ if asyncio:
def connection_made(self, transport): def connection_made(self, transport):
self.transport = transport self.transport = transport
self.connection_header = cnghttp2.NGHTTP2_CLIENT_CONNECTION_HEADER self.connection_header = cnghttp2.NGHTTP2_CLIENT_CONNECTION_PREFACE
sock = self.transport.get_extra_info('socket') sock = self.transport.get_extra_info('socket')
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
ssl_ctx = self.transport.get_extra_info('sslcontext') ssl_ctx = self.transport.get_extra_info('sslcontext')

View File

@ -313,7 +313,7 @@ Http2Handler::Http2Handler(Sessions *sessions,
settings_timerev_(nullptr), settings_timerev_(nullptr),
pending_data_(nullptr), pending_data_(nullptr),
pending_datalen_(0), pending_datalen_(0),
left_connhd_len_(NGHTTP2_CLIENT_CONNECTION_HEADER_LEN), left_connhd_len_(NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN),
fd_(fd) fd_(fd)
{ {
nghttp2_buf_wrap_init(&sendbuf_, sendbufarray_, sizeof(sendbufarray_)); nghttp2_buf_wrap_init(&sendbuf_, sendbufarray_, sizeof(sendbufarray_));
@ -625,9 +625,9 @@ int Http2Handler::on_read()
if(left_connhd_len_ > 0) { if(left_connhd_len_ > 0) {
auto len = std::min(left_connhd_len_, nread); auto len = std::min(left_connhd_len_, nread);
const char *conhead = NGHTTP2_CLIENT_CONNECTION_HEADER; const char *conhead = NGHTTP2_CLIENT_CONNECTION_PREFACE;
if(memcmp(conhead + NGHTTP2_CLIENT_CONNECTION_HEADER_LEN - if(memcmp(conhead + NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN -
left_connhd_len_, bufp, len) != 0) { left_connhd_len_, bufp, len) != 0) {
return -1; return -1;
} }

View File

@ -135,8 +135,8 @@ void Http2Session::on_connect()
extra_connection_window); extra_connection_window);
} }
bufferevent_write(client_->bev, NGHTTP2_CLIENT_CONNECTION_HEADER, bufferevent_write(client_->bev, NGHTTP2_CLIENT_CONNECTION_PREFACE,
NGHTTP2_CLIENT_CONNECTION_HEADER_LEN); NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN);
} }
void Http2Session::submit_request() void Http2Session::submit_request()

View File

@ -713,8 +713,8 @@ struct HttpClient {
} }
} }
// Send connection header here // Send connection header here
bufferevent_write(bev, NGHTTP2_CLIENT_CONNECTION_HEADER, bufferevent_write(bev, NGHTTP2_CLIENT_CONNECTION_PREFACE,
NGHTTP2_CLIENT_CONNECTION_HEADER_LEN); NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN);
// If upgrade succeeds, the SETTINGS value sent with // If upgrade succeeds, the SETTINGS value sent with
// HTTP2-Settings header field has already been submitted to // HTTP2-Settings header field has already been submitted to
// session object. // session object.

View File

@ -138,7 +138,7 @@ namespace {
void upstream_http2_connhd_readcb(bufferevent *bev, void *arg) void upstream_http2_connhd_readcb(bufferevent *bev, void *arg)
{ {
// This callback assumes upstream is Http2Upstream. // This callback assumes upstream is Http2Upstream.
uint8_t data[NGHTTP2_CLIENT_CONNECTION_HEADER_LEN]; uint8_t data[NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN];
auto handler = static_cast<ClientHandler*>(arg); auto handler = static_cast<ClientHandler*>(arg);
auto leftlen = handler->get_left_connhd_len(); auto leftlen = handler->get_left_connhd_len();
auto input = bufferevent_get_input(bev); auto input = bufferevent_get_input(bev);
@ -147,8 +147,8 @@ void upstream_http2_connhd_readcb(bufferevent *bev, void *arg)
delete handler; delete handler;
return; return;
} }
if(memcmp(NGHTTP2_CLIENT_CONNECTION_HEADER + if(memcmp(NGHTTP2_CLIENT_CONNECTION_PREFACE +
NGHTTP2_CLIENT_CONNECTION_HEADER_LEN - leftlen, NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN - leftlen,
data, readlen) != 0) { data, readlen) != 0) {
// There is no downgrade path here. Just drop the connection. // There is no downgrade path here. Just drop the connection.
if(LOG_ENABLED(INFO)) { if(LOG_ENABLED(INFO)) {
@ -175,7 +175,7 @@ namespace {
void upstream_http1_connhd_readcb(bufferevent *bev, void *arg) void upstream_http1_connhd_readcb(bufferevent *bev, void *arg)
{ {
// This callback assumes upstream is HttpsUpstream. // This callback assumes upstream is HttpsUpstream.
uint8_t data[NGHTTP2_CLIENT_CONNECTION_HEADER_LEN]; uint8_t data[NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN];
auto handler = static_cast<ClientHandler*>(arg); auto handler = static_cast<ClientHandler*>(arg);
auto leftlen = handler->get_left_connhd_len(); auto leftlen = handler->get_left_connhd_len();
auto input = bufferevent_get_input(bev); auto input = bufferevent_get_input(bev);
@ -184,15 +184,15 @@ void upstream_http1_connhd_readcb(bufferevent *bev, void *arg)
delete handler; delete handler;
return; return;
} }
if(memcmp(NGHTTP2_CLIENT_CONNECTION_HEADER + if(memcmp(NGHTTP2_CLIENT_CONNECTION_PREFACE +
NGHTTP2_CLIENT_CONNECTION_HEADER_LEN - leftlen, NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN - leftlen,
data, readlen) != 0) { data, readlen) != 0) {
if(LOG_ENABLED(INFO)) { if(LOG_ENABLED(INFO)) {
CLOG(INFO, handler) << "This is HTTP/1.1 connection, " CLOG(INFO, handler) << "This is HTTP/1.1 connection, "
<< "but may be upgraded to HTTP/2 later."; << "but may be upgraded to HTTP/2 later.";
} }
// Reset header length for later HTTP/2 upgrade // Reset header length for later HTTP/2 upgrade
handler->set_left_connhd_len(NGHTTP2_CLIENT_CONNECTION_HEADER_LEN); handler->set_left_connhd_len(NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN);
handler->set_bev_cb(upstream_readcb, upstream_writecb, upstream_eventcb); handler->set_bev_cb(upstream_readcb, upstream_writecb, upstream_eventcb);
if(handler->on_read() != 0) { if(handler->on_read() != 0) {
delete handler; delete handler;
@ -254,7 +254,7 @@ ClientHandler::ClientHandler(bufferevent *bev,
bev_(bev), bev_(bev),
http2session_(nullptr), http2session_(nullptr),
ssl_(ssl), ssl_(ssl),
left_connhd_len_(NGHTTP2_CLIENT_CONNECTION_HEADER_LEN), left_connhd_len_(NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN),
fd_(fd), fd_(fd),
should_close_after_write_(false), should_close_after_write_(false),
tls_handshake_(false), tls_handshake_(false),

View File

@ -1219,8 +1219,8 @@ int Http2Session::on_connect()
} }
} }
rv = bufferevent_write(bev_, NGHTTP2_CLIENT_CONNECTION_HEADER, rv = bufferevent_write(bev_, NGHTTP2_CLIENT_CONNECTION_PREFACE,
NGHTTP2_CLIENT_CONNECTION_HEADER_LEN); NGHTTP2_CLIENT_CONNECTION_PREFACE_LEN);
if(rv != 0) { if(rv != 0) {
SSLOG(FATAL, this) << "bufferevent_write() failed"; SSLOG(FATAL, this) << "bufferevent_write() failed";
return -1; return -1;