diff --git a/src/modules/m_sasl.c b/src/modules/m_sasl.c index db38c65ce..fe63d3154 100644 --- a/src/modules/m_sasl.c +++ b/src/modules/m_sasl.c @@ -238,8 +238,20 @@ CMD_FUNC(m_authenticate) agent_p = find_client(sptr->local->sasl_agent, NULL); if (agent_p == NULL) - sendto_server(NULL, 0, 0, ":%s SASL %s %s S %s", - me.name, SASL_SERVER, encode_puid(sptr), parv[1]); + { + char *addr = BadPtr(sptr->ip) ? "0" : sptr->ip; + char *certfp = moddata_client_get(sptr, "certfp"); + + sendto_server(NULL, 0, 0, ":%s SASL %s %s H %s %s", + me.name, SASL_SERVER, encode_puid(sptr), addr, addr); + + if (certfp) + sendto_server(NULL, 0, 0, ":%s SASL %s %s S %s %s", + me.name, SASL_SERVER, encode_puid(sptr), parv[1], certfp); + else + sendto_server(NULL, 0, 0, ":%s SASL %s %s S %s", + me.name, SASL_SERVER, encode_puid(sptr), parv[1]); + } else sendto_server(NULL, 0, 0, ":%s SASL %s %s C %s", me.name, AGENT_SID(agent_p), encode_puid(sptr), parv[1]);