#39 增加SSL downstream, upstream的错误处理功能,修正writecb中up,downstream变量赋值颠倒的错误

This commit is contained in:
Lu Qiuwen
2018-10-19 21:06:08 +08:00
parent 213924e77e
commit b40f599579

View File

@@ -530,15 +530,15 @@ static void __stream_bev_writecb(struct bufferevent * bev, void * arg)
if (__bev_dir(_stream, bev) == CONN_DIR_UPSTREAM)
{
ref_this_conn = &_stream->conn_upstream;
ref_this_ssl_stream = &_stream->ssl_upstream;
ref_peer_conn = &_stream->conn_downstream;
ref_this_ssl_stream = &_stream->ssl_downstream;
}
if (__bev_dir(_stream, bev) == CONN_DIR_DOWNSTREAM)
{
ref_this_conn = &_stream->conn_downstream;
ref_peer_conn = &_stream->conn_upstream;
ref_this_ssl_stream = &_stream->ssl_downstream;
ref_peer_conn = &_stream->conn_upstream;
}
struct evbuffer * __output_buffer = bufferevent_get_output(bev);
@@ -719,8 +719,14 @@ void ssl_downstream_create_on_success(future_result_t * result, void * user)
void ssl_downstream_create_on_fail(enum e_future_error err, const char * what, void * user)
{
fprintf(stderr, "---- downstream create fail !!!\n");
return;
struct tfe_stream_private * _stream = (struct tfe_stream_private *)user;
assert(_stream != NULL && _stream->session_type == STREAM_PROTO_SSL);
TFE_STREAM_LOG_ERROR(_stream, "Failed to create SSL downstream, close the connection : %s. ", what);
/* There is nothing we can do because upstream has been handshake,
* Close the stream */
tfe_stream_destory(_stream);
}
void ssl_upstream_create_on_success(future_result_t * result, void * user)
@@ -736,6 +742,9 @@ void ssl_upstream_create_on_success(future_result_t * result, void * user)
_stream->conn_upstream = __conn_private_create_by_bev(_stream, bev);
_stream->ssl_upstream = upstream;
assert(_stream->conn_upstream != NULL);
assert(_stream->ssl_upstream != NULL);
future_destroy(_stream->future_upstream_create);
_stream->future_upstream_create = NULL;
_stream->defer_fd_upstream = 0;
@@ -750,8 +759,21 @@ void ssl_upstream_create_on_success(future_result_t * result, void * user)
void ssl_upstream_create_on_fail(enum e_future_error err, const char * what, void * user)
{
fprintf(stderr, "---- upstream create fail !!!\n");
return;
struct tfe_stream_private * _stream = (struct tfe_stream_private *)user;
assert(_stream != NULL && _stream->session_type == STREAM_PROTO_SSL);
TFE_STREAM_LOG_ERROR(_stream, "Failed to create SSL upstream, pass-through the connection : %s. ", what);
_stream->conn_downstream = __conn_private_create_by_fd(_stream, _stream->defer_fd_downstream);
_stream->conn_upstream = __conn_private_create_by_fd(_stream, _stream->defer_fd_downstream);
assert(_stream->conn_downstream != NULL);
assert(_stream->conn_upstream != NULL);
_stream->defer_fd_downstream = 0;
_stream->defer_fd_upstream = 0;
__conn_private_enable(_stream->conn_downstream);
__conn_private_enable(_stream->conn_upstream);
}
struct tfe_stream * tfe_stream_create(struct tfe_proxy * pxy, struct tfe_thread_ctx * thread_ctx)
@@ -985,8 +1007,7 @@ int tfe_stream_init_by_fds(struct tfe_stream * stream, evutil_socket_t fd_downst
if (unlikely(_stream->head.addr == NULL))
{
TFE_LOG_ERROR(_stream->stream_logger, "Failed to create address from fd %d, %d, terminate fds.",
fd_downstream, fd_upstream);
goto __errout;
fd_downstream, fd_upstream); goto __errout;
}
_stream->str_stream_addr = tfe_stream_addr_to_str(_stream->head.addr);