bug fixed: check_task process correctly
parent
68079fc468
commit
b16526e8f7
|
|
@ -678,6 +678,7 @@ int sf_load_context_from_config_ex(SFContext *sf_context,
|
||||||
int inner_port;
|
int inner_port;
|
||||||
int outer_port;
|
int outer_port;
|
||||||
int port;
|
int port;
|
||||||
|
bool global_use_send_zc;
|
||||||
bool use_send_zc;
|
bool use_send_zc;
|
||||||
int i;
|
int i;
|
||||||
int result;
|
int result;
|
||||||
|
|
@ -715,8 +716,15 @@ int sf_load_context_from_config_ex(SFContext *sf_context,
|
||||||
outer_port = config->default_outer_port;
|
outer_port = config->default_outer_port;
|
||||||
}
|
}
|
||||||
|
|
||||||
use_send_zc = iniGetBoolValue(config->ini_ctx.section_name,
|
global_use_send_zc = iniGetBoolValue(NULL, "use_send_zc",
|
||||||
"use_send_zc", config->ini_ctx.context, false);
|
config->ini_ctx.context, false);
|
||||||
|
if (config->ini_ctx.section_name == NULL) {
|
||||||
|
use_send_zc = global_use_send_zc;
|
||||||
|
} else {
|
||||||
|
use_send_zc = iniGetBoolValue(config->ini_ctx.section_name,
|
||||||
|
"use_send_zc", config->ini_ctx.context, global_use_send_zc);
|
||||||
|
}
|
||||||
|
|
||||||
for (i=0; i<SF_ADDRESS_FAMILY_COUNT; i++) {
|
for (i=0; i<SF_ADDRESS_FAMILY_COUNT; i++) {
|
||||||
fh = sf_context->handlers + i;
|
fh = sf_context->handlers + i;
|
||||||
fh->ctx = sf_context;
|
fh->ctx = sf_context;
|
||||||
|
|
@ -899,6 +907,29 @@ static const char *get_address_family_caption(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void get_io_uring_configs(const SFContext *sf_context,
|
||||||
|
bool *use_io_uring, bool *use_send_zc)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
const SFAddressFamilyHandler *fh;
|
||||||
|
const SFNetworkHandler *handler;
|
||||||
|
const SFNetworkHandler *end;
|
||||||
|
|
||||||
|
*use_io_uring = false;
|
||||||
|
*use_send_zc = false;
|
||||||
|
for (i=0; i<SF_ADDRESS_FAMILY_COUNT; i++) {
|
||||||
|
fh = sf_context->handlers + i;
|
||||||
|
end = fh->handlers + SF_NETWORK_HANDLER_COUNT;
|
||||||
|
for (handler=fh->handlers; handler<end; handler++) {
|
||||||
|
if (handler->enabled && handler->use_io_uring) {
|
||||||
|
*use_io_uring = true;
|
||||||
|
*use_send_zc = handler->use_send_zc;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void sf_context_config_to_string(const SFContext *sf_context,
|
void sf_context_config_to_string(const SFContext *sf_context,
|
||||||
char *output, const int size)
|
char *output, const int size)
|
||||||
{
|
{
|
||||||
|
|
@ -908,6 +939,10 @@ void sf_context_config_to_string(const SFContext *sf_context,
|
||||||
char outer_bind_addr[2 * IP_ADDRESS_SIZE + 2];
|
char outer_bind_addr[2 * IP_ADDRESS_SIZE + 2];
|
||||||
int i;
|
int i;
|
||||||
int len;
|
int len;
|
||||||
|
#if IOEVENT_USE_URING
|
||||||
|
bool use_io_uring;
|
||||||
|
bool use_send_zc;
|
||||||
|
#endif
|
||||||
|
|
||||||
*inner_bind_addr = '\0';
|
*inner_bind_addr = '\0';
|
||||||
*outer_bind_addr = '\0';
|
*outer_bind_addr = '\0';
|
||||||
|
|
@ -948,6 +983,12 @@ void sf_context_config_to_string(const SFContext *sf_context,
|
||||||
", address_family=%s, accept_threads=%d, work_threads=%d",
|
", address_family=%s, accept_threads=%d, work_threads=%d",
|
||||||
get_address_family_caption(sf_context->address_family),
|
get_address_family_caption(sf_context->address_family),
|
||||||
sf_context->accept_threads, sf_context->work_threads);
|
sf_context->accept_threads, sf_context->work_threads);
|
||||||
|
|
||||||
|
#if IOEVENT_USE_URING
|
||||||
|
get_io_uring_configs(sf_context, &use_io_uring, &use_send_zc);
|
||||||
|
len += snprintf(output + len, size - len, ", use_io_uring=%d"
|
||||||
|
", use_send_zc=%d", use_io_uring, use_send_zc);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void sf_log_config_to_string_ex(SFLogConfig *log_cfg, const char *caption,
|
void sf_log_config_to_string_ex(SFLogConfig *log_cfg, const char *caption,
|
||||||
|
|
@ -998,12 +1039,8 @@ void sf_global_config_to_string_ex(const char *max_pkg_size_item_nm,
|
||||||
int min_buff_size;
|
int min_buff_size;
|
||||||
int max_buff_size;
|
int max_buff_size;
|
||||||
#if IOEVENT_USE_URING
|
#if IOEVENT_USE_URING
|
||||||
int i;
|
|
||||||
bool use_io_uring;
|
bool use_io_uring;
|
||||||
bool use_send_zc;
|
bool use_send_zc;
|
||||||
SFAddressFamilyHandler *fh;
|
|
||||||
SFNetworkHandler *handler;
|
|
||||||
SFNetworkHandler *end;
|
|
||||||
#endif
|
#endif
|
||||||
char pkg_buff[256];
|
char pkg_buff[256];
|
||||||
|
|
||||||
|
|
@ -1024,22 +1061,6 @@ void sf_global_config_to_string_ex(const char *max_pkg_size_item_nm,
|
||||||
min_buff_size / 1024, max_buff_size / 1024);
|
min_buff_size / 1024, max_buff_size / 1024);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if IOEVENT_USE_URING
|
|
||||||
use_io_uring = false;
|
|
||||||
use_send_zc = false;
|
|
||||||
for (i=0; i<SF_ADDRESS_FAMILY_COUNT; i++) {
|
|
||||||
fh = g_sf_context.handlers + i;
|
|
||||||
end = fh->handlers + SF_NETWORK_HANDLER_COUNT;
|
|
||||||
for (handler=fh->handlers; handler<end; handler++) {
|
|
||||||
if (handler->enabled && handler->use_io_uring) {
|
|
||||||
use_io_uring = true;
|
|
||||||
use_send_zc = handler->use_send_zc;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
len = snprintf(output, size,
|
len = snprintf(output, size,
|
||||||
"base_path=%s, max_connections=%d, connect_timeout=%d, "
|
"base_path=%s, max_connections=%d, connect_timeout=%d, "
|
||||||
"network_timeout=%d, thread_stack_size=%d KB, %s, ",
|
"network_timeout=%d, thread_stack_size=%d KB, %s, ",
|
||||||
|
|
@ -1050,6 +1071,7 @@ void sf_global_config_to_string_ex(const char *max_pkg_size_item_nm,
|
||||||
g_sf_global_vars.thread_stack_size / 1024, pkg_buff);
|
g_sf_global_vars.thread_stack_size / 1024, pkg_buff);
|
||||||
|
|
||||||
#if IOEVENT_USE_URING
|
#if IOEVENT_USE_URING
|
||||||
|
get_io_uring_configs(&g_sf_context, &use_io_uring, &use_send_zc);
|
||||||
len += snprintf(output + len, size - len,
|
len += snprintf(output + len, size - len,
|
||||||
"use_io_uring=%d, use_send_zc=%d, ",
|
"use_io_uring=%d, use_send_zc=%d, ",
|
||||||
use_io_uring, use_send_zc);
|
use_io_uring, use_send_zc);
|
||||||
|
|
|
||||||
12
src/sf_nio.c
12
src/sf_nio.c
|
|
@ -694,6 +694,18 @@ static inline int check_task(struct fast_task_info *task,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if IOEVENT_USE_URING
|
||||||
|
if (task->handler->use_io_uring) {
|
||||||
|
logWarning("file: "__FILE__", line: %d, "
|
||||||
|
"client ip: %s, event: %d, expect stage: %d, "
|
||||||
|
"but current stage: %d, close connection",
|
||||||
|
__LINE__, task->client_ip, event,
|
||||||
|
expect_stage, task->nio_stages.current);
|
||||||
|
ioevent_add_to_deleted_list(task);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (task->handler->comm_type == fc_comm_type_sock) {
|
if (task->handler->comm_type == fc_comm_type_sock) {
|
||||||
if (tcp_socket_connected(task->event.fd)) {
|
if (tcp_socket_connected(task->event.fd)) {
|
||||||
return EAGAIN;
|
return EAGAIN;
|
||||||
|
|
|
||||||
|
|
@ -200,9 +200,9 @@ int sf_service_init_ex2(SFContext *sf_context, const char *name,
|
||||||
thread_data->arg = NULL;
|
thread_data->arg = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ioevent_init(&thread_data->ev_puller, 2 + sf_context->
|
if (ioevent_init(&thread_data->ev_puller, sf_context->name,
|
||||||
net_buffer_cfg.max_connections, net_timeout_ms,
|
2 + sf_context->net_buffer_cfg.max_connections,
|
||||||
extra_events) != 0)
|
net_timeout_ms, extra_events) != 0)
|
||||||
{
|
{
|
||||||
result = errno != 0 ? errno : ENOMEM;
|
result = errno != 0 ? errno : ENOMEM;
|
||||||
logError("file: "__FILE__", line: %d, "
|
logError("file: "__FILE__", line: %d, "
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue