From 43b9bfaed408c7b9036c53bd2b24b4c21f7501d3 Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Tue, 7 Jul 2020 00:04:13 -0600 Subject: [PATCH] applayer template (rust): convert to JsonBuilder --- rust/src/applayertemplate/logger.rs | 18 +++++++----------- src/output-json-template-rust.c | 14 +++++++------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/rust/src/applayertemplate/logger.rs b/rust/src/applayertemplate/logger.rs index b1608180d9..9c1278350f 100644 --- a/rust/src/applayertemplate/logger.rs +++ b/rust/src/applayertemplate/logger.rs @@ -16,25 +16,21 @@ */ use std; -use crate::json::*; +use crate::jsonbuilder::{JsonBuilder, JsonError}; use super::template::TemplateTransaction; -fn log_template(tx: &TemplateTransaction) -> Option { - let js = Json::object(); +fn log_template(tx: &TemplateTransaction, js: &mut JsonBuilder) -> Result<(), JsonError> { if let Some(ref request) = tx.request { - js.set_string("request", request); + js.set_string("request", request)?; } if let Some(ref response) = tx.response { - js.set_string("response", response); + js.set_string("response", response)?; } - return Some(js); + Ok(()) } #[no_mangle] -pub extern "C" fn rs_template_logger_log(tx: *mut std::os::raw::c_void) -> *mut JsonT { +pub extern "C" fn rs_template_logger_log(tx: *mut std::os::raw::c_void, js: &mut JsonBuilder) -> bool { let tx = cast_pointer!(tx, TemplateTransaction); - match log_template(tx) { - Some(js) => js.unwrap(), - None => std::ptr::null_mut(), - } + log_template(tx, js).is_ok() } diff --git a/src/output-json-template-rust.c b/src/output-json-template-rust.c index 87aa213d58..2ea62adbe3 100644 --- a/src/output-json-template-rust.c +++ b/src/output-json-template-rust.c @@ -71,25 +71,25 @@ static int JsonTemplateLogger(ThreadVars *tv, void *thread_data, SCLogNotice("JsonTemplateLogger"); LogTemplateLogThread *thread = thread_data; - json_t *js = CreateJSONHeader(p, LOG_DIR_PACKET, "template-rust", NULL); + JsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "template-rust", NULL); if (unlikely(js == NULL)) { return TM_ECODE_FAILED; } - json_t *template_js = rs_template_logger_log(tx); - if (unlikely(template_js == NULL)) { + jb_open_object(js, "template"); + if (!rs_template_logger_log(tx, js)) { goto error; } - json_object_set_new(js, "template", template_js); + jb_close(js); MemBufferReset(thread->buffer); - OutputJSONBuffer(js, thread->templatelog_ctx->file_ctx, &thread->buffer); - json_decref(js); + OutputJsonBuilderBuffer(js, thread->templatelog_ctx->file_ctx, &thread->buffer); + jb_free(js); return TM_ECODE_OK; error: - json_decref(js); + jb_free(js); return TM_ECODE_FAILED; }