projects
/
NeonServV5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'development'
[NeonServV5.git]
/
src
/
IRCParser.c
diff --git
a/src/IRCParser.c
b/src/IRCParser.c
index 5010b7f768e2a5fa82783771e1390e69451a96ea..701ad457b54d592ecae6b15c02d9d110916e2a88 100644
(file)
--- a/
src/IRCParser.c
+++ b/
src/IRCParser.c
@@
-481,7
+481,8
@@
static IRC_CMD(raw_kick) {
chanuser->visCount--;
if(chanuser->visCount == 0) {
delChanUser(chanuser, 0); //not free, yet!
chanuser->visCount--;
if(chanuser->visCount == 0) {
delChanUser(chanuser, 0); //not free, yet!
- event_kick(user, chanuser, argv[2]);
+ if(user)
+ event_kick(user, chanuser, argv[2]);
freeChanUser(chanuser);
}
freeChanUser(chanuser);
}
@@
-556,6
+557,7
@@
static IRC_CMD(raw_quit) {
if(user->channel == NULL) {
if(isBot(user)) {
//ASSERT
if(user->channel == NULL) {
if(isBot(user)) {
//ASSERT
+ DESYNCHRONIZE(cache_sync);
return 0;
}
if((user->flags & USERFLAG_WAS_REGISTERING)) {
return 0;
}
if((user->flags & USERFLAG_WAS_REGISTERING)) {
@@
-640,6
+642,7
@@
static IRC_CMD(raw_privmsg) {
if(from == NULL || argc < 2) return 0;
struct UserNode *user = getUserByMask(from);
if(user == NULL) {
if(from == NULL || argc < 2) return 0;
struct UserNode *user = getUserByMask(from);
if(user == NULL) {
+ if(stricmplen(from, "***!", 4) == 0) return 1; /* ZNC Playback */
user = createTempUserMask(from);
if(!user) return 0;
user->flags |= USERFLAG_ISTMPUSER;
user = createTempUserMask(from);
if(!user) return 0;
user->flags |= USERFLAG_ISTMPUSER;
@@
-684,6
+687,7
@@
static IRC_CMD(raw_privmsg) {
}
static IRC_CMD(raw_notice) {
}
static IRC_CMD(raw_notice) {
+ if(from == NULL && argc && !stricmp(argv[0], "AUTH")) return 1; //NOTICE AUTH is NOT a parse error ;)
if(from == NULL || argc < 2) return 0;
struct UserNode *user = getUserByMask(from);
if(user == NULL) {
if(from == NULL || argc < 2) return 0;
struct UserNode *user = getUserByMask(from);
if(user == NULL) {