@@ -64,48 +64,51 @@ log_filterx_pipe_queue(LogPipe *s, LogMessage *msg, const LogPathOptions *path_o
64
64
{
65
65
LogFilterXPipe * self = (LogFilterXPipe * ) s ;
66
66
FilterXEvalContext eval_context ;
67
- LogPathOptions local_path_options ;
68
- FilterXEvalResult eval_res ;
69
-
70
- path_options = log_path_options_chain (& local_path_options , path_options );
71
- filterx_eval_init_context (& eval_context , path_options -> filterx_context , msg );
72
-
73
- msg_trace (">>>>>> filterx rule evaluation begin" ,
74
- evt_tag_str ("rule" , self -> name ),
75
- log_pipe_location_tag (s ),
76
- evt_tag_msg_reference (msg ));
67
+ FilterXEvalContext * previous_context = path_options -> filterx_context ;
77
68
78
69
NVTable * payload = nv_table_ref (msg -> payload );
79
- eval_res = filterx_eval_exec (& eval_context , self -> block );
80
-
81
- msg_trace ("<<<<<< filterx rule evaluation result" ,
82
- filterx_format_eval_result (eval_res ),
83
- evt_tag_str ("rule" , self -> name ),
84
- log_pipe_location_tag (s ),
85
- evt_tag_int ("dirty" , filterx_scope_is_dirty (eval_context .scope )),
86
- evt_tag_msg_reference (msg ));
87
-
88
- local_path_options .filterx_context = & eval_context ;
89
- switch (eval_res )
90
- {
91
- case FXE_SUCCESS :
92
- log_pipe_forward_msg (s , msg , path_options );
93
- break ;
94
-
95
- case FXE_FAILURE :
96
- if (path_options -> matched )
97
- (* path_options -> matched ) = FALSE;
98
- /* FALLTHROUGH */
99
- case FXE_DROP :
100
- log_msg_drop (msg , path_options , AT_PROCESSED );
101
- break ;
102
-
103
- default :
104
- g_assert_not_reached ();
105
- break ;
106
- }
107
-
108
- filterx_eval_deinit_context (& eval_context );
70
+ FILTERX_EVAL_BEGIN_CONTEXT (eval_context , previous_context )
71
+ {
72
+ FilterXEvalResult eval_res ;
73
+ LogPathOptions local_path_options ;
74
+
75
+ path_options = log_path_options_chain (& local_path_options , path_options );
76
+
77
+ msg_trace (">>>>>> filterx rule evaluation begin" ,
78
+ evt_tag_str ("rule" , self -> name ),
79
+ log_pipe_location_tag (s ),
80
+ evt_tag_msg_reference (msg ));
81
+
82
+ eval_res = filterx_eval_exec (& eval_context , self -> block );
83
+
84
+ msg_trace ("<<<<<< filterx rule evaluation result" ,
85
+ filterx_format_eval_result (eval_res ),
86
+ evt_tag_str ("rule" , self -> name ),
87
+ log_pipe_location_tag (s ),
88
+ evt_tag_int ("dirty" , filterx_scope_is_dirty (eval_context .scope )),
89
+ evt_tag_msg_reference (msg ));
90
+
91
+ local_path_options .filterx_context = & eval_context ;
92
+ switch (eval_res )
93
+ {
94
+ case FXE_SUCCESS :
95
+ log_pipe_forward_msg (s , msg , path_options );
96
+ break ;
97
+
98
+ case FXE_FAILURE :
99
+ if (path_options -> matched )
100
+ (* path_options -> matched ) = FALSE;
101
+ /* FALLTHROUGH */
102
+ case FXE_DROP :
103
+ log_msg_drop (msg , path_options , AT_PROCESSED );
104
+ break ;
105
+
106
+ default :
107
+ g_assert_not_reached ();
108
+ break ;
109
+ }
110
+ }
111
+ FILTERX_EVAL_END_CONTEXT (eval_context );
109
112
nv_table_unref (payload );
110
113
}
111
114
0 commit comments