void Module::OnMode(userrec* user, void* dest, int target_type, std::string text) { };
Version Module::GetVersion() { return Version(1,0,0,0,VF_VENDOR); }
void Module::OnOper(userrec* user, std::string opertype) { };
+void Module::OnPostOper(userrec* user, std::string opertype) { };
void Module::OnInfo(userrec* user) { };
void Module::OnWhois(userrec* source, userrec* dest) { };
int Module::OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel) { return 0; };
-int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text) { return 0; };
-int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text) { return 0; };
+int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text,char status) { return 0; };
+int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text,char status) { return 0; };
int Module::OnUserPreNick(userrec* user, std::string newnick) { return 0; };
void Module::OnUserPostNick(userrec* user, std::string oldnick) { };
int Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; };
int Module::OnRawSocketWrite(int fd, char* buffer, int count) { return 0; };
void Module::OnRawSocketClose(int fd) { };
int Module::OnRawSocketRead(int fd, char* buffer, unsigned int count, int &readresult) { return 0; };
-void Module::OnUserMessage(userrec* user, void* dest, int target_type, std::string text) { };
-void Module::OnUserNotice(userrec* user, void* dest, int target_type, std::string text) { };
+void Module::OnUserMessage(userrec* user, void* dest, int target_type, std::string text, char status) { };
+void Module::OnUserNotice(userrec* user, void* dest, int target_type, std::string text, char status) { };
void Module::OnRemoteKill(userrec* source, userrec* dest, std::string reason) { };
void Module::OnUserInvite(userrec* source,userrec* dest,chanrec* channel) { };
void Module::OnPostLocalTopicChange(userrec* user, chanrec* chan, std::string topic) { };
void Module::ProtoSendMode(void* opaque, int target_type, void* target, std::string modeline) { };
void Module::OnSyncChannelMetaData(chanrec* chan, Module* proto,void* opaque, std::string extname) { };
void Module::OnSyncUserMetaData(userrec* user, Module* proto,void* opaque, std::string extname) { };
+void Module::OnSyncOtherMetaData(Module* proto, void* opaque) { };
void Module::OnDecodeMetaData(int target_type, void* target, std::string extname, std::string extdata) { };
void Module::ProtoSendMetaData(void* opaque, int target_type, void* target, std::string extname, std::string extdata) { };
void Module::OnWallops(userrec* user, std::string text) { };
void Module::Implements(char* Implements) { for (int j = 0; j < 255; j++) Implements[j] = 0; };
void Module::OnChannelDelete(chanrec* chan) { };
Priority Module::Prioritize() { return PRIORITY_DONTCARE; }
+void Module::OnSetAway(userrec* user) { };
+void Module::OnCancelAway(userrec* user) { };
/* server is a wrapper class that provides methods to all of the C-style
* exports in the core
}
else
{
- ChanExceptSender_NoFormat(Channel,User,s.c_str());
+ ChanExceptSender_NoFormat(Channel,User,0,s.c_str());
}
}
alive->fd = FD_MAGIC_NUMBER;
alive->FlushWriteBuf();
alive->ClearBuffer();
- Write(zombie->fd,":%s!%s@%s NICK %s",alive->nick,alive->ident,alive->host,zombie->nick);
+ // save these for later
+ std::string oldnick = alive->nick;
+ std::string oldhost = alive->host;
+ std::string oldident = alive->ident;
kill_link(alive,message.c_str());
-
if (find(local_users.begin(),local_users.end(),alive) != local_users.end())
{
local_users.erase(find(local_users.begin(),local_users.end(),alive));
log(DEBUG,"Delete local user");
}
-
+ // Fix by brain - cant write the user until their fd table entry is updated
fd_ref_table[zombie->fd] = zombie;
+ Write(zombie->fd,":%s!%s@%s NICK %s",oldnick.c_str(),oldident.c_str(),oldhost.c_str(),zombie->nick);
for (unsigned int i = 0; i < zombie->chans.size(); i++)
{
if (zombie->chans[i].channel != NULL)