增加proxy初始化fieldstat,增加sslstream的状态统计输出。

This commit is contained in:
zhengchao
2018-10-05 13:31:10 +08:00
parent 443404ce89
commit 7fd3f5d1fb
6 changed files with 61 additions and 26 deletions

View File

@@ -51,10 +51,14 @@ enum ssl_stream_stat
{
SSL_UP_NUM,
SSL_UP_ERR,
SSL_UP_CLOSING,
SSL_UP_DIRTY_CLOSED,
SSL_UP_CLOSED,
SSL_DOWN_NUM,
SSL_DOWN_ERR,
SSL_DOWN_CLOSING,
SSL_DOWN_CLOSED,
SSL_DOWN_DIRTY_CLOSED,
SSL_NO_CHELLO,
SSL_NO_SNI,
SSL_FAKE_CRT,
@@ -93,7 +97,7 @@ struct ssl_mgr
struct event * gcev;
void * logger;
screen_stat_handle_t* fs_handle;
screen_stat_handle_t fs_handle;
long long stat_val[SSL_STAT_MAX];
int fs_id[SSL_STAT_MAX];
};
@@ -174,16 +178,21 @@ struct fs_spec
void ssl_stat_init(struct ssl_mgr * mgr)
{
int i=0;
const char* spec[SSL_STAT_MAX]= {
[SSL_UP_NUM]="ssl_up",
[SSL_UP_ERR]="ssl_up_err",
[SSL_UP_CLOSED]="ssl_up_close",
[SSL_DOWN_NUM]="ssl_down",
[SSL_DOWN_ERR]="ssl_down_err",
[SSL_DOWN_CLOSED]="ssl_down_close",
[SSL_NO_CHELLO]="ssl_no_chello",
[SSL_NO_SNI]="ssl_no_sni",
[SSL_FAKE_CRT]="ssl_fake_crt"};
const char* spec[SSL_STAT_MAX];
spec[SSL_UP_NUM]="ssl_up";
spec[SSL_UP_ERR]="sslu_err";
spec[SSL_UP_CLOSING]="sslu_clsing";
spec[SSL_UP_CLOSED]="sslu_clsd";
spec[SSL_UP_DIRTY_CLOSED]="sslu_dirty_cls";
spec[SSL_DOWN_NUM]="ssl_down";
spec[SSL_DOWN_ERR]="ssld_err";
spec[SSL_DOWN_CLOSING]="ssld_clsing";
spec[SSL_DOWN_DIRTY_CLOSED]="ssld_dirty_cls";
spec[SSL_DOWN_CLOSED]="ssld_clsd";
spec[SSL_NO_CHELLO]="ssl_no_chlo";
spec[SSL_NO_SNI]="ssl_no_sni";
spec[SSL_FAKE_CRT]="ssl_fk_crt";
for(i=0;i<SSL_STAT_MAX;i++)
{
mgr->fs_id[i]=FS_register(mgr->fs_handle, FS_STYLE_STATUS, FS_CALC_CURRENT,spec[i]);
@@ -328,7 +337,6 @@ ssl_stream_gc_cb(evutil_socket_t fd, short what, void * arg)
{
struct ssl_mgr *mgr=(struct ssl_mgr *)arg;
int i=0;
return;
for(i=0;i<SSL_STAT_MAX;i++)
{
FS_operate(mgr->fs_handle, i, 0, FS_OP_SET, ATOMIC_READ(&(mgr->stat_val[i])));
@@ -337,7 +345,7 @@ ssl_stream_gc_cb(evutil_socket_t fd, short what, void * arg)
}
struct ssl_mgr * ssl_manager_init(const char * ini_profile, const char * section,
struct event_base * ev_base_gc, void * logger, screen_stat_handle_t * fs)
struct event_base * ev_base_gc, void * logger, screen_stat_handle_t fs)
{
struct timeval gc_delay = {0, 500*1000}; //Microseconds, we set 500 miliseconds here.
struct ssl_mgr * mgr = ALLOC(struct ssl_mgr, 1);
@@ -416,8 +424,8 @@ struct ssl_mgr * ssl_manager_init(const char * ini_profile, const char * section
}
memcpy(mgr->ssl_session_context, "mesa-tfe", sizeof(mgr->ssl_session_context));
//ssl_stat_init(mgr);
mgr->fs_handle=fs;
ssl_stat_init(mgr);
mgr->gcev = event_new(mgr->ev_base_gc, -1, EV_PERSIST, ssl_stream_gc_cb, mgr);
if (!mgr->gcev)
@@ -1243,6 +1251,7 @@ static void pxy_ssl_shutdown_cb(evutil_socket_t fd, short what, void * arg)
struct timeval retry_delay = {0, 100};
void * logger = ctx->s_stream->mgr->logger;
struct ssl_mgr* mgr=ctx->s_stream->mgr;
short want = 0;
int rv = 0, sslerr = 0;
char tmp[1024];
@@ -1299,6 +1308,14 @@ retry:
addr_string, fd);
tfe_stream_addr_free(addr);
free(addr_string);
if(ctx->s_stream->dir==CONN_DIR_DOWNSTREAM)
{
ATOMIC_INC(&(mgr->stat_val[SSL_DOWN_DIRTY_CLOSED]));
}
else
{
ATOMIC_INC(&(mgr->stat_val[SSL_UP_DIRTY_CLOSED]));
}
goto complete;
}
@@ -1317,12 +1334,15 @@ retry:
complete:
if(ctx->s_stream->dir==CONN_DIR_DOWNSTREAM)
{
ATOMIC_INC(&(ctx->s_stream->mgr->stat_val[SSL_DOWN_CLOSED]));
ATOMIC_INC(&(mgr->stat_val[SSL_DOWN_CLOSED]));
ATOMIC_DEC(&(mgr->stat_val[SSL_DOWN_CLOSING]));
}
else
{
ATOMIC_INC(&(ctx->s_stream->mgr->stat_val[SSL_UP_CLOSED]));
ATOMIC_INC(&(mgr->stat_val[SSL_UP_CLOSED]));
ATOMIC_DEC(&(mgr->stat_val[SSL_UP_CLOSING]));
}
ssl_stream_free(ctx->s_stream);
evutil_closesocket(fd);
ssl_shutdown_ctx_free(ctx);
@@ -1339,5 +1359,7 @@ void ssl_stream_free_and_close_fd(struct ssl_stream * s_stream, struct event_bas
struct ssl_shutdown_ctx * sslshutctx = NULL;
assert(fd==s_stream->_do_not_use.fd);
sslshutctx = ssl_shutdown_ctx_new(s_stream, evbase);
s_stream->dir==CONN_DIR_DOWNSTREAM ? ATOMIC_INC(&(s_stream->mgr->stat_val[SSL_DOWN_CLOSING]))
: ATOMIC_INC(&(s_stream->mgr->stat_val[SSL_UP_CLOSING]));
pxy_ssl_shutdown_cb(fd, 0, sslshutctx);
}