mirror of
https://github.com/osmarks/ngircd.git
synced 2025-01-31 09:44:44 +00:00
Invite: prefix last argument with colon when necessary.
This commit is contained in:
parent
c63d8fd051
commit
97cc58fb13
@ -130,6 +130,7 @@ IRC_INVITE(CLIENT *Client, REQUEST *Req)
|
|||||||
{
|
{
|
||||||
CHANNEL *chan;
|
CHANNEL *chan;
|
||||||
CLIENT *target, *from;
|
CLIENT *target, *from;
|
||||||
|
const char *colon_if_necessary;
|
||||||
bool remember = false;
|
bool remember = false;
|
||||||
|
|
||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
@ -186,13 +187,23 @@ IRC_INVITE(CLIENT *Client, REQUEST *Req)
|
|||||||
|
|
||||||
LogDebug("User \"%s\" invites \"%s\" to \"%s\" ...", Client_Mask(from), Req->argv[0], Req->argv[1]);
|
LogDebug("User \"%s\" invites \"%s\" to \"%s\" ...", Client_Mask(from), Req->argv[0], Req->argv[1]);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RFC 2812 says:
|
||||||
|
* 'There is no requirement that the channel [..] must exist or be a valid channel'
|
||||||
|
* The problem with this is that this allows the "channel" to contain spaces,
|
||||||
|
* in which case we must prefix its name with a colon to make it clear that
|
||||||
|
* it is only a single argument.
|
||||||
|
*/
|
||||||
|
colon_if_necessary = strchr(Req->argv[1], ' ') ? ":":"";
|
||||||
/* Inform target client */
|
/* Inform target client */
|
||||||
IRC_WriteStrClientPrefix(target, from, "INVITE %s %s", Req->argv[0], Req->argv[1]);
|
IRC_WriteStrClientPrefix(target, from, "INVITE %s %s%s", Req->argv[0],
|
||||||
|
colon_if_necessary, Req->argv[1]);
|
||||||
|
|
||||||
if (Client_Conn(target) > NONE) {
|
if (Client_Conn(target) > NONE) {
|
||||||
/* The target user is local, so we have to send the status code */
|
/* The target user is local, so we have to send the status code */
|
||||||
if (!IRC_WriteStrClientPrefix(from, target, RPL_INVITING_MSG,
|
if (!IRC_WriteStrClientPrefix(from, target, RPL_INVITING_MSG,
|
||||||
Client_ID(from), Req->argv[0], Req->argv[1]))
|
Client_ID(from), Req->argv[0], colon_if_necessary, Req->argv[1]))
|
||||||
return DISCONNECTED;
|
return DISCONNECTED;
|
||||||
|
|
||||||
if (strchr(Client_Modes(target), 'a') &&
|
if (strchr(Client_Modes(target), 'a') &&
|
||||||
|
@ -65,7 +65,7 @@
|
|||||||
#define RPL_NOTOPIC_MSG "331 %s %s :No topic is set"
|
#define RPL_NOTOPIC_MSG "331 %s %s :No topic is set"
|
||||||
#define RPL_TOPIC_MSG "332 %s %s :%s"
|
#define RPL_TOPIC_MSG "332 %s %s :%s"
|
||||||
#define RPL_TOPICSETBY_MSG "333 %s %s %s %u"
|
#define RPL_TOPICSETBY_MSG "333 %s %s %s %u"
|
||||||
#define RPL_INVITING_MSG "341 %s %s %s"
|
#define RPL_INVITING_MSG "341 %s %s %s%s"
|
||||||
#define RPL_INVITELIST_MSG "346 %s %s %s"
|
#define RPL_INVITELIST_MSG "346 %s %s %s"
|
||||||
#define RPL_ENDOFINVITELIST_MSG "347 %s %s :End of channel invite list"
|
#define RPL_ENDOFINVITELIST_MSG "347 %s %s :End of channel invite list"
|
||||||
#define RPL_VERSION_MSG "351 %s %s-%s.%s %s :%s"
|
#define RPL_VERSION_MSG "351 %s %s-%s.%s %s :%s"
|
||||||
|
Loading…
Reference in New Issue
Block a user