diff --git a/CHANGES b/CHANGES index de80e73dca..908a36659c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,8 @@ +2.4-199 | 2015-10-26 16:51:47 -0700 + + * Fix problem with the JSON Serialization code. (Aaron Eppert) + 2.4-188 | 2015-10-26 14:11:21 -0700 * Extending rexmit_inconsistency() event to receive an additional diff --git a/VERSION b/VERSION index 64502bd1aa..d704d5aca4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.4-188 +2.4-199 diff --git a/src/Reporter.cc b/src/Reporter.cc index 72c9e9868c..6020b6569c 100644 --- a/src/Reporter.cc +++ b/src/Reporter.cc @@ -393,4 +393,3 @@ void Reporter::DoLog(const char* prefix, EventHandlerPtr event, FILE* out, if ( alloced ) free(alloced); } - diff --git a/src/threading/formatters/JSON.cc b/src/threading/formatters/JSON.cc index 1a2fd84c4a..3558baee5c 100644 --- a/src/threading/formatters/JSON.cc +++ b/src/threading/formatters/JSON.cc @@ -35,7 +35,12 @@ bool JSON::Describe(ODesc* desc, int num_fields, const Field* const * fields, const u_char* bytes = desc->Bytes(); int len = desc->Len(); - if ( i > 0 && len > 0 && bytes[len-1] != ',' && vals[i]->present ) + if ( i > 0 && + len > 0 && + bytes[len-1] != ',' && + bytes[len-1] != '{' && + bytes[len-1] != '[' && + vals[i]->present ) desc->AddRaw(","); if ( ! Describe(desc, vals[i], fields[i]->name) ) diff --git a/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-json-optional/testing.log b/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-json-optional/testing.log new file mode 100644 index 0000000000..ba61a12d34 --- /dev/null +++ b/testing/btest/Baseline/scripts.base.frameworks.logging.ascii-json-optional/testing.log @@ -0,0 +1 @@ +{"msg":"Testing 1 2 3 "} diff --git a/testing/btest/scripts/base/frameworks/logging/ascii-json-optional.bro b/testing/btest/scripts/base/frameworks/logging/ascii-json-optional.bro new file mode 100644 index 0000000000..c26683a338 --- /dev/null +++ b/testing/btest/scripts/base/frameworks/logging/ascii-json-optional.bro @@ -0,0 +1,27 @@ +# +# @TEST-EXEC: bro -b %INPUT +# @TEST-EXEC: btest-diff testing.log + +@load tuning/json-logs.bro + +module testing; + +export { + redef enum Log::ID += { LOG }; + + type Info: record { + ts: time &log &optional; + msg: string &log &optional; + }; + + global log_test: event(rec: Info); +} + +event bro_init() &priority=5 +{ + Log::create_stream(testing::LOG, [$columns=testing::Info, $ev=log_test]); + local info: Info; + info$msg = "Testing 1 2 3 "; + Log::write(testing::LOG, info); +} +