Changeset 8417


Ignore:
Timestamp:
May 16, 2009, 3:38:47 PM (12 years ago)
Author:
charles
Message:

(trunk libT) #2086: JSON RPC messages can be 86% shorter, using less bandwidth and CPU

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/bencode.c

    r8414 r8417  
    1414#include <ctype.h> /* isdigit, isprint, isspace */
    1515#include <errno.h>
     16#include <math.h> /* fabs */
    1617#include <stdio.h>
    1718#include <stdlib.h>
     
    12131214                const int i = parentState->childIndex++;
    12141215                if( !( i % 2 ) )
    1215                     evbuffer_add( data->out, ": ", 2 );
     1216                    evbuffer_add( data->out, ": ", data->doIndent ? 2 : 1 );
    12161217                else
    12171218                {
    1218                     evbuffer_add( data->out, ", ", 2 );
     1219                    evbuffer_add( data->out, ", ", data->doIndent ? 2 : 1 );
    12191220                    jsonIndent( data );
    12201221                }
     
    12251226            {
    12261227                ++parentState->childIndex;
    1227                 evbuffer_add( data->out, ", ", 2 );
     1228                evbuffer_add( data->out, ", ", data->doIndent ? 2 : 1 );
    12281229                jsonIndent( data );
    12291230                break;
     
    12831284    char locale[128];
    12841285
    1285     /* json requires a '.' decimal point regardless of locale */
    1286     tr_strlcpy( locale, setlocale( LC_NUMERIC, NULL ), sizeof( locale ) );
    1287     setlocale( LC_NUMERIC, "POSIX" );
    1288     evbuffer_add_printf( data->out, "%f", val->val.d );
    1289     setlocale( LC_NUMERIC, locale );
     1286    if( fabs( val->val.d ) < 0.00001 )
     1287        evbuffer_add( data->out, "0", 1 );
     1288    else {
     1289        /* json requires a '.' decimal point regardless of locale */
     1290        tr_strlcpy( locale, setlocale( LC_NUMERIC, NULL ), sizeof( locale ) );
     1291        setlocale( LC_NUMERIC, "POSIX" );
     1292        evbuffer_add_printf( data->out, "%.4f", val->val.d );
     1293        setlocale( LC_NUMERIC, locale );
     1294    }
    12901295
    12911296    jsonChildFunc( data );
Note: See TracChangeset for help on using the changeset viewer.