nghttpx: Share ev_token_bucket_cfg across ClientHandlers
This commit is contained in:
parent
cbef6fd0c6
commit
0f75997839
|
@ -400,6 +400,10 @@ void fill_default_config()
|
||||||
mod_config()->downstream_http_proxy_host = 0;
|
mod_config()->downstream_http_proxy_host = 0;
|
||||||
mod_config()->downstream_http_proxy_port = 0;
|
mod_config()->downstream_http_proxy_port = 0;
|
||||||
mod_config()->downstream_http_proxy_addrlen = 0;
|
mod_config()->downstream_http_proxy_addrlen = 0;
|
||||||
|
mod_config()->rate_limit_cfg =
|
||||||
|
ev_token_bucket_cfg_new(1024*1024, 4*1024*1024,
|
||||||
|
EV_RATE_LIMIT_MAX, EV_RATE_LIMIT_MAX,
|
||||||
|
nullptr);
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
|
|
@ -212,10 +212,6 @@ void upstream_http1_connhd_readcb(bufferevent *bev, void *arg)
|
||||||
ClientHandler::ClientHandler(bufferevent *bev, int fd, SSL *ssl,
|
ClientHandler::ClientHandler(bufferevent *bev, int fd, SSL *ssl,
|
||||||
const char *ipaddr)
|
const char *ipaddr)
|
||||||
: bev_(bev),
|
: bev_(bev),
|
||||||
evbucket_cfg_(ev_token_bucket_cfg_new(1024*1024, 4*1024*1024,
|
|
||||||
EV_RATE_LIMIT_MAX,
|
|
||||||
EV_RATE_LIMIT_MAX,
|
|
||||||
nullptr)),
|
|
||||||
fd_(fd),
|
fd_(fd),
|
||||||
ssl_(ssl),
|
ssl_(ssl),
|
||||||
upstream_(nullptr),
|
upstream_(nullptr),
|
||||||
|
@ -224,7 +220,7 @@ ClientHandler::ClientHandler(bufferevent *bev, int fd, SSL *ssl,
|
||||||
spdy_(nullptr),
|
spdy_(nullptr),
|
||||||
left_connhd_len_(NGHTTP2_CLIENT_CONNECTION_HEADER_LEN)
|
left_connhd_len_(NGHTTP2_CLIENT_CONNECTION_HEADER_LEN)
|
||||||
{
|
{
|
||||||
bufferevent_set_rate_limit(bev_, evbucket_cfg_);
|
bufferevent_set_rate_limit(bev_, get_config()->rate_limit_cfg);
|
||||||
bufferevent_enable(bev_, EV_READ | EV_WRITE);
|
bufferevent_enable(bev_, EV_READ | EV_WRITE);
|
||||||
bufferevent_setwatermark(bev_, EV_READ, 0, SHRPX_READ_WARTER_MARK);
|
bufferevent_setwatermark(bev_, EV_READ, 0, SHRPX_READ_WARTER_MARK);
|
||||||
set_upstream_timeouts(&get_config()->upstream_read_timeout,
|
set_upstream_timeouts(&get_config()->upstream_read_timeout,
|
||||||
|
@ -250,7 +246,6 @@ ClientHandler::~ClientHandler()
|
||||||
}
|
}
|
||||||
bufferevent_disable(bev_, EV_READ | EV_WRITE);
|
bufferevent_disable(bev_, EV_READ | EV_WRITE);
|
||||||
bufferevent_free(bev_);
|
bufferevent_free(bev_);
|
||||||
ev_token_bucket_cfg_free(evbucket_cfg_);
|
|
||||||
if(ssl_) {
|
if(ssl_) {
|
||||||
SSL_free(ssl_);
|
SSL_free(ssl_);
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,7 +76,6 @@ public:
|
||||||
bool get_http2_upgrade_allowed() const;
|
bool get_http2_upgrade_allowed() const;
|
||||||
private:
|
private:
|
||||||
bufferevent *bev_;
|
bufferevent *bev_;
|
||||||
ev_token_bucket_cfg *evbucket_cfg_;
|
|
||||||
int fd_;
|
int fd_;
|
||||||
SSL *ssl_;
|
SSL *ssl_;
|
||||||
Upstream *upstream_;
|
Upstream *upstream_;
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <event.h>
|
||||||
#include <openssl/ssl.h>
|
#include <openssl/ssl.h>
|
||||||
|
|
||||||
namespace shrpx {
|
namespace shrpx {
|
||||||
|
@ -167,6 +168,8 @@ struct Config {
|
||||||
sockaddr_union downstream_http_proxy_addr;
|
sockaddr_union downstream_http_proxy_addr;
|
||||||
// actual size of downstream_http_proxy_addr
|
// actual size of downstream_http_proxy_addr
|
||||||
size_t downstream_http_proxy_addrlen;
|
size_t downstream_http_proxy_addrlen;
|
||||||
|
// Rate limit configuration
|
||||||
|
ev_token_bucket_cfg *rate_limit_cfg;
|
||||||
};
|
};
|
||||||
|
|
||||||
const Config* get_config();
|
const Config* get_config();
|
||||||
|
|
Loading…
Reference in New Issue