utils_format_json: serialize nan and inf as null, as per JSON spec
authorChris Buben <cbuben@eventlogic.com>
Thu, 4 Feb 2010 08:52:30 +0000 (00:52 -0800)
committerFlorian Forster <octo@huhu.verplant.org>
Thu, 4 Feb 2010 09:20:24 +0000 (10:20 +0100)
commitfdb6736cf312cd91bb7fcfc71393e6525c09cec8
treed200523a41345f241c4008e624107fcc93195c9f
parenta1a04f130d16c8a0aacfeb2734af51f94734176b
utils_format_json: serialize nan and inf as null, as per JSON spec

I'm deserializing JSON output from the write_http plugin using ruby-yajl.
yajl was puking on the literal value nan encoded in the output.

[
    {
        "plugin": "memcached",
        "interval": 10,
        "host": "myhost",
        "values": [
            nan,
            5
        ],
        "time": 1265239180,
        "plugin_instance": "",
        "type_instance": "",
        "type": "ps_count"
    }
]

After some research, ECMA-262 15.12.3 says nan and infinite numbers
aren't representable in JSON and should be serialized as the string
null. I figure any strictly-compliant JSON parser will fail on parsing
JSON data containing nans as emitted by collectd's utils_format_json
routines.

This patch makes collectd's JSON output compliant in the case of
infinite or nan gauge values.

Signed-off-by: Florian Forster <octo@huhu.verplant.org>
src/utils_format_json.c