- if(IsOper(target_p))
- sendto_one_numeric(source_p, RPL_TRACEOPERATOR,
- form_str(RPL_TRACEOPERATOR),
- class_name, name,
- show_ip(source_p, target_p) ? ip : "255.255.255.255",
- CurrentTime - target_p->localClient->lasttime,
- CurrentTime - target_p->localClient->last);
+ /* fire the doing_trace_show_idle hook to allow modules to tell us whether to show the idle time */
+ hook_data_client_approval hdata_showidle;
+
+ hdata_showidle.client = source_p;
+ hdata_showidle.target = target_p;
+ hdata_showidle.approved = WHOIS_IDLE_SHOW;
+
+ call_hook(doing_trace_show_idle_hook, &hdata_showidle);
+
+ sendto_one_numeric(source_p,
+ SeesOper(target_p, source_p) ? RPL_TRACEOPERATOR : RPL_TRACEUSER,
+ SeesOper(target_p, source_p) ? form_str(RPL_TRACEOPERATOR) : form_str(RPL_TRACEUSER),
+ class_name, name,
+ show_ip(source_p, target_p) ? ip : empty_sockhost,
+ hdata_showidle.approved ? (unsigned long)(rb_current_time() - target_p->localClient->lasttime) : 0,
+ hdata_showidle.approved ? (unsigned long)(rb_current_time() - target_p->localClient->last) : 0);