diff --git a/ircd/s_misc.c b/ircd/s_misc.c index 4ce256a9..95ec9584 100644 --- a/ircd/s_misc.c +++ b/ircd/s_misc.c @@ -756,8 +756,10 @@ static void exit_one_client(aClient *cptr, aClient *sptr, aClient *from, } #ifdef USE_SERVICES check_services_butone(SERVICE_WANT_SQUIT, sptr->serv, sptr, - ":%s SQUIT %s :%s", from->name, - sptr->name, comment); + ":%s SQUIT %s :%s", + sptr->serv->up->serv->sid, + sptr->serv->sid, + comment); #endif del_from_sid_hash_table(sptr->serv); remove_server_from_tree(sptr); diff --git a/ircd/s_serv.c b/ircd/s_serv.c index 6de4ab23..e242725c 100644 --- a/ircd/s_serv.c +++ b/ircd/s_serv.c @@ -546,7 +546,16 @@ int m_smask(aClient *cptr, aClient *sptr, int parc, char *parv[]) add_to_sid_hash_table(parv[1], acptr); add_server_to_tree(acptr); - +#ifdef USE_SERVICES + check_services_butone(SERVICE_WANT_SERVER, acptr->serv, acptr, + ":%s SERVER %s %d %s %s :%s", + acptr->serv->up->serv->sid, + acptr->name, + acptr->hopcount + 1, + acptr->serv->sid, + acptr->serv->verstr, + acptr->info); +#endif /* And introduce the server to others. */ introduce_server(cptr, acptr); @@ -804,9 +813,13 @@ int m_server(aClient *cptr, aClient *sptr, int parc, char *parv[]) introduce_server(cptr, acptr); #ifdef USE_SERVICES check_services_butone(SERVICE_WANT_SERVER, acptr->serv, acptr, - ":%s SERVER %s %d %s :%s", parv[0], - acptr->name, hop+1, acptr->serv->sid, - acptr->info); + ":%s SERVER %s %d %s %s :%s", + acptr->serv->up->serv->sid, + acptr->name, + hop + 1, + acptr->serv->sid, + acptr->serv->verstr, + acptr->info); #endif sendto_flag(SCH_SERVER, "Received SERVER %s from %s (%d %s)", acptr->name, parv[0], hop+1, acptr->info); @@ -1219,8 +1232,13 @@ int m_server_estab(aClient *cptr, char *sid, char *versionbuf) add_fd(cptr->fd, &fdas); #ifdef USE_SERVICES check_services_butone(SERVICE_WANT_SERVER, cptr->serv, cptr, - ":%s SERVER %s %d %s :%s", ME, cptr->name, - cptr->hopcount+1, cptr->serv->sid, cptr->info); + ":%s SERVER %s %d %s %s :%s", + cptr->serv->up->serv->sid, + cptr->name, + cptr->hopcount + 1, + cptr->serv->sid, + cptr->serv->verstr, + cptr->info); #endif sendto_flag(SCH_SERVER, "Received SERVER %s from %s (%d %s)", cptr->name, ME, 1, cptr->info); diff --git a/ircd/s_service.c b/ircd/s_service.c index 83ee19b2..b5cf2d6b 100644 --- a/ircd/s_service.c +++ b/ircd/s_service.c @@ -197,15 +197,16 @@ static void sendnum_toone(aClient *cptr, int wants, aClient *sptr, umode = "+"; if ((wants & SERVICE_WANT_UID) && sptr->user) - sendto_one(cptr, ":%s UNICK %s %s %s %s %s %s :%s", - sptr->user->servp->sid, - (wants & SERVICE_WANT_NICK) ? sptr->name : ".", - sptr->uid, - (wants & SERVICE_WANT_USER) ? sptr->user->username : ".", - (wants & SERVICE_WANT_USER) ? sptr->user->host : ".", - (wants & SERVICE_WANT_USER) ? get_client_ip(sptr) : ".", - (wants & (SERVICE_WANT_UMODE|SERVICE_WANT_OPER)) ? umode : "+", - (wants & SERVICE_WANT_USER) ? sptr->info : ""); + sendto_one(cptr, ":%s UNICK %s %s %s %s %s %s %s :%s", + sptr->user->servp->sid, + (wants & SERVICE_WANT_NICK) ? sptr->name : ".", + sptr->uid, + (wants & SERVICE_WANT_USER) ? sptr->user->username : ".", + (wants & SERVICE_WANT_USER) ? sptr->user->host : ".", + (wants & SERVICE_WANT_USER) ? get_client_ip(sptr) : ".", + (wants & (SERVICE_WANT_UMODE | SERVICE_WANT_OPER)) ? umode : "+", + (wants & SERVICE_WANT_USER) ? (IsSASLAuthed(sptr) ? sptr->sasl_user : "*") : "", + (wants & SERVICE_WANT_USER) ? sptr->info : ""); else if (wants & SERVICE_WANT_EXTNICK) /* extended NICK syntax */ @@ -671,12 +672,14 @@ int m_servset(aClient *cptr, aClient *sptr, int parc, char *parv[]) continue; split = (MyConnect(acptr) && mycmp(acptr->name, acptr->sockhost)); - sendto_one(sptr, ":%s SERVER %s %d %s :%s", - acptr->serv->up->name, acptr->name, - acptr->hopcount+1, - acptr->serv->sid, - acptr->info); - } + sendto_one(sptr, ":%s SERVER %s %d %s %s :%s", + acptr->serv->up->serv->sid, + acptr->name, + acptr->hopcount + 1, + acptr->serv->sid, + acptr->serv->verstr, + acptr->info); + } } if (burst & (SERVICE_WANT_NICK|SERVICE_WANT_USER|SERVICE_WANT_SERVICE))