"CAP REQ" starts capability negotiation and delays user registration
New helper function Set_CAP_Negotiation().
This commit is contained in:
parent
da4c1ebe81
commit
2327b17656
|
@ -40,6 +40,9 @@ bool Handle_CAP_ACK PARAMS((CLIENT *Client, char *Arg));
|
||||||
bool Handle_CAP_CLEAR PARAMS((CLIENT *Client));
|
bool Handle_CAP_CLEAR PARAMS((CLIENT *Client));
|
||||||
bool Handle_CAP_END PARAMS((CLIENT *Client));
|
bool Handle_CAP_END PARAMS((CLIENT *Client));
|
||||||
|
|
||||||
|
void Set_CAP_Negotiation PARAMS((CLIENT *Client));
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handler for the IRCv3 "CAP" command.
|
* Handler for the IRCv3 "CAP" command.
|
||||||
*
|
*
|
||||||
|
@ -96,10 +99,8 @@ Handle_CAP_LS(CLIENT *Client, UNUSED char *Arg)
|
||||||
{
|
{
|
||||||
assert(Client != NULL);
|
assert(Client != NULL);
|
||||||
|
|
||||||
if (Client_Type(Client) != CLIENT_USER)
|
Set_CAP_Negotiation(Client);
|
||||||
Client_CapAdd(Client, CLIENT_CAP_PENDING);
|
|
||||||
|
|
||||||
Client_CapAdd(Client, CLIENT_CAP_SUPPORTED);
|
|
||||||
return IRC_WriteStrClient(Client, "CAP %s LS :", Client_ID(Client));
|
return IRC_WriteStrClient(Client, "CAP %s LS :", Client_ID(Client));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,6 +132,8 @@ Handle_CAP_REQ(CLIENT *Client, char *Arg)
|
||||||
assert(Client != NULL);
|
assert(Client != NULL);
|
||||||
assert(Arg != NULL);
|
assert(Arg != NULL);
|
||||||
|
|
||||||
|
Set_CAP_Negotiation(Client);
|
||||||
|
|
||||||
return IRC_WriteStrClient(Client, "CAP %s NAK :%s",
|
return IRC_WriteStrClient(Client, "CAP %s NAK :%s",
|
||||||
Client_ID(Client), Arg);
|
Client_ID(Client), Arg);
|
||||||
}
|
}
|
||||||
|
@ -189,4 +192,19 @@ Handle_CAP_END(CLIENT *Client)
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set CAP negotiation status and mark client as "supports capabilities".
|
||||||
|
*
|
||||||
|
* @param Client The client to handle.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
Set_CAP_Negotiation(CLIENT *Client)
|
||||||
|
{
|
||||||
|
assert(Client != NULL);
|
||||||
|
|
||||||
|
if (Client_Type(Client) != CLIENT_USER)
|
||||||
|
Client_CapAdd(Client, CLIENT_CAP_PENDING);
|
||||||
|
Client_CapAdd(Client, CLIENT_CAP_SUPPORTED);
|
||||||
|
}
|
||||||
|
|
||||||
/* -eof- */
|
/* -eof- */
|
||||||
|
|
Loading…
Reference in New Issue