diff --git a/dap_client.h b/dap_client.h index 5d248f4443767e28d4e94e59d1b562479ee4ee5c..bbe67b2fc0567ac1fd774add8486f3016c88258e 100644 --- a/dap_client.h +++ b/dap_client.h @@ -74,7 +74,7 @@ typedef void (*dap_client_callback_t) (dap_client_t *, void*); typedef void (*dap_client_callback_int_t) (dap_client_t *, int); typedef void (*dap_client_callback_data_size_t) (dap_client_t *, void *, size_t); -#define DAP_UPLINK_PATH_ENC_INIT "1901248124123459" +#define DAP_UPLINK_PATH_ENC_INIT "enc_init" //"1901248124123459" #define DAP_UPLINK_PATH_DB "01094787531354" #define DAP_UPLINK_PATH_STREAM_CTL "091348758013553" #define DAP_UPLINK_PATH_STREAM "874751843144" diff --git a/dap_client_pvt.c b/dap_client_pvt.c index 3382f045199246b372ceb05793c5bbfa8910d051..b500e1e4fae0b1abcf604a34bb6e70253be705dd 100644 --- a/dap_client_pvt.c +++ b/dap_client_pvt.c @@ -69,8 +69,10 @@ void m_request_error(int,void *); void m_es_stream_delete(dap_events_socket_t * a_es, void * arg); void m_es_stream_read(dap_events_socket_t * a_es, void * arg); void m_es_stream_write(dap_events_socket_t * a_es, void * arg); -void m_es_stream_error(dap_events_socket_t * a_es, void * arg); - +void m_es_stream_error(dap_events_socket_t * a_es, void * arg) +{ + // TODO function is used, need to implement it!!! +} /** * @brief dap_client_internal_init * @return @@ -137,9 +139,10 @@ static void s_stage_status_after(dap_client_pvt_t * a_client_pvt) size_t l_key_str_size_max = DAP_ENC_BASE64_ENCODE_SIZE(a_client_pvt->session_key_open->pub_key_data_size); char *l_key_str= DAP_NEW_Z_SIZE(char,l_key_str_size_max+1); + // DAP_ENC_DATA_TYPE_B64_URLSAFE not need because send it by POST request size_t l_key_str_enc_size = dap_enc_base64_encode(a_client_pvt->session_key_open->pub_key_data, a_client_pvt->session_key_open->pub_key_data_size, - l_key_str,DAP_ENC_DATA_TYPE_B64_URLSAFE); + l_key_str,DAP_ENC_DATA_TYPE_B64); log_it(L_DEBUG,"ENC request size %u",l_key_str_enc_size); dap_client_pvt_request( a_client_pvt, DAP_UPLINK_PATH_ENC_INIT "/gd4y5yh78w42aaagh", @@ -319,7 +322,7 @@ void dap_client_pvt_request_enc(dap_client_pvt_t * a_client_internal, const char size_t l_query_enc_size_max = l_query_size*5+16; char *l_query_enc = l_query_size ? DAP_NEW_Z_SIZE(char,l_query_enc_size_max+1 ):NULL; - size_t l_url_full_size_max = 5*l_sub_url_size + 5*l_query_size + 5 + l_url_size+2; + size_t l_url_full_size_max = 5*l_sub_url_size + 5*l_query_size + 16 + l_url_size+2; char * l_url_full = DAP_NEW_Z_SIZE(char, l_url_full_size_max+1); size_t l_request_enc_size_max = a_request_size ?a_request_size*2+16 : 0; @@ -377,9 +380,17 @@ void dap_client_pvt_request_enc(dap_client_pvt_t * a_client_internal, const char snprintf(l_key_hdr_str,l_key_hdr_str_size_max,"KeyID: %s",a_client_internal->session_key_id ); - dap_http_client_simple_request(l_url_full, a_request?"POST":"GET","text/text", - l_request_enc, l_request_enc_size, NULL, - m_request_response, m_request_error, a_client_internal, l_key_hdr_str); + char *a_custom_new[2]; + size_t a_custom_count = 1; + a_custom_new[0] = l_key_hdr_str; + // close session + if(a_client_internal->is_close_session){ + a_custom_new[1] = "SessionCloseAfterRequest: true"; + a_custom_count++; + } + dap_http_client_simple_request_custom(l_url_full, a_request ? "POST" : "GET", "text/text", + l_request_enc, l_request_enc_size, NULL, + m_request_response, m_request_error, a_client_internal, a_custom_new, a_custom_count); DAP_DELETE(l_key_hdr_str); if( l_sub_url_enc ) @@ -444,7 +455,7 @@ void m_request_response(void * a_response,size_t a_response_size,void * a_obj) void m_enc_init_response(dap_client_t * a_client, void * a_response,size_t a_response_size) { dap_client_pvt_t * l_client_pvt = DAP_CLIENT_PVT(a_client); - if( a_response_size > 10 && a_response_size < 50){ + if( a_response_size > 10) {// && a_response_size < 50){ char l_session_id_b64 [DAP_ENC_BASE64_ENCODE_SIZE(DAP_ENC_KS_KEY_ID_SIZE)+1]={0}; char *l_bob_message_b64 = DAP_NEW_Z_SIZE(char,a_response_size- sizeof(l_session_id_b64)+1 ); if (sscanf (a_response,"%s %s",l_session_id_b64, l_bob_message_b64) == 2 ){ diff --git a/dap_client_pvt.h b/dap_client_pvt.h index a25c1d5b4d6286ef6c031295d296386d05fc04e7..58d2f0b7a3e015515f022bb4b0d64a59e2aa3890 100644 --- a/dap_client_pvt.h +++ b/dap_client_pvt.h @@ -71,6 +71,7 @@ typedef struct dap_client_internal dap_client_callback_t stage_status_error_callback; bool is_encrypted; + bool is_close_session;// the last request in session, in the header will be added "SessionCloseAfterRequest: true" dap_client_callback_data_size_t request_response_callback; dap_client_callback_int_t request_error_callback; } dap_client_pvt_t;