static IRC_CMD(raw_privmsg) {
if(from == NULL || argc < 2) return 0;
+ if(!stricmplen(from, "*status", 7) || !stricmplen(from, "-sBNC", 5)) {
+ #ifdef HAVE_THREADS
+ unsigned int tid = (unsigned int) pthread_self_tid();
+ while(!clientsocket_parseorder_top(tid)) {
+ usleep(1000); //1ms
+ }
+ #endif
+ if(!match("Disconnected from IRC.*", argv[1])) {
+ //ZNC DISCONNECT
+ bot_disconnect(client);
+ return 1;
+ }
+ if(!match("* disconnected from the server.", argv[1])) {
+ //sBNC DISCONNECT
+ bot_disconnect(client);
+ return 1;
+ }
+ }
struct UserNode *user = getUserByMask(from);
if(user == NULL) {
user = createTempUserMask(from);
if(!user) return 0;
user->flags |= USERFLAG_ISTMPUSER;
}
- if(!stricmp(user->nick, "*status") && !match("Disconnected from IRC.*", argv[1])) {
- //ZNC DISCONNECT
- bot_disconnect(client);
- return 1;
- }
- if(!stricmp(user->nick, "-sBNC") && !match("* disconnected from the server.", argv[1])) {
- //sBNC DISCONNECT
- bot_disconnect(client);
- return 1;
- }
if(argv[0][0] == '#') { //Channel message
struct ChanNode *chan = getChanByName(argv[0]);
if(chan && chan->chanbot == client->user) {