Changeset - 0cabf5f60ce4
[Not reviewed]
0 1 0
vitalyster - 12 years ago 2013-08-19 11:13:10
vitalyster@gmail.com
IRC Backend: fix crash when joining room on some servers
1 file changed with 9 insertions and 7 deletions:
0 comments (0 inline, 0 general)
backends/libcommuni/session.cpp
Show inline comments
 
@@ -113,31 +113,33 @@ void MyIrcSession::on_socketError(QAbstractSocket::SocketError error) {
 
}
 

	
 
void MyIrcSession::on_disconnected() {
 
	if (suffix.empty()) {
 
		np->handleDisconnected(user, 0, "");
 
		np->tryNextServer();
 
	}
 
	m_connected = false;
 
}
 

	
 
bool MyIrcSession::correctNickname(std::string &nickname) {
 
	bool flags = 0;
 
	switch(nickname.at(0)) {
 
		case '@': nickname = nickname.substr(1); flags = 1; break;
 
		case '+': nickname = nickname.substr(1); break;
 
		case '~': nickname = nickname.substr(1); break;
 
		case '&': nickname = nickname.substr(1); break;
 
		case '%': nickname = nickname.substr(1); break;
 
		default: break;
 
	if (!nickname.empty()) { 
 
		switch(nickname.at(0)) {
 
			case '@': nickname = nickname.substr(1); flags = 1; break;
 
			case '+': nickname = nickname.substr(1); break;
 
			case '~': nickname = nickname.substr(1); break;
 
			case '&': nickname = nickname.substr(1); break;
 
			case '%': nickname = nickname.substr(1); break;
 
			default: break;
 
		}
 
	}
 
	return flags;
 
}
 

	
 
void MyIrcSession::on_joined(IrcMessage *message) {
 
	IrcJoinMessage *m = (IrcJoinMessage *) message;
 
	std::string nickname = TO_UTF8(m->sender().name());
 
	bool op = correctNickname(nickname);
 
	getIRCBuddy(TO_UTF8(m->channel().toLower()), nickname).setOp(op);
 
	np->handleParticipantChanged(user, nickname, TO_UTF8(m->channel().toLower()) + suffix, op, pbnetwork::STATUS_ONLINE);
 
	LOG4CXX_INFO(logger, user << ": " << nickname << " joined " << TO_UTF8(m->channel().toLower()) + suffix);
 
}
0 comments (0 inline, 0 general)