@@ -527,8 +527,18 @@ class socket_data_handler
527
527
{
528
528
const std::string chunked_end = " 0\r\n\r\n " ;
529
529
check_chunked_end (data);
530
- if (m_chunked_end.find (chunked_end) != std::string::npos)
530
+ size_t pos = m_chunked_end.find (chunked_end);
531
+ if (pos == 0 )
531
532
{
533
+ return 0 ;
534
+ }
535
+ else if (pos != std::string::npos)
536
+ {
537
+ pos = data.find (chunked_end);
538
+ if (pos != std::string::npos)
539
+ {
540
+ data = data.substr (0 , pos);
541
+ }
532
542
extract_data (data);
533
543
m_chunked_end.clear ();
534
544
m_chunked_detected = false ;
@@ -848,8 +858,8 @@ class socket_data_handler
848
858
{
849
859
jsons.emplace_back (std::move (json));
850
860
}
851
- g_logger.log (" Socket handler (" + m_id + " ): invoking callback(s). " ,
852
- sinsp_logger::SEV_TRACE);
861
+ g_logger.log (" Socket handler (" + m_id + " ): invoking callback(s) for " +
862
+ std::to_string (jsons. size ()) + " events. " , sinsp_logger::SEV_TRACE);
853
863
if (m_json_filters.empty ())
854
864
{
855
865
// if no filters provided and we got here, just do the whole JSON as-is
@@ -939,7 +949,7 @@ class socket_data_handler
939
949
" : no data received, giving up extraction ..." , sinsp_logger::SEV_TRACE);
940
950
return ;
941
951
}
942
- g_logger.log (m_id + ' ' + m_url.to_string (false ) + m_path + " :\n\n " + data + " \n\n " , sinsp_logger::SEV_TRACE);
952
+ g_logger.log (m_id + ' ' + m_url.to_string (false ) + m_path + " ::extract_data() \n\n " + data + " \n\n " , sinsp_logger::SEV_TRACE);
943
953
if (!detect_chunked_transfer (data))
944
954
{
945
955
g_logger.log (" Socket handler (" + m_id + " )::extract_data() " + m_url.to_string (false ) + m_path +
@@ -948,12 +958,15 @@ class socket_data_handler
948
958
}
949
959
950
960
m_data_buf.append (data);
951
- std::string::size_type pos = m_data_buf.find (m_json_begin);
952
- if (pos != std::string::npos) // JSON begin
961
+ if (m_data_buf.size () && m_data_buf[0 ] != ' {' )
953
962
{
954
- m_data_buf = m_data_buf.substr (pos + 2 );
955
- g_logger.log (" Socket handler (" + m_id + " )::extract_data() " + m_url.to_string (false ) + m_path +
956
- " : found JSON beginning" , sinsp_logger::SEV_TRACE);
963
+ std::string::size_type pos = m_data_buf.find (m_json_begin);
964
+ if (pos != std::string::npos) // JSON begin
965
+ {
966
+ m_data_buf = m_data_buf.substr (pos + 2 );
967
+ g_logger.log (" Socket handler (" + m_id + " )::extract_data() " + m_url.to_string (false ) + m_path +
968
+ " : found JSON beginning" , sinsp_logger::SEV_TRACE);
969
+ }
957
970
}
958
971
if (is_chunked ())
959
972
{
0 commit comments