@@ -347,67 +347,24 @@ static inline int splunk_metrics_format(struct flb_output_instance *ins,
347347
348348
349349/* implements functionality to get auth_header from msgpack map (metadata) */
350- static flb_sds_t extract_hec_token (struct flb_splunk * ctx , msgpack_object * map )
350+ static flb_sds_t extract_hec_token (struct flb_splunk * ctx , msgpack_object map ,
351+ char * tag , int tag_len )
351352{
352- size_t map_size = map -> via .map .size ;
353- msgpack_object_kv * kv ;
354- msgpack_object key ;
355- msgpack_object val ;
356- char * key_str = NULL ;
357- char * val_str = NULL ;
358- size_t key_str_size = 0 ;
359- size_t val_str_size = 0 ;
360- int j ;
361- int check = FLB_FALSE ;
362- int found = FLB_FALSE ;
363353 flb_sds_t hec_token ;
364354
365- kv = map -> via .map .ptr ;
366-
367- for (j = 0 ; j < map_size ; j ++ ) {
368- check = FLB_FALSE ;
369- found = FLB_FALSE ;
370- key = (kv + j )-> key ;
371- if (key .type == MSGPACK_OBJECT_BIN ) {
372- key_str = (char * ) key .via .bin .ptr ;
373- key_str_size = key .via .bin .size ;
374- check = FLB_TRUE ;
375- }
376- if (key .type == MSGPACK_OBJECT_STR ) {
377- key_str = (char * ) key .via .str .ptr ;
378- key_str_size = key .via .str .size ;
379- check = FLB_TRUE ;
380- }
381-
382- if (check == FLB_TRUE ) {
383- if (strncmp ("hec_token" , key_str , key_str_size ) == 0 ) {
384- val = (kv + j )-> val ;
385- if (val .type == MSGPACK_OBJECT_BIN ) {
386- val_str = (char * ) val .via .bin .ptr ;
387- val_str_size = val .via .str .size ;
388- found = FLB_TRUE ;
389- break ;
390- }
391- if (val .type == MSGPACK_OBJECT_STR ) {
392- val_str = (char * ) val .via .str .ptr ;
393- val_str_size = val .via .str .size ;
394- found = FLB_TRUE ;
395- break ;
396- }
397- }
355+ /* Extract HEC token (map which is from metadata lookup) */
356+ if (ctx -> event_sourcetype_key ) {
357+ hec_token = flb_ra_translate (ctx -> ra_metadata_auth_key , tag , tag_len ,
358+ map , NULL );
359+ if (hec_token ) {
360+ return hec_token ;
398361 }
399- }
400362
401- if (found == FLB_TRUE ) {
402- hec_token = flb_sds_create_len (val_str , val_str_size );
403- if (!hec_token ) {
404- return NULL ;
405- }
406- return hec_token ;
363+ flb_plg_debug (ctx -> ins , "Could not find hec_token in metadata" );
364+ return NULL ;
407365 }
408366
409-
410- flb_plg_debug (ctx -> ins , "Could not find hec_token in metadata" );
367+ flb_plg_debug (ctx -> ins , "Could not find a record accessor definition of hec_token" );
411368 return NULL ;
412369}
413370
@@ -458,7 +415,7 @@ static inline int splunk_format(const void *in_buf, size_t in_bytes,
458415
459416 map = * log_event .body ;
460417 metadata = * log_event .metadata ;
461- metadata_hec_token = extract_hec_token (ctx , & metadata );
418+ metadata_hec_token = extract_hec_token (ctx , metadata , tag , tag_len );
462419
463420 if (metadata_hec_token != NULL ) {
464421 /* Currently, in_splunk implementation permits to
0 commit comments