Changeset - d7ffa366e13b
[Not reviewed]
0 1 0
Thomas Riccardi - 7 years ago 2018-08-26 08:25:24
riccardi.thomas@gmail.com
libcommuni IRC backend: support multi-lines messages

... by splitting them into one PRIVMSG command per line.
1 file changed with 10 insertions and 1 deletions:
0 comments (0 inline, 0 general)
backends/libcommuni/ircnetworkplugin.cpp
Show inline comments
 
@@ -205,13 +205,22 @@ void IRCNetworkPlugin::handleMessageSendRequest(const std::string &user, const s
 
	}
 
	else if (message.find("/whois") == 0 || message.find(".whois") == 0) {
 
		m_sessions[session]->sendWhoisCommand(target, message.substr(7));
 
		return;
 
	}
 
	else {
 
		m_sessions[session]->sendCommand(IrcCommand::createMessage(FROM_UTF8(target), FROM_UTF8(message)));
 
		// IRC does not support newlines in messages, so we split the message into multiple Message commands
 
		std::size_t cur = 0;
 
		while (cur != std::string::npos) {
 
			if (message[cur] == '\n') {
 
				cur++;
 
			}
 
			std::size_t end = message.find('\n', cur);
 
			m_sessions[session]->sendCommand(IrcCommand::createMessage(FROM_UTF8(target), FROM_UTF8(message.substr(cur, end - cur))));
 
			cur = end;
 
		}
 
	}
 

	
 
	if (target.find("#") == 0) {
 
		handleMessage(user, legacyName, message, TO_UTF8(m_sessions[session]->nickName()));
 
	}
 
}
0 comments (0 inline, 0 general)