Support numeric 908

This commit is contained in:
TingPing 2014-01-12 07:10:26 -05:00
parent a817072e6f
commit 0f0dabdcf4
2 changed files with 32 additions and 20 deletions

View File

@ -1830,23 +1830,16 @@ static const char *sasl_mechanisms[] =
}; };
void void
inbound_sasl_authenticate (server *serv, char *data) inbound_sasl_supportedmechs (server *serv, char *list)
{ {
ircnet *net = (ircnet*)serv->network;
char *user, *pass = NULL;
const char *mech = sasl_mechanisms[serv->sasl_mech];
int i; int i;
/* Got a list of supported mechanisms */ if (serv->sasl_mech != MECH_EXTERNAL)
if (strchr (data, ',') != NULL)
{ {
if (serv->sasl_mech == MECH_EXTERNAL)
goto sasl_abort;
/* Use most secure one supported */ /* Use most secure one supported */
for (i = MECH_AES; i >= MECH_PLAIN; i--) for (i = MECH_AES; i >= MECH_PLAIN; i--)
{ {
if (strstr (data, sasl_mechanisms[i]) != NULL) if (strstr (list, sasl_mechanisms[i]) != NULL)
{ {
serv->sasl_mech = i; serv->sasl_mech = i;
serv->retry_sasl = TRUE; serv->retry_sasl = TRUE;
@ -1854,9 +1847,26 @@ inbound_sasl_authenticate (server *serv, char *data)
return; return;
} }
} }
}
/* Nothing we support */ /* Abort, none supported */
goto sasl_abort; serv->sent_saslauth = TRUE;
tcp_sendf (serv, "AUTHENTICATE *\r\n");
return;
}
void
inbound_sasl_authenticate (server *serv, char *data)
{
ircnet *net = (ircnet*)serv->network;
char *user, *pass = NULL;
const char *mech = sasl_mechanisms[serv->sasl_mech];
/* Got a list of supported mechanisms from inspircd */
if (strchr (data, ',') != NULL)
{
inbound_sasl_supportedmechs (serv, data);
return;
} }
if (net->user && !(net->flags & FLAG_USE_GLOBAL)) if (net->user && !(net->flags & FLAG_USE_GLOBAL))
@ -1882,7 +1892,6 @@ inbound_sasl_authenticate (server *serv, char *data)
#endif #endif
} }
sasl_abort:
if (pass == NULL) if (pass == NULL)
{ {
/* something went wrong abort */ /* something went wrong abort */

View File

@ -968,6 +968,9 @@ process_numeric (session * sess, int n,
tcp_send_len (serv, "CAP END\r\n", 9); tcp_send_len (serv, "CAP END\r\n", 9);
} }
break; break;
case 908: /* Supported SASL Mechs */
inbound_sasl_supportedmechs (serv, word_eol[3]+1);
break;
default: default: