- fix for irc bug when leaving internet lobby too soon

This commit is contained in:
Mark Vejvoda 2012-11-19 20:14:23 +00:00
parent a74295733d
commit 3f82137c03
2 changed files with 11 additions and 0 deletions

View File

@ -74,6 +74,8 @@ protected:
Mutex mutexIRCCB;
IRCCallbackInterface *callbackObj;
bool wantToLeaveChannel;
public:
IRCThread(const std::vector<string> &argv,IRCCallbackInterface *callbackObj);
@ -81,6 +83,8 @@ public:
virtual void signalQuit();
virtual bool shutdownAndWait();
bool getWantToLeaveChannel() const { return wantToLeaveChannel; }
void SendIRCCmdMessage(string target, string msg);
std::vector<string> getNickList();
bool isConnected();

View File

@ -159,6 +159,10 @@ void event_join(irc_session_t * session, const char * event, const char * origin
nickList.push_back(realNick);
}
}
if(ctx->getWantToLeaveChannel() == true) {
ctx->leaveChannel();
}
}
}
@ -456,6 +460,7 @@ IRCThread::IRCThread(const std::vector<string> &argv, IRCCallbackInterface *call
eventDataDone = false;
hasJoinedChannel = false;
lastNickListUpdate = time(NULL);
wantToLeaveChannel = false;
}
void IRCThread::signalQuit() {
@ -727,6 +732,7 @@ void IRCThread::connectToHost() {
}
void IRCThread::joinChannel() {
wantToLeaveChannel = false;
connectToHost();
if(ircSession != NULL) {
IRCThread *ctx = (IRCThread *)irc_get_ctx(ircSession);
@ -742,6 +748,7 @@ void IRCThread::joinChannel() {
}
void IRCThread::leaveChannel() {
wantToLeaveChannel = true;
if(ircSession != NULL) {
IRCThread *ctx = (IRCThread *)irc_get_ctx(ircSession);
if(ctx != NULL) {