anchor.diff:  
   
   now_ms({MegaSecs,Secs,MicroSecs}) ->
  -	(MegaSecs*1000000 + Secs)*1000 + (MicroSecs / 1000).
  +    (MegaSecs*1000000 + Secs)*1000 + (MicroSecs / 1000).
  +
  +start_idle_timer() ->
  +    MaxIdle = logplex_app:config(tcp_syslog_idle_timeout, timer:minutes(5)),
  +    Fuzz = random:uniform(logplex_app:config(tcp_syslog_idle_fuzz, 15000)),
  +    erlang:start_timer(MaxIdle + Fuzz, self(), ?IDLE_TIMEOUT_MSG).
   
   close_if_idle(State = #state{sock = Sock, last_good_time = LastGood}) ->
       MaxIdle = logplex_app:config(tcp_syslog_idle_timeout, timer:minutes(5)),
  
positive.code:             gen_tcp:close(Sock),
              closed;
          _ ->
              erlang:start_timer(MaxIdle, self(), ?IDLE_TIMEOUT_MSG),
              ok
      end.
  
  
negative.code:                                    send_tref = undefined,
                                     buf = maybe_resize(Buf),
                                     connect_time=os:timestamp()},
              start_idle_timer(),
              send(NewState);
          {error, Reason} ->
              NewState = tcp_bad(State),
  