add function sf_set_body_length
parent
e22400fa1c
commit
b3334d2ad5
|
|
@ -439,6 +439,8 @@ static int load_rdma_apis(SFNetworkHandler *handler)
|
|||
return EFAULT;
|
||||
}
|
||||
|
||||
LOAD_API(handler, get_connection_size);
|
||||
LOAD_API(handler, init_connection);
|
||||
LOAD_API(handler, create_server);
|
||||
LOAD_API(handler, close_server);
|
||||
LOAD_API(handler, accept_connection);
|
||||
|
|
|
|||
19
src/sf_nio.c
19
src/sf_nio.c
|
|
@ -654,24 +654,7 @@ ssize_t sf_socket_recv_data(struct fast_task_info *task, SFCommAction *action)
|
|||
return bytes;
|
||||
}
|
||||
|
||||
if (SF_CTX->set_body_length(task) != 0) {
|
||||
return -1;
|
||||
}
|
||||
if (task->length < 0) {
|
||||
logError("file: "__FILE__", line: %d, "
|
||||
"client ip: %s, pkg length: %d < 0",
|
||||
__LINE__, task->client_ip,
|
||||
task->length);
|
||||
return -1;
|
||||
}
|
||||
|
||||
task->length += SF_CTX->header_size;
|
||||
if (task->length > g_sf_global_vars.max_pkg_size) {
|
||||
logError("file: "__FILE__", line: %d, "
|
||||
"client ip: %s, pkg length: %d > "
|
||||
"max pkg size: %d", __LINE__,
|
||||
task->client_ip, task->length,
|
||||
g_sf_global_vars.max_pkg_size);
|
||||
if (sf_set_body_length(task) != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
|||
26
src/sf_nio.h
26
src/sf_nio.h
|
|
@ -92,6 +92,32 @@ void sf_task_switch_thread(struct fast_task_info *task,
|
|||
|
||||
void sf_task_detach_thread(struct fast_task_info *task);
|
||||
|
||||
static inline int sf_set_body_length(struct fast_task_info *task)
|
||||
{
|
||||
if (SF_CTX->set_body_length(task) != 0) {
|
||||
return -1;
|
||||
}
|
||||
if (task->length < 0) {
|
||||
logError("file: "__FILE__", line: %d, "
|
||||
"client ip: %s, pkg length: %d < 0",
|
||||
__LINE__, task->client_ip,
|
||||
task->length);
|
||||
return -1;
|
||||
}
|
||||
|
||||
task->length += SF_CTX->header_size;
|
||||
if (task->length > g_sf_global_vars.max_pkg_size) {
|
||||
logError("file: "__FILE__", line: %d, "
|
||||
"client ip: %s, pkg length: %d > "
|
||||
"max pkg size: %d", __LINE__,
|
||||
task->client_ip, task->length,
|
||||
g_sf_global_vars.max_pkg_size);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sf_socket_async_connect_server(struct fast_task_info *task);
|
||||
int sf_socket_connect_server_done(struct fast_task_info *task);
|
||||
|
||||
|
|
|
|||
|
|
@ -60,6 +60,9 @@ typedef enum {
|
|||
} SFCommAction;
|
||||
|
||||
struct sf_listener;
|
||||
|
||||
typedef int (*sf_get_connection_size_callback)();
|
||||
typedef int (*sf_init_connection_callback)(struct fast_task_info *task, void *arg);
|
||||
typedef int (*sf_create_server_callback)(struct sf_listener
|
||||
*listener, int af, const char *bind_addr);
|
||||
typedef void (*sf_close_server_callback)(struct sf_listener *listener);
|
||||
|
|
@ -99,6 +102,8 @@ typedef struct sf_network_handler {
|
|||
SFListener outer;
|
||||
|
||||
/* for server side */
|
||||
sf_get_connection_size_callback get_connection_size;
|
||||
sf_init_connection_callback init_connection;
|
||||
sf_create_server_callback create_server;
|
||||
sf_close_server_callback close_server;
|
||||
sf_accept_connection_callback accept_connection;
|
||||
|
|
|
|||
Loading…
Reference in New Issue