Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
cellframe-sdk
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Code
Merge requests
17
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
cellframe
cellframe-sdk
Commits
e1da18b0
Commit
e1da18b0
authored
4 years ago
by
Dmitriy A. Gerasimov
Browse files
Options
Downloads
Patches
Plain Diff
Upd
parent
907a0c83
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#7129
passed with stage
in 11 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
CMakeLists.txt
+1
-1
1 addition, 1 deletion
CMakeLists.txt
dap-sdk/net/client/dap_client_pvt.c
+48
-21
48 additions, 21 deletions
dap-sdk/net/client/dap_client_pvt.c
dap-sdk/net/core/dap_worker.c
+5
-3
5 additions, 3 deletions
dap-sdk/net/core/dap_worker.c
with
54 additions
and
25 deletions
CMakeLists.txt
+
1
−
1
View file @
e1da18b0
...
@@ -2,7 +2,7 @@ project(cellframe-sdk C)
...
@@ -2,7 +2,7 @@ project(cellframe-sdk C)
cmake_minimum_required
(
VERSION 2.8
)
cmake_minimum_required
(
VERSION 2.8
)
set
(
CMAKE_C_STANDARD 11
)
set
(
CMAKE_C_STANDARD 11
)
set
(
CELLFRAME_SDK_NATIVE_VERSION
"2.8-1
5
"
)
set
(
CELLFRAME_SDK_NATIVE_VERSION
"2.8-1
6
"
)
add_definitions
(
"-DCELLFRAME_SDK_VERSION=
\"
${
CELLFRAME_SDK_NATIVE_VERSION
}
\"
"
)
add_definitions
(
"-DCELLFRAME_SDK_VERSION=
\"
${
CELLFRAME_SDK_NATIVE_VERSION
}
\"
"
)
set
(
DAPSDK_MODULES
""
)
set
(
DAPSDK_MODULES
""
)
...
...
This diff is collapsed.
Click to expand it.
dap-sdk/net/client/dap_client_pvt.c
+
48
−
21
View file @
e1da18b0
...
@@ -80,7 +80,7 @@
...
@@ -80,7 +80,7 @@
static
int
s_max_attempts
=
5
;
static
int
s_max_attempts
=
5
;
static
int
s_timeout
=
20
;
static
int
s_timeout
=
20
;
static
bool
s_debug_more
=
false
;
static
bool
s_stage_status_after
(
dap_client_pvt_t
*
a_client_internal
);
static
bool
s_stage_status_after
(
dap_client_pvt_t
*
a_client_internal
);
// ENC stage callbacks
// ENC stage callbacks
...
@@ -115,6 +115,7 @@ int dap_client_pvt_init()
...
@@ -115,6 +115,7 @@ int dap_client_pvt_init()
{
{
s_max_attempts
=
dap_config_get_item_int32_default
(
g_config
,
"dap_client"
,
"max_tries"
,
5
);
s_max_attempts
=
dap_config_get_item_int32_default
(
g_config
,
"dap_client"
,
"max_tries"
,
5
);
s_timeout
=
dap_config_get_item_int32_default
(
g_config
,
"dap_client"
,
"timeout"
,
10
);
s_timeout
=
dap_config_get_item_int32_default
(
g_config
,
"dap_client"
,
"timeout"
,
10
);
s_debug_more
=
dap_config_get_item_bool_default
(
g_config
,
"dap_client"
,
"debug_more"
,
false
);
return
0
;
return
0
;
}
}
...
@@ -157,10 +158,12 @@ void dap_client_pvt_delete(dap_client_pvt_t * a_client_pvt)
...
@@ -157,10 +158,12 @@ void dap_client_pvt_delete(dap_client_pvt_t * a_client_pvt)
a_client_pvt
->
delete_callback
(
a_client_pvt
->
client
,
NULL
);
a_client_pvt
->
delete_callback
(
a_client_pvt
->
client
,
NULL
);
// delete from list
// delete from list
if
(
dap_client_pvt_hh_del
(
a_client_pvt
)
<
0
){
if
(
dap_client_pvt_hh_del
(
a_client_pvt
)
<
0
){
log_it
(
L_DEBUG
,
"dap_client_pvt 0x%x already deleted"
,
a_client_pvt
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"dap_client_pvt 0x%x already deleted"
,
a_client_pvt
);
return
;
return
;
}
}
log_it
(
L_INFO
,
"dap_client_pvt_delete 0x%x"
,
a_client_pvt
);
if
(
s_debug_more
)
log_it
(
L_INFO
,
"dap_client_pvt_delete 0x%x"
,
a_client_pvt
);
if
(
a_client_pvt
->
session_key_id
)
if
(
a_client_pvt
->
session_key_id
)
DAP_DELETE
(
a_client_pvt
->
session_key_id
);
DAP_DELETE
(
a_client_pvt
->
session_key_id
);
...
@@ -192,6 +195,11 @@ static void s_stream_connected(dap_client_pvt_t * a_client_pvt)
...
@@ -192,6 +195,11 @@ static void s_stream_connected(dap_client_pvt_t * a_client_pvt)
s_stage_status_after
(
a_client_pvt
);
s_stage_status_after
(
a_client_pvt
);
}
}
/**
* @brief s_stream_timer_timeout_check
* @param a_arg
* @return
*/
static
bool
s_stream_timer_timeout_check
(
void
*
a_arg
)
static
bool
s_stream_timer_timeout_check
(
void
*
a_arg
)
{
{
dap_events_socket_handler_t
*
l_es_handler
=
(
dap_events_socket_handler_t
*
)
a_arg
;
dap_events_socket_handler_t
*
l_es_handler
=
(
dap_events_socket_handler_t
*
)
a_arg
;
...
@@ -206,7 +214,8 @@ static bool s_stream_timer_timeout_check(void * a_arg)
...
@@ -206,7 +214,8 @@ static bool s_stream_timer_timeout_check(void * a_arg)
if
(
dap_events_socket_check_unsafe
(
l_worker
,
l_es
)
){
if
(
dap_events_socket_check_unsafe
(
l_worker
,
l_es
)
){
if
(
!
dap_uint128_check_equal
(
l_es
->
uuid
,
l_es_handler
->
uuid
)){
if
(
!
dap_uint128_check_equal
(
l_es
->
uuid
,
l_es_handler
->
uuid
)){
log_it
(
L_DEBUG
,
"Timer esocket wrong argument, ignore this timeout..."
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"Timer esocket wrong argument, ignore this timeout..."
);
DAP_DEL_Z
(
l_es_handler
)
DAP_DEL_Z
(
l_es_handler
)
return
false
;
return
false
;
}
}
...
@@ -223,9 +232,11 @@ static bool s_stream_timer_timeout_check(void * a_arg)
...
@@ -223,9 +232,11 @@ static bool s_stream_timer_timeout_check(void * a_arg)
l_es
->
remote_addr_str
?
l_es
->
remote_addr_str
:
""
,
l_es
->
socket
,
l_es
->
type
);
l_es
->
remote_addr_str
?
l_es
->
remote_addr_str
:
""
,
l_es
->
socket
,
l_es
->
type
);
dap_events_socket_remove_and_delete_unsafe
(
l_es
,
true
);
dap_events_socket_remove_and_delete_unsafe
(
l_es
,
true
);
}
else
}
else
log_it
(
L_DEBUG
,
"Socket %d is connected, close check timer"
,
l_es
->
socket
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"Socket %d is connected, close check timer"
,
l_es
->
socket
);
}
else
}
else
log_it
(
L_DEBUG
,
"Esocket %p is finished, close check timer"
,
l_es
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"Esocket %p is finished, close check timer"
,
l_es
);
DAP_DEL_Z
(
l_es_handler
)
DAP_DEL_Z
(
l_es_handler
)
return
false
;
return
false
;
...
@@ -295,7 +306,8 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
...
@@ -295,7 +306,8 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
memset
(
l_data_str
,
0
,
sizeof
(
l_data_str
));
memset
(
l_data_str
,
0
,
sizeof
(
l_data_str
));
// DAP_ENC_DATA_TYPE_B64_URLSAFE not need because send it by POST request
// DAP_ENC_DATA_TYPE_B64_URLSAFE not need because send it by POST request
size_t
l_data_str_enc_size
=
dap_enc_base64_encode
(
l_data
,
l_key_size
+
l_sign_size
,
l_data_str
,
DAP_ENC_DATA_TYPE_B64
);
size_t
l_data_str_enc_size
=
dap_enc_base64_encode
(
l_data
,
l_key_size
+
l_sign_size
,
l_data_str
,
DAP_ENC_DATA_TYPE_B64
);
log_it
(
L_DEBUG
,
"ENC request size %u"
,
l_data_str_enc_size
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"ENC request size %u"
,
l_data_str_enc_size
);
char
l_enc_init_url
[
1024
]
=
{
'\0'
};
char
l_enc_init_url
[
1024
]
=
{
'\0'
};
dap_snprintf
(
l_enc_init_url
,
sizeof
(
l_enc_init_url
),
DAP_UPLINK_PATH_ENC_INIT
dap_snprintf
(
l_enc_init_url
,
sizeof
(
l_enc_init_url
),
DAP_UPLINK_PATH_ENC_INIT
...
@@ -314,7 +326,8 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
...
@@ -314,7 +326,8 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
log_it
(
L_INFO
,
"Go to stage STREAM_CTL: prepare the request"
);
log_it
(
L_INFO
,
"Go to stage STREAM_CTL: prepare the request"
);
char
*
l_request
=
dap_strdup_printf
(
"%d"
,
DAP_CLIENT_PROTOCOL_VERSION
);
char
*
l_request
=
dap_strdup_printf
(
"%d"
,
DAP_CLIENT_PROTOCOL_VERSION
);
size_t
l_request_size
=
dap_strlen
(
l_request
);
size_t
l_request_size
=
dap_strlen
(
l_request
);
log_it
(
L_DEBUG
,
"STREAM_CTL request size %u"
,
strlen
(
l_request
));
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"STREAM_CTL request size %u"
,
strlen
(
l_request
));
char
*
l_suburl
;
char
*
l_suburl
;
...
@@ -329,7 +342,8 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
...
@@ -329,7 +342,8 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
a_client_pvt
->
active_channels
,
a_client_pvt
->
session_key_type
,
a_client_pvt
->
active_channels
,
a_client_pvt
->
session_key_type
,
a_client_pvt
->
session_key_block_size
,
0
);
a_client_pvt
->
session_key_block_size
,
0
);
}
}
log_it
(
L_DEBUG
,
"Prepared enc request for streaming"
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"Prepared enc request for streaming"
);
dap_client_pvt_request_enc
(
a_client_pvt
,
dap_client_pvt_request_enc
(
a_client_pvt
,
DAP_UPLINK_PATH_STREAM_CTL
,
DAP_UPLINK_PATH_STREAM_CTL
,
l_suburl
,
"type=tcp,maxconn=4"
,
l_request
,
l_request_size
,
l_suburl
,
"type=tcp,maxconn=4"
,
l_request
,
l_request_size
,
...
@@ -417,7 +431,7 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
...
@@ -417,7 +431,7 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
if
((
l_err
=
connect
(
a_client_pvt
->
stream_socket
,
(
struct
sockaddr
*
)
&
a_client_pvt
->
stream_es
->
remote_addr
,
if
((
l_err
=
connect
(
a_client_pvt
->
stream_socket
,
(
struct
sockaddr
*
)
&
a_client_pvt
->
stream_es
->
remote_addr
,
sizeof
(
struct
sockaddr_in
)))
==
0
)
{
sizeof
(
struct
sockaddr_in
)))
==
0
)
{
log_it
(
L_
DEBUG
,
"Connected momentaly with %s:%u"
,
a_client_pvt
->
uplink_addr
,
a_client_pvt
->
uplink_port
);
log_it
(
L_
INFO
,
"Connected momentaly with %s:%u"
,
a_client_pvt
->
uplink_addr
,
a_client_pvt
->
uplink_port
);
// add to dap_worker
// add to dap_worker
dap_worker_add_events_socket
(
a_client_pvt
->
stream_es
,
l_worker
);
dap_worker_add_events_socket
(
a_client_pvt
->
stream_es
,
l_worker
);
}
}
...
@@ -454,6 +468,12 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
...
@@ -454,6 +468,12 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
break
;
break
;
case
STAGE_STREAM_CONNECTED
:
{
case
STAGE_STREAM_CONNECTED
:
{
log_it
(
L_INFO
,
"Go to stage STAGE_STREAM_CONNECTED"
);
log_it
(
L_INFO
,
"Go to stage STAGE_STREAM_CONNECTED"
);
if
(
!
a_client_pvt
->
stream
){
a_client_pvt
->
stage_status
=
STAGE_STATUS_ERROR
;
s_stage_status_after
(
a_client_pvt
);
return
false
;
}
size_t
count_channels
=
a_client_pvt
->
active_channels
?
strlen
(
a_client_pvt
->
active_channels
)
:
0
;
size_t
count_channels
=
a_client_pvt
->
active_channels
?
strlen
(
a_client_pvt
->
active_channels
)
:
0
;
for
(
size_t
i
=
0
;
i
<
count_channels
;
i
++
)
{
for
(
size_t
i
=
0
;
i
<
count_channels
;
i
++
)
{
dap_stream_ch_new
(
a_client_pvt
->
stream
,
(
uint8_t
)
a_client_pvt
->
active_channels
[
i
]);
dap_stream_ch_new
(
a_client_pvt
->
stream
,
(
uint8_t
)
a_client_pvt
->
active_channels
[
i
]);
...
@@ -513,9 +533,9 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
...
@@ -513,9 +533,9 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
// l_is_last_attempt = true;
// l_is_last_attempt = true;
//}
//}
if
(
a_client_pvt
->
is_always_reconnect
){
//
if (a_client_pvt->is_always_reconnect ){
l_is_last_attempt
=
false
;
//
l_is_last_attempt = false;
}
//
}
log_it
(
L_ERROR
,
"Error state( %s), doing callback if present"
,
dap_client_get_error_str
(
a_client_pvt
->
client
));
log_it
(
L_ERROR
,
"Error state( %s), doing callback if present"
,
dap_client_get_error_str
(
a_client_pvt
->
client
));
if
(
a_client_pvt
->
stage_status_error_callback
)
if
(
a_client_pvt
->
stage_status_error_callback
)
...
@@ -536,11 +556,13 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
...
@@ -536,11 +556,13 @@ static bool s_stage_status_after(dap_client_pvt_t * a_client_pvt)
a_client_pvt
);
a_client_pvt
);
}
else
{
}
else
{
log_it
(
L_INFO
,
"Too many connection attempts. Tries are over. Check again at 20 secs"
);
log_it
(
L_INFO
,
"Too many attempts, reconnect attempt in %d seconds with %s:%u"
,
s_timeout
*
3
,
a_client_pvt
->
stage_status
=
STAGE_STATUS_DONE
;
a_client_pvt
->
uplink_addr
,
a_client_pvt
->
uplink_port
);
// Trying the step again
a_client_pvt
->
stage_status
=
STAGE_STATUS_IN_PROGRESS
;
a_client_pvt
->
stage_errors
=
0
;
// small delay before next request
// small delay before next request
dap_timerfd_start_on_worker
(
l_worker
,
20
000
,
(
dap_timerfd_callback_t
)
s_stage_status_after
,
dap_timerfd_start_on_worker
(
l_worker
,
s_timeout
*
3
000
,
(
dap_timerfd_callback_t
)
s_stage_status_after
,
a_client_pvt
);
a_client_pvt
);
}
}
}
}
...
@@ -584,7 +606,8 @@ void dap_client_pvt_stage_transaction_begin(dap_client_pvt_t * a_client_internal
...
@@ -584,7 +606,8 @@ void dap_client_pvt_stage_transaction_begin(dap_client_pvt_t * a_client_internal
dap_client_callback_t
a_done_callback
)
dap_client_callback_t
a_done_callback
)
{
{
assert
(
a_client_internal
);
assert
(
a_client_internal
);
log_it
(
L_DEBUG
,
"Begin transaction for client %p to the next stage %s"
,
a_client_internal
->
client
,
dap_client_stage_str
(
a_stage_next
));
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"Begin transaction for client %p to the next stage %s"
,
a_client_internal
->
client
,
dap_client_stage_str
(
a_stage_next
));
a_client_internal
->
stage_status_done_callback
=
a_done_callback
;
a_client_internal
->
stage_status_done_callback
=
a_done_callback
;
a_client_internal
->
stage
=
a_stage_next
;
a_client_internal
->
stage
=
a_stage_next
;
a_client_internal
->
stage_status
=
STAGE_STATUS_IN_PROGRESS
;
a_client_internal
->
stage_status
=
STAGE_STATUS_IN_PROGRESS
;
...
@@ -635,7 +658,8 @@ void dap_client_pvt_request_enc(dap_client_pvt_t * a_client_internal, const char
...
@@ -635,7 +658,8 @@ void dap_client_pvt_request_enc(dap_client_pvt_t * a_client_internal, const char
,
dap_client_callback_int_t
a_response_error
)
,
dap_client_callback_int_t
a_response_error
)
{
{
bool
is_query_enc
=
true
;
// if true, then encode a_query string [Why do we even need this?]
bool
is_query_enc
=
true
;
// if true, then encode a_query string [Why do we even need this?]
log_it
(
L_DEBUG
,
"Encrypted request: sub_url '%s' query '%s'"
,
a_sub_url
?
a_sub_url
:
"NULL"
,
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"Encrypted request: sub_url '%s' query '%s'"
,
a_sub_url
?
a_sub_url
:
"NULL"
,
a_query
?
a_query
:
"NULL"
);
a_query
?
a_query
:
"NULL"
);
size_t
l_sub_url_size
=
a_sub_url
?
strlen
(
a_sub_url
)
:
0
;
size_t
l_sub_url_size
=
a_sub_url
?
strlen
(
a_sub_url
)
:
0
;
size_t
l_query_size
=
a_query
?
strlen
(
a_query
)
:
0
;
size_t
l_query_size
=
a_query
?
strlen
(
a_query
)
:
0
;
...
@@ -949,7 +973,8 @@ static void s_stream_ctl_response(dap_client_t * a_client, void * a_data, size_t
...
@@ -949,7 +973,8 @@ static void s_stream_ctl_response(dap_client_t * a_client, void * a_data, size_t
dap_client_pvt_t
*
l_client_pvt
=
DAP_CLIENT_PVT
(
a_client
);
dap_client_pvt_t
*
l_client_pvt
=
DAP_CLIENT_PVT
(
a_client
);
assert
(
l_client_pvt
);
assert
(
l_client_pvt
);
log_it
(
L_DEBUG
,
"STREAM_CTL response %u bytes length recieved"
,
a_data_size
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"STREAM_CTL response %u bytes length recieved"
,
a_data_size
);
char
*
l_response_str
=
DAP_NEW_Z_SIZE
(
char
,
a_data_size
+
1
);
char
*
l_response_str
=
DAP_NEW_Z_SIZE
(
char
,
a_data_size
+
1
);
memcpy
(
l_response_str
,
a_data
,
a_data_size
);
memcpy
(
l_response_str
,
a_data
,
a_data_size
);
...
@@ -1058,7 +1083,8 @@ static void s_stream_response(dap_client_t * a_client, void * a_data, size_t a_d
...
@@ -1058,7 +1083,8 @@ static void s_stream_response(dap_client_t * a_client, void * a_data, size_t a_d
{
{
dap_client_pvt_t
*
l_client_pvt
=
DAP_CLIENT_PVT
(
a_client
);
dap_client_pvt_t
*
l_client_pvt
=
DAP_CLIENT_PVT
(
a_client
);
assert
(
l_client_pvt
);
assert
(
l_client_pvt
);
log_it
(
L_DEBUG
,
"STREAM response %u bytes length recieved"
,
a_data_size
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"STREAM response %u bytes length recieved"
,
a_data_size
);
// char * l_response_str = DAP_NEW_Z_SIZE(char, a_data_size + 1);
// char * l_response_str = DAP_NEW_Z_SIZE(char, a_data_size + 1);
// memcpy(l_response_str, a_data, a_data_size);
// memcpy(l_response_str, a_data, a_data_size);
...
@@ -1122,7 +1148,8 @@ static void s_stream_es_callback_delete(dap_events_socket_t *a_es, void *arg)
...
@@ -1122,7 +1148,8 @@ static void s_stream_es_callback_delete(dap_events_socket_t *a_es, void *arg)
return
;
return
;
}
}
log_it
(
L_DEBUG
,
"Delete stream socket for client_pvt=0x%x"
,
l_client_pvt
);
if
(
s_debug_more
)
log_it
(
L_DEBUG
,
"Delete stream socket for client_pvt=0x%x"
,
l_client_pvt
);
if
(
l_client_pvt
->
stage_status_error_callback
)
{
if
(
l_client_pvt
->
stage_status_error_callback
)
{
if
(
l_client_pvt
==
l_client_pvt
->
client
->
_internal
)
if
(
l_client_pvt
==
l_client_pvt
->
client
->
_internal
)
...
...
This diff is collapsed.
Click to expand it.
dap-sdk/net/core/dap_worker.c
+
5
−
3
View file @
e1da18b0
...
@@ -639,18 +639,20 @@ void *dap_worker_thread(void *arg)
...
@@ -639,18 +639,20 @@ void *dap_worker_thread(void *arg)
if
((
l_cur
->
flags
&
DAP_SOCK_SIGNAL_CLOSE
)
&&
!
l_cur
->
no_close
)
if
((
l_cur
->
flags
&
DAP_SOCK_SIGNAL_CLOSE
)
&&
!
l_cur
->
no_close
)
{
{
if
(
l_cur
->
buf_out_size
==
0
)
{
if
(
l_cur
->
buf_out_size
==
0
)
{
log_it
(
L_INFO
,
"Process signal to close %s sock %u type %d [thread %u]"
,
if
(
s_debug_reactor
)
log_it
(
L_INFO
,
"Process signal to close %s sock %u type %d [thread %u]"
,
l_cur
->
remote_addr_str
?
l_cur
->
remote_addr_str
:
""
,
l_cur
->
socket
,
l_cur
->
type
,
l_tn
);
l_cur
->
remote_addr_str
?
l_cur
->
remote_addr_str
:
""
,
l_cur
->
socket
,
l_cur
->
type
,
l_tn
);
dap_events_socket_remove_and_delete_unsafe
(
l_cur
,
false
);
dap_events_socket_remove_and_delete_unsafe
(
l_cur
,
false
);
}
else
if
(
l_cur
->
buf_out_size
)
{
}
else
if
(
l_cur
->
buf_out_size
)
{
log_it
(
L_INFO
,
"Got signal to close %s sock %u [thread %u] type %d but buffer is not empty(%zd)"
,
if
(
s_debug_reactor
)
log_it
(
L_INFO
,
"Got signal to close %s sock %u [thread %u] type %d but buffer is not empty(%zd)"
,
l_cur
->
remote_addr_str
?
l_cur
->
remote_addr_str
:
""
,
l_cur
->
socket
,
l_cur
->
type
,
l_tn
,
l_cur
->
remote_addr_str
?
l_cur
->
remote_addr_str
:
""
,
l_cur
->
socket
,
l_cur
->
type
,
l_tn
,
l_cur
->
buf_out_size
);
l_cur
->
buf_out_size
);
}
}
}
}
if
(
l_worker
->
signal_exit
){
if
(
l_worker
->
signal_exit
){
log_it
(
L_
NOTICE
,
"Worker :%u finished"
,
l_worker
->
id
);
log_it
(
L_
ATT
,
"Worker :%u finished"
,
l_worker
->
id
);
return
NULL
;
return
NULL
;
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment