Changeset 343


Ignore:
Timestamp:
Jun 1, 2011, 6:45:19 PM (14 years ago)
Author:
katerina
Message:

Fix for ticket #252: cache timeserver response.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_unix.c

    r321 r343  
    23172317      else /* have a timeserver address */
    23182318        {
     2319          /* don't call timeserver more than once per second */
     2320          static time_t  time_old   = 0;
     2321          time_t         time_new;
     2322          static time_t  time_saved = 0;
     2323          (void) time (&time_new);
     2324          if ((time_new == time_old) && (time_saved != 0))
     2325            {
     2326              time_now = time_saved;
     2327              goto end;
     2328            }
     2329          time_old = time_new;
     2330
     2331
    23192332          fd = connect_port_2 (sh.srvtime.name, sh.srvtime.alt,
    23202333                               IPPORT_TIMESERVER,
     
    23452358              memcpy(&ttmp, net_time, sizeof(UINT32)); ltmp = ttmp;
    23462359              time_now = ntohl(ltmp) - UNIXEPOCH;
    2347               /* fprintf(stderr, "TIME IS %ld\n", time_now); */
     2360              time_saved = time_now;
     2361
    23482362              if (failerr == 1) {
    23492363                failerr = 0;
     
    23562370            {
    23572371              (void) time (&time_now);
     2372              time_saved = 0;
     2373
    23582374              if (failerr == 0)
    23592375                {
     
    23642380                }
    23652381            }
     2382        end:
     2383          ; /* 'label at end of compound statement' */
    23662384        }
    23672385    }
Note: See TracChangeset for help on using the changeset viewer.