本文整理汇总了C++中H2O_STRLIT函数的典型用法代码示例。如果您正苦于以下问题:C++ H2O_STRLIT函数的具体用法?C++ H2O_STRLIT怎么用?C++ H2O_STRLIT使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了H2O_STRLIT函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: h2o_send_error
void h2o_send_error(h2o_req_t *req, int status, const char *reason, const char *body, int flags)
{
bind_conf(req);
if ((flags & H2O_SEND_ERROR_HTTP1_CLOSE_CONNECTION) != 0)
req->http1_is_persistent = 0;
req->res.status = status;
req->res.reason = reason;
req->res.content_length = strlen(body);
memset(&req->res.headers, 0, sizeof(req->res.headers));
h2o_add_header(&req->pool, &req->res.headers, H2O_TOKEN_CONTENT_TYPE, H2O_STRLIT("text/plain; charset=utf-8"));
h2o_send_inline(req, body, SIZE_MAX);
}
开发者ID:bowlofstew,项目名称:h2o,代码行数:15,代码来源:request.c
示例2: register_authority
static void register_authority(h2o_globalconf_t *globalconf, h2o_iovec_t host, uint16_t port)
{
static h2o_iovec_t x_authority = {H2O_STRLIT("x-authority")};
h2o_hostconf_t *hostconf = h2o_config_register_host(globalconf, host, port);
h2o_pathconf_t *pathconf = h2o_config_register_path(hostconf, "/");
h2o_file_register(pathconf, "t/00unit/assets", NULL, NULL, 0);
char *authority = h2o_mem_alloc(host.len + sizeof(":65535"));
sprintf(authority, "%.*s:%" PRIu16, (int)host.len, host.base, port);
h2o_headers_command_t *cmds = h2o_mem_alloc(sizeof(*cmds) * 2);
cmds[0] = (h2o_headers_command_t){H2O_HEADERS_CMD_ADD, &x_authority, {authority, strlen(authority)}};
cmds[1] = (h2o_headers_command_t){H2O_HEADERS_CMD_NULL};
h2o_headers_register(pathconf, cmds);
}
开发者ID:4Second2None,项目名称:h2o,代码行数:15,代码来源:293.c
示例3: rewrite_location
static h2o_iovec_t rewrite_location(h2o_mem_pool_t *pool, const char *location, size_t location_len, h2o_proxy_location_t *upstream, h2o_iovec_t req_scheme, h2o_iovec_t req_authority, h2o_iovec_t req_basepath)
{
h2o_iovec_t loc_scheme, loc_host, loc_path;
uint16_t loc_port;
if (h2o_parse_url(location, location_len, &loc_scheme, &loc_host, &loc_port, &loc_path) != 0
|| ! test_location_match(upstream, loc_scheme, loc_host, loc_port, loc_path))
return h2o_iovec_init(location, location_len);
return h2o_concat(pool,
req_scheme,
h2o_iovec_init(H2O_STRLIT("://")),
req_authority,
req_basepath,
h2o_iovec_init(loc_path.base + upstream->path.len, loc_path.len - upstream->path.len));
}
开发者ID:bowlofstew,项目名称:h2o,代码行数:16,代码来源:proxy.c
示例4: test_decode_base64
static void test_decode_base64(void)
{
h2o_mem_pool_t pool;
char buf[256];
h2o_mem_init_pool(&pool);
h2o_iovec_t src = {H2O_STRLIT("The quick brown fox jumps over the lazy dog.")}, decoded;
h2o_base64_encode(buf, (const uint8_t *)src.base, src.len, 1);
ok(strcmp(buf, "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4") == 0);
decoded = h2o_decode_base64url(&pool, buf, strlen(buf));
ok(src.len == decoded.len);
ok(strcmp(decoded.base, src.base) == 0);
h2o_mem_clear_pool(&pool);
}
开发者ID:cubicdaiya,项目名称:h2o,代码行数:16,代码来源:string.c
示例5: h2o_mem_alloc_shared
static struct rp_generator_t *proxy_send_prepare(h2o_req_t *req, h2o_proxy_location_t *upstream, int keepalive)
{
struct rp_generator_t *self = h2o_mem_alloc_shared(&req->pool, sizeof(*self), on_generator_dispose);
self->super.proceed = do_proceed;
self->super.stop = do_close;
self->upstream = upstream;
self->src_req = req;
self->up_req.bufs[0] = build_request(req, upstream, keepalive);
self->up_req.bufs[1] = req->entity;
self->up_req.is_head = h2o_memis(req->method.base, req->method.len, H2O_STRLIT("HEAD"));
h2o_buffer_init(&self->last_content_before_send, &h2o_socket_buffer_prototype);
h2o_buffer_init(&self->buf_sending, &h2o_socket_buffer_prototype);
return self;
}
开发者ID:bowlofstew,项目名称:h2o,代码行数:16,代码来源:proxy.c
示例6: h2o_mem_alloc_shared
h2o_compress_context_t *h2o_compress_gzip_open(h2o_mem_pool_t *pool, int quality)
{
struct st_gzip_context_t *self = h2o_mem_alloc_shared(pool, sizeof(*self), do_free);
self->super.name = h2o_iovec_init(H2O_STRLIT("gzip"));
self->super.compress = do_compress;
self->zs.zalloc = alloc_cb;
self->zs.zfree = free_cb;
self->zs.opaque = NULL;
/* Z_BEST_SPEED for on-the-fly compression, memlevel set to 8 as suggested by the manual */
deflateInit2(&self->zs, quality, Z_DEFLATED, WINDOW_BITS, 8, Z_DEFAULT_STRATEGY);
self->zs_is_open = 1;
self->bufs = (iovec_vector_t){};
expand_buf(&self->bufs);
return &self->super;
}
开发者ID:Birdflying1005,项目名称:h2o,代码行数:17,代码来源:gzip.c
示例7: redirect_internally
static void redirect_internally(h2o_redirect_handler_t *self, h2o_req_t *req, h2o_iovec_t dest)
{
h2o_iovec_t method;
h2o_url_t input, resolved;
/* resolve the URL */
if (h2o_url_parse_relative(dest.base, dest.len, &input) != 0) {
h2o_req_log_error(req, MODULE_NAME, "invalid destination:%.*s", (int)dest.len, dest.base);
goto SendInternalError;
}
if (input.scheme != NULL && input.authority.base != NULL) {
resolved = input;
} else {
h2o_url_t base;
/* we MUST to set authority to that of hostconf, or internal redirect might create a TCP connection */
if (h2o_url_init(&base, req->scheme, req->hostconf->authority.hostport, req->path) != 0) {
h2o_req_log_error(req, MODULE_NAME, "failed to parse current authority:%.*s", (int)req->authority.len,
req->authority.base);
goto SendInternalError;
}
h2o_url_resolve(&req->pool, &base, &input, &resolved);
}
/* determine the method */
switch (self->status) {
case 307:
case 308:
method = req->method;
break;
default:
method = h2o_iovec_init(H2O_STRLIT("GET"));
#ifndef _MSC_VER
req->entity = (h2o_iovec_t){NULL};
#else
req->entity = (h2o_iovec_t) { 0 };
#endif
break;
}
h2o_reprocess_request_deferred(req, method, resolved.scheme, resolved.authority, resolved.path, NULL, 1);
return;
SendInternalError:
h2o_send_error_503(req, "Internal Server Error", "internal server error", 0);
}
开发者ID:LakhanRathi92,项目名称:h2o,代码行数:45,代码来源:redirect.c
示例8: main
int main(int argc, char **argv)
{
h2o_hostconf_t *hostconf;
signal(SIGPIPE, SIG_IGN);
h2o_config_init(&config);
hostconf = h2o_config_register_host(&config, h2o_iovec_init(H2O_STRLIT("default")), 65535);
register_handler(hostconf, "/post-test", post_test);
register_handler(hostconf, "/chunked-test", chunked_test);
h2o_reproxy_register(register_handler(hostconf, "/reproxy-test", reproxy_test));
h2o_file_register(h2o_config_register_path(hostconf, "/"), "examples/doc_root", NULL, NULL, 0);
#if H2O_USE_LIBUV
uv_loop_t loop;
uv_loop_init(&loop);
h2o_context_init(&ctx, &loop, &config);
#else
h2o_context_init(&ctx, h2o_evloop_create(), &config);
#endif
/* disabled by default: uncomment the block below to use HTTPS instead of HTTP */
/*
if (setup_ssl("server.crt", "server.key") != 0)
goto Error;
*/
/* disabled by default: uncomment the line below to enable access logging */
/* h2o_access_log_register(&config.default_host, "/dev/stdout", NULL); */
if (create_listener() != 0) {
fprintf(stderr, "failed to listen to 127.0.0.1:7890:%s\n", strerror(errno));
goto Error;
}
#if H2O_USE_LIBUV
uv_run(ctx.loop, UV_RUN_DEFAULT);
#else
while (h2o_evloop_run(ctx.loop) == 0)
;
#endif
Error:
return 1;
}
开发者ID:LearningSystems,项目名称:h2o,代码行数:45,代码来源:simple.c
示例9: test_lib__handler__redirect_c
void test_lib__handler__redirect_c()
{
h2o_globalconf_t globalconf;
h2o_hostconf_t *hostconf;
h2o_pathconf_t *pathconf;
h2o_config_init(&globalconf);
hostconf = h2o_config_register_host(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535);
pathconf = h2o_config_register_path(hostconf, "/", 0);
h2o_redirect_register(pathconf, 0, 301, "https://example.com/bar/");
h2o_context_init(&ctx, test_loop, &globalconf);
{
h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts);
conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET"));
conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/"));
h2o_loopback_run_loop(conn);
ok(conn->req.res.status == 301);
ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/"));
ok(conn->body->size != 0);
h2o_loopback_destroy(conn);
}
{
h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts);
conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET"));
conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/abc"));
h2o_loopback_run_loop(conn);
ok(conn->req.res.status == 301);
ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/abc"));
ok(conn->body->size != 0);
h2o_loopback_destroy(conn);
}
{
h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts);
conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD"));
conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/"));
h2o_loopback_run_loop(conn);
ok(conn->req.res.status == 301);
ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/"));
ok(conn->body->size == 0);
h2o_loopback_destroy(conn);
}
h2o_context_dispose(&ctx);
h2o_config_dispose(&globalconf);
}
开发者ID:Birdflying1005,项目名称:h2o,代码行数:47,代码来源:redirect.c
示例10: test_parse_proxy_line
static void test_parse_proxy_line(void)
{
char in[256];
struct sockaddr_storage sa;
socklen_t salen;
ssize_t ret;
strcpy(in, "");
ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen);
ok(ret == -2);
strcpy(in, "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\nabc");
ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen);
ok(ret == strlen(in) - 3);
ok(salen == sizeof(struct sockaddr_in));
ok(sa.ss_family == AF_INET);
ok(((struct sockaddr_in *)&sa)->sin_addr.s_addr == htonl(0xc0a80001));
ok(((struct sockaddr_in *)&sa)->sin_port == htons(56324));
strcpy(in, "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r");
ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen);
ok(ret == -2);
strcpy(in, "PROXY TCP5");
ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen);
ok(ret == -1);
strcpy(in, "PROXY UNKNOWN");
ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen);
ok(ret == -2);
strcpy(in, "PROXY UNKNOWN\r\nabc");
ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen);
ok(ret == strlen(in) - 3);
ok(salen == 0);
strcpy(in, "PROXY TCP6 ::1 ::1 56324 443\r\n");
ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen);
ok(ret == strlen(in));
ok(salen == sizeof(struct sockaddr_in6));
ok(sa.ss_family == AF_INET6);
ok(memcmp(&((struct sockaddr_in6 *)&sa)->sin6_addr, H2O_STRLIT("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1")) == 0);
ok(((struct sockaddr_in6 *)&sa)->sin6_port == htons(56324));
}
开发者ID:fetus-hina,项目名称:h2o,代码行数:44,代码来源:util.c
示例11: test_issues293
void test_issues293()
{
h2o_globalconf_t globalconf;
h2o_config_init(&globalconf);
/* register two hosts, using 80 and 443 */
register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535);
register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host1")), 80);
register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host1")), 443);
register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host2")), 80);
register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host2")), 443);
register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host3")), 65535);
h2o_context_init(&ctx, test_loop, &globalconf);
/* run the tests */
check(&H2O_URL_SCHEME_HTTP, "host1", "host1:80");
check(&H2O_URL_SCHEME_HTTPS, "host1", "host1:443");
check(&H2O_URL_SCHEME_HTTP, "host2", "host2:80");
check(&H2O_URL_SCHEME_HTTPS, "host2", "host2:443");
/* supplied port number in the Host header must be preferred */
check(&H2O_URL_SCHEME_HTTP, "host1:80", "host1:80");
check(&H2O_URL_SCHEME_HTTP, "host1:443", "host1:443");
check(&H2O_URL_SCHEME_HTTPS, "host1:80", "host1:80");
check(&H2O_URL_SCHEME_HTTPS, "host1:443", "host1:443");
check(&H2O_URL_SCHEME_HTTP, "host2:80", "host2:80");
check(&H2O_URL_SCHEME_HTTP, "host2:443", "host2:443");
check(&H2O_URL_SCHEME_HTTPS, "host2:80", "host2:80");
check(&H2O_URL_SCHEME_HTTPS, "host2:443", "host2:443");
/* host-level conf without default port */
check(&H2O_URL_SCHEME_HTTP, "host3", "host3:65535");
check(&H2O_URL_SCHEME_HTTPS, "host3", "host3:65535");
check(&H2O_URL_SCHEME_HTTP, "host3", "host3:65535");
check(&H2O_URL_SCHEME_HTTPS, "host3", "host3:65535");
check(&H2O_URL_SCHEME_HTTP, "host3:80", "host3:65535");
check(&H2O_URL_SCHEME_HTTPS, "host3:80", "default:65535");
check(&H2O_URL_SCHEME_HTTP, "host3:443", "default:65535");
check(&H2O_URL_SCHEME_HTTPS, "host3:443", "host3:65535");
/* upper-case */
check(&H2O_URL_SCHEME_HTTP, "HoST1", "host1:80");
check(&H2O_URL_SCHEME_HTTP, "HoST1:80", "host1:80");
check(&H2O_URL_SCHEME_HTTPS, "HoST1", "host1:443");
check(&H2O_URL_SCHEME_HTTPS, "HoST1:443", "host1:443");
h2o_context_dispose(&ctx);
h2o_config_dispose(&globalconf);
}
开发者ID:4Second2None,项目名称:h2o,代码行数:51,代码来源:293.c
示例12: on_req
static int on_req(h2o_handler_t *_self, h2o_req_t *req)
{
h2o_redirect_handler_t *self = (void *)_self;
/* build the URL */
h2o_iovec_t path =
h2o_iovec_init(req->path_normalized.base + req->pathconf->path.len, req->path_normalized.len - req->pathconf->path.len);
h2o_iovec_t query = req->query_at != SIZE_MAX ? h2o_iovec_init(req->path.base + req->query_at, req->path.len - req->query_at)
: h2o_iovec_init(H2O_STRLIT(""));
h2o_iovec_t dest = h2o_concat(&req->pool, self->prefix, path, query);
if (self->internal) {
redirect_internally(self, req, dest);
} else {
h2o_send_redirect(req, self->status, "Redirected", dest.base, dest.len);
}
return 0;
}
开发者ID:LearningSystems,项目名称:h2o,代码行数:19,代码来源:redirect.c
示例13: main
int main(int argc, char **argv)
{
h2o_hostconf_t *hostconf;
h2o_pathconf_t *pathconf;
h2o_config_init(&config);
hostconf = h2o_config_register_host(&config, h2o_iovec_init(H2O_STRLIT("default")), 65535);
pathconf = h2o_config_register_path(hostconf, "/", 0);
h2o_create_handler(pathconf, sizeof(h2o_handler_t))->on_req = on_req;
#if H2O_USE_LIBUV
uv_loop_t loop;
uv_loop_init(&loop);
h2o_context_init(&ctx, &loop, &config);
#else
h2o_context_init(&ctx, h2o_evloop_create(), &config);
#endif
/* disabled by default: uncomment the block below to use HTTPS instead of HTTP */
/*
if (setup_ssl("server.crt", "server.key") != 0)
goto Error;
*/
accept_ctx.ctx = &ctx;
accept_ctx.hosts = config.hosts;
if (create_listener() != 0) {
fprintf(stderr, "failed to listen to 127.0.0.1:7890:%s\n", strerror(errno));
goto Error;
}
#if H2O_USE_LIBUV
uv_run(ctx.loop, UV_RUN_DEFAULT);
#else
while (h2o_evloop_run(ctx.loop, INT32_MAX) == 0)
;
#endif
Error:
return 1;
}
开发者ID:fetus-hina,项目名称:h2o,代码行数:42,代码来源:websocket.c
示例14: h2o_set_header_token
ssize_t h2o_set_header_token(h2o_mem_pool_t *pool, h2o_headers_t *headers, const h2o_token_t *token, const char *value,
size_t value_len)
{
size_t found = -1;
size_t i;
for (i = 0; i != headers->size; ++i) {
if (headers->entries[i].name == &token->buf) {
if (h2o_contains_token(headers->entries[i].value.base, headers->entries[i].value.len, value, value_len, ','))
return -1;
found = i;
}
}
if (found != -1) {
h2o_header_t *dest = headers->entries + found;
dest->value = h2o_concat(pool, dest->value, h2o_iovec_init(H2O_STRLIT(", ")), h2o_iovec_init(value, value_len));
return found;
} else {
return h2o_add_header(pool, headers, token, NULL, value, value_len);
}
}
开发者ID:devnexen,项目名称:h2o,代码行数:20,代码来源:headers.c
示例15: h2o_mem_alloc_shared
static struct rp_generator_t *proxy_send_prepare(h2o_req_t *req, int keepalive)
{
struct rp_generator_t *self = h2o_mem_alloc_shared(&req->pool, sizeof(*self), on_generator_dispose);
h2o_http1client_ctx_t *client_ctx = get_client_ctx(req);
self->super.proceed = do_proceed;
self->super.stop = do_close;
self->src_req = req;
if (client_ctx->websocket_timeout != NULL && h2o_lcstris(req->upgrade.base, req->upgrade.len, H2O_STRLIT("websocket"))) {
self->is_websocket_handshake = 1;
} else {
self->is_websocket_handshake = 0;
}
self->up_req.bufs[0] = build_request(req, keepalive, self->is_websocket_handshake);
self->up_req.bufs[1] = req->entity;
self->up_req.is_head = h2o_memis(req->method.base, req->method.len, H2O_STRLIT("HEAD"));
h2o_buffer_init(&self->last_content_before_send, &h2o_socket_buffer_prototype);
h2o_doublebuffer_init(&self->sending, &h2o_socket_buffer_prototype);
return self;
}
开发者ID:firewood,项目名称:h2o,代码行数:21,代码来源:proxy.c
示例16: send_chunk
static void send_chunk(h2o_ostream_t *_self, h2o_req_t *req, h2o_buf_t *inbufs, size_t inbufcnt, int is_final)
{
struct rproxy_t *self = (void*)_self;
const char *host, *path;
uint16_t port;
/* throw away all data */
if (! is_final) {
h2o_ostream_send_next(&self->super, req, NULL, 0, 0);
return;
}
/* end of the original stream, start retreiving the data from the reproxy-url */
if (! parse_url(&req->pool, self->reproxy_url, &host, &port, &path)) {
host = NULL;
path = NULL;
port = 0;
}
/* NOT IMPLEMENTED!!! */
h2o_buf_t body = h2o_sprintf(
&req->pool,
"reproxy request to URL: %s\n"
" host: %s\n"
" port: %u\n"
" path: %s\n",
self->reproxy_url,
host,
(int)port,
path);
req->res.status = 200;
req->res.reason = "Internal Server Error";
req->res.content_length = SIZE_MAX;
h2o_set_header(&req->pool, &req->res.headers, H2O_TOKEN_CONTENT_TYPE, H2O_STRLIT("text/plain; charset=utf-8"), 1);
h2o_setup_next_ostream(self->filter, req, &self->super.next);
assert(is_final);
h2o_ostream_send_next(&self->super, req, &body, 1, is_final);
}
开发者ID:Gwill,项目名称:h2o,代码行数:40,代码来源:rproxy.c
示例17: test_aton
static void test_aton(void)
{
struct in_addr addr;
memset(&addr, 0x55, sizeof(addr));
#ifndef _MSC_VER
ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("127.0.0.1")}, &addr) == 0);
#else
ok(h2o_hostinfo_aton((h2o_iovec_t) { H2O_MY_STRLIT("127.0.0.1") }, &addr) == 0);
#endif
ok(ntohl(addr.s_addr) == 0x7f000001);
memset(&addr, 0x55, sizeof(addr));
#ifndef _MSC_VER
ok(h2o_hostinfo_aton((h2o_iovec_t){"127.0.0.12", sizeof("127.0.0.1") - 1}, &addr) == 0);
#else
ok(h2o_hostinfo_aton((h2o_iovec_t) { sizeof("127.0.0.1") - 1 , "127.0.0.12" }, &addr) == 0);
#endif
ok(ntohl(addr.s_addr) == 0x7f000001);
memset(&addr, 0x55, sizeof(addr));
#ifndef _MSC_VER
ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("255.001.002.128")}, &addr) == 0);
#else
ok(h2o_hostinfo_aton((h2o_iovec_t) { H2O_MY_STRLIT("255.001.002.128") }, &addr) == 0);
#endif
ok(ntohl(addr.s_addr) == 0xff010280);
#ifndef _MSC_VER
ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("127.0.0.z")}, &addr) != 0);
ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("256.0.0.0")}, &addr) != 0);
ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("0001.0.0.0")}, &addr) != 0);
ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("0.0..1")}, &addr) != 0);
ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("1.0.0.0.")}, &addr) != 0);
#else
ok(h2o_hostinfo_aton((h2o_iovec_t) { H2O_MY_STRLIT("127.0.0.z") }, &addr) != 0);
ok(h2o_hostinfo_aton((h2o_iovec_t) { H2O_MY_STRLIT("256.0.0.0") }, &addr) != 0);
ok(h2o_hostinfo_aton((h2o_iovec_t) { H2O_MY_STRLIT("0001.0.0.0") }, &addr) != 0);
ok(h2o_hostinfo_aton((h2o_iovec_t) { H2O_MY_STRLIT("0.0..1") }, &addr) != 0);
ok(h2o_hostinfo_aton((h2o_iovec_t) { H2O_MY_STRLIT("1.0.0.0.") }, &addr) != 0);
#endif
}
开发者ID:LakhanRathi92,项目名称:h2o,代码行数:42,代码来源:hostinfo.c
示例18: h2o_config_init
void h2o_config_init(h2o_globalconf_t *config)
{
memset(config, 0, sizeof(*config));
config->hosts = h2o_mem_alloc(sizeof(config->hosts[0]));
config->hosts[0] = NULL;
h2o_linklist_init_anchor(&config->configurators);
config->server_name = h2o_iovec_init(H2O_STRLIT("h2o/" H2O_VERSION));
config->max_request_entity_size = H2O_DEFAULT_MAX_REQUEST_ENTITY_SIZE;
config->max_delegations = H2O_DEFAULT_MAX_DELEGATIONS;
config->handshake_timeout = H2O_DEFAULT_HANDSHAKE_TIMEOUT;
config->http1.req_timeout = H2O_DEFAULT_HTTP1_REQ_TIMEOUT;
config->http1.upgrade_to_http2 = H2O_DEFAULT_HTTP1_UPGRADE_TO_HTTP2;
config->http1.callbacks = H2O_HTTP1_CALLBACKS;
config->http2.idle_timeout = H2O_DEFAULT_HTTP2_IDLE_TIMEOUT;
config->proxy.io_timeout = H2O_DEFAULT_PROXY_IO_TIMEOUT;
config->http2.max_concurrent_requests_per_connection = H2O_HTTP2_SETTINGS_HOST.max_concurrent_streams;
config->http2.max_streams_for_priority = 16;
config->http2.callbacks = H2O_HTTP2_CALLBACKS;
config->mimemap = h2o_mimemap_create();
h2o_configurator__init_core(config);
}
开发者ID:tidatida,项目名称:h2o,代码行数:22,代码来源:config.c
示例19: test_decode
static void test_decode(void)
{
h2o_cache_digests_t *digests = NULL;
h2o_cache_digests_load_header(&digests, H2O_STRLIT("AeLA"));
ok(digests != NULL);
if (digests == NULL)
return;
ok(digests->fresh.url_only.size == 1);
ok(digests->fresh.url_and_etag.size == 0);
ok(digests->fresh.url_only.entries[0].capacity_bits == 7);
ok(digests->fresh.url_only.entries[0].keys.size == 1);
ok(digests->fresh.url_only.entries[0].keys.entries[0] == 0x0b);
ok(!digests->fresh.complete);
ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/cache-digests.cgi/hello.js")) ==
H2O_CACHE_DIGESTS_STATE_FRESH);
ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/notfound.js")) ==
H2O_CACHE_DIGESTS_STATE_UNKNOWN);
h2o_cache_digests_load_header(&digests, H2O_STRLIT("FOO; stale, AcA; validators; complete"));
ok(digests->fresh.url_only.size == 1);
ok(digests->fresh.url_and_etag.size == 1);
ok(digests->fresh.url_and_etag.entries[0].capacity_bits == 7);
ok(digests->fresh.url_and_etag.entries[0].keys.size == 0);
ok(digests->fresh.complete);
ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/notfound.js")) ==
H2O_CACHE_DIGESTS_STATE_NOT_CACHED);
ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/cache-digests.cgi/hello.js")) ==
H2O_CACHE_DIGESTS_STATE_FRESH);
h2o_cache_digests_load_header(&digests, H2O_STRLIT("AcA; reset"));
ok(digests->fresh.url_only.size == 1);
ok(digests->fresh.url_and_etag.size == 0);
ok(digests->fresh.url_only.entries[0].capacity_bits == 7);
ok(digests->fresh.url_only.entries[0].keys.size == 0);
ok(!digests->fresh.complete);
h2o_cache_digests_destroy(digests);
}
开发者ID:ConfusedReality,项目名称:h2o,代码行数:41,代码来源:cache_digests.c
示例20: rewrite_location
static h2o_iovec_t rewrite_location(h2o_mem_pool_t *pool, const char *location, size_t location_len, h2o_url_t *match,
const h2o_url_scheme_t *req_scheme, h2o_iovec_t req_authority, h2o_iovec_t req_basepath)
{
h2o_url_t loc_parsed;
if (h2o_url_parse(location, location_len, &loc_parsed) != 0)
goto NoRewrite;
if (loc_parsed.scheme != &H2O_URL_SCHEME_HTTP)
goto NoRewrite;
if (!h2o_lcstris(loc_parsed.host.base, loc_parsed.host.len, match->host.base, match->host.len))
goto NoRewrite;
if (h2o_url_get_port(&loc_parsed) != h2o_url_get_port(match))
goto NoRewrite;
if (loc_parsed.path.len < match->path.len)
goto NoRewrite;
if (memcmp(loc_parsed.path.base, match->path.base, match->path.len) != 0)
goto NoRewrite;
return h2o_concat(pool, req_scheme->name, h2o_iovec_init(H2O_STRLIT("://")), req_authority, req_basepath,
h2o_iovec_init(loc_parsed.path.base + match->path.len, loc_parsed.path.len - match->path.len));
NoRewrite:
return (h2o_iovec_t){};
}
开发者ID:firewood,项目名称:h2o,代码行数:24,代码来源:proxy.c
注:本文中的H2O_STRLIT函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论