X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/b3ebc7ab9e187cbbe55b0085930d41bf4fe740c0..77910830e39250078ffcd590969a8c9fb043db06:/modules/m_trace.c diff --git a/modules/m_trace.c b/modules/m_trace.c index e173d211..f8f6621c 100644 --- a/modules/m_trace.c +++ b/modules/m_trace.c @@ -63,9 +63,10 @@ DECLARE_MODULE_AV1(trace, NULL, NULL, trace_clist, trace_hlist, NULL, "$Revision static void count_downlinks(struct Client *server_p, int *pservcount, int *pusercount); static int report_this_status(struct Client *source_p, struct Client *target_p); +static const char *empty_sockhost = "255.255.255.255"; + /* * m_trace - * parv[0] = sender prefix * parv[1] = servername */ static int @@ -110,7 +111,7 @@ m_trace(struct Client *client_p, struct Client *source_p, int parc, const char * if(ac2ptr == NULL) { - RB_DLINK_FOREACH(ptr, global_client_list.head) + RB_DLINK_FOREACH(ptr, global_serv_list.head) { ac2ptr = ptr->data; @@ -373,31 +374,23 @@ report_this_status(struct Client *source_p, struct Client *target_p) sendto_one_numeric(source_p, RPL_TRACEUNKNOWN, form_str(RPL_TRACEUNKNOWN), class_name, name, ip, - rb_current_time() - target_p->localClient->firsttime); + (unsigned long)(rb_current_time() - target_p->localClient->firsttime)); cnt++; break; case STAT_CLIENT: - /* Only opers see users if there is a wildcard - * but anyone can see all the opers. - */ - if((IsOper(source_p) && - (MyClient(source_p) || !(dow && IsInvisible(target_p)))) - || !dow || IsOper(target_p) || (source_p == target_p)) - { - int tnumeric = RPL_TRACEUSER; - if(IsOper(target_p)) - tnumeric = RPL_TRACEOPERATOR; - - sendto_one_numeric(source_p, tnumeric, form_str(tnumeric), - class_name, name, - show_ip(source_p, target_p) ? ip : empty_sockhost, - rb_current_time() - target_p->localClient->lasttime, - rb_current_time() - target_p->localClient->last); - cnt++; - } - break; + { + sendto_one_numeric(source_p, + IsOper(target_p) ? RPL_TRACEOPERATOR : RPL_TRACEUSER, + IsOper(target_p) ? form_str(RPL_TRACEOPERATOR) : form_str(RPL_TRACEUSER), + class_name, name, + show_ip(source_p, target_p) ? ip : empty_sockhost, + (unsigned long)(rb_current_time() - target_p->localClient->lasttime), + (unsigned long)(rb_current_time() - target_p->localClient->last)); + cnt++; + } + break; case STAT_SERVER: { @@ -409,7 +402,8 @@ report_this_status(struct Client *source_p, struct Client *target_p) sendto_one_numeric(source_p, RPL_TRACESERVER, form_str(RPL_TRACESERVER), class_name, servcount, usercount, name, *(target_p->serv->by) ? target_p->serv->by : "*", "*", - me.name, rb_current_time() - target_p->localClient->lasttime); + me.name, + (unsigned long)(rb_current_time() - target_p->localClient->lasttime)); cnt++; } @@ -417,8 +411,7 @@ report_this_status(struct Client *source_p, struct Client *target_p) default: /* ...we actually shouldn't come here... --msa */ sendto_one_numeric(source_p, RPL_TRACENEWTYPE, - form_str(RPL_TRACENEWTYPE), - me.name, source_p->name, name); + form_str(RPL_TRACENEWTYPE), name); cnt++; break; }