Cleaned up the surrounding code a bit and also added '[' as another
case (not sure that can happen, but doesn't hurt eihter).

* 'master' of https://github.com/aeppert/bro:
  Whitespace
  Remove
  Remove.
  Fix for JSON formatter
  A fatal error, especially in DEBUG, should result in a core.
  Seems to fix a case where an entry in the table may be null on insert.
This commit is contained in:
Robin Sommer 2015-10-26 16:47:22 -07:00
commit 9d7ec6b6d2
6 changed files with 39 additions and 3 deletions

View file

@ -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 2.4-188 | 2015-10-26 14:11:21 -0700
* Extending rexmit_inconsistency() event to receive an additional * Extending rexmit_inconsistency() event to receive an additional

View file

@ -1 +1 @@
2.4-188 2.4-199

View file

@ -393,4 +393,3 @@ void Reporter::DoLog(const char* prefix, EventHandlerPtr event, FILE* out,
if ( alloced ) if ( alloced )
free(alloced); free(alloced);
} }

View file

@ -35,7 +35,12 @@ bool JSON::Describe(ODesc* desc, int num_fields, const Field* const * fields,
const u_char* bytes = desc->Bytes(); const u_char* bytes = desc->Bytes();
int len = desc->Len(); 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(","); desc->AddRaw(",");
if ( ! Describe(desc, vals[i], fields[i]->name) ) if ( ! Describe(desc, vals[i], fields[i]->name) )

View file

@ -0,0 +1 @@
{"msg":"Testing 1 2 3 "}

View file

@ -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);
}