From: pk910 Date: Sat, 12 Nov 2011 20:55:00 +0000 (+0100) Subject: fixed bot user handling (bot should only have a user when connected) X-Git-Tag: v5.3~180 X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=commitdiff_plain;h=738a1d74c36874c258742239133ccd5e62131576 fixed bot user handling (bot should only have a user when connected) --- diff --git a/src/ClientSocket.c b/src/ClientSocket.c index b76e6f6..1a3d949 100644 --- a/src/ClientSocket.c +++ b/src/ClientSocket.c @@ -42,7 +42,7 @@ static void init_sockets() { sockets->count = 0; } -struct ClientSocket* create_socket(char *host, int port, char *pass, struct UserNode *user) { +struct ClientSocket* create_socket(char *host, int port, char *pass, char *nick, char *ident, char *realname) { if(sockets == NULL) init_sockets(); struct ClientSocket *client = malloc(sizeof(*client)); if (!client) @@ -54,7 +54,10 @@ struct ClientSocket* create_socket(char *host, int port, char *pass, struct User client->port = port; printf("Connect: %s:%d\n", client->host, client->port); client->pass = (pass == NULL ? NULL : strdup(pass)); - client->user = user; + client->nick = strdup(nick); + client->ident = strdup(ident); + client->realname = strdup(realname); + client->user = NULL; client->flags = 0; client->bufferpos = 0; client->traffic_in = 0; @@ -115,9 +118,9 @@ int connect_socket(struct ClientSocket *client) { len = sprintf(sendBuf, "PASS :%s\n", client->pass); write_socket(client, sendBuf, len); } - len = sprintf(sendBuf, "USER %s 0 0 :%s\n", client->user->ident, client->user->realname); + len = sprintf(sendBuf, "USER %s 0 0 :%s\n", client->ident, client->realname); write_socket(client, sendBuf, len); - len = sprintf(sendBuf, "NICK %s\n", client->user->nick); + len = sprintf(sendBuf, "NICK %s\n", client->nick); write_socket(client, sendBuf, len); return 1; @@ -168,11 +171,11 @@ int connect_socket(struct ClientSocket *client) { len = sprintf(sendBuf, "PASS :%s\n", client->pass); write_socket(client, sendBuf, len); } - len = sprintf(sendBuf, "USER %s 0 0 :%s\n", client->user->ident, client->user->realname); + len = sprintf(sendBuf, "USER %s 0 0 :%s\n", client->ident, client->realname); write_socket(client, sendBuf, len); - len = sprintf(sendBuf, "NICK %s\n", client->user->nick); + len = sprintf(sendBuf, "NICK %s\n", client->nick); write_socket(client, sendBuf, len); - + return 1; } diff --git a/src/ClientSocket.h b/src/ClientSocket.h index f033450..39d7bb0 100644 --- a/src/ClientSocket.h +++ b/src/ClientSocket.h @@ -39,6 +39,9 @@ struct ClientSocket { char *host; int port; char *pass; + char *nick; + char *ident; + char *realname; struct UserNode *user; unsigned long traffic_in; unsigned long traffic_out; @@ -58,7 +61,7 @@ struct ClientSocket { struct ClientSocket *next; }; -struct ClientSocket* create_socket(char *host, int port, char *pass, struct UserNode *user); +struct ClientSocket* create_socket(char *host, int port, char *pass, char *nick, char *ident, char *realname); int connect_socket(struct ClientSocket *client); int close_socket(struct ClientSocket *client); int write_socket_force(struct ClientSocket *client, char* msg, int len); diff --git a/src/IRCParser.c b/src/IRCParser.c index da752c5..38b02a4 100644 --- a/src/IRCParser.c +++ b/src/IRCParser.c @@ -116,6 +116,8 @@ static USERLIST_CALLBACK(got_channel_userlist) { } static IRC_CMD(raw_001) { + client->user = addUser(argv[0]); + client->user->flags |= USERFLAG_ISBOT; client->flags |= SOCKET_FLAG_READY; event_bot_ready(client); return 1; diff --git a/src/bot_DummyServ.c b/src/bot_DummyServ.c index b618045..9bbdcfe 100644 --- a/src/bot_DummyServ.c +++ b/src/bot_DummyServ.c @@ -65,7 +65,6 @@ static void dummyserv_trigger_callback(struct ChanNode *chan, char *trigger) { } static void start_bots() { - struct UserNode *user; struct ClientSocket *client; MYSQL_RES *res, *res2; MYSQL_ROW row; @@ -74,11 +73,7 @@ static void start_bots() { res = mysql_use(); while ((row = mysql_fetch_row(res)) != NULL) { - user = addUser(row[0]); - strcpy(user->ident, row[1]); - strcpy(user->realname, row[2]); - user->flags |= USERFLAG_ISBOT; - client = create_socket(row[3], atoi(row[4]), row[5], user); + client = create_socket(row[3], atoi(row[4]), row[5], row[0], row[1], row[2]); client->flags |= (strcmp(row[6], "0") ? SOCKET_FLAG_PREFERRED : 0); client->flags |= (strcmp(row[8], "0") ? SOCKET_FLAG_USE_QUEUE : 0); client->botid = BOTID; diff --git a/src/bot_NeonServ.c b/src/bot_NeonServ.c index dbf3acb..3f9fc6e 100644 --- a/src/bot_NeonServ.c +++ b/src/bot_NeonServ.c @@ -405,7 +405,6 @@ static void neonserv_trigger_callback(struct ChanNode *chan, char *trigger) { } static void start_bots() { - struct UserNode *user; struct ClientSocket *client; MYSQL_RES *res, *res2; MYSQL_ROW row; @@ -414,11 +413,7 @@ static void start_bots() { res = mysql_use(); while ((row = mysql_fetch_row(res)) != NULL) { - user = addUser(row[0]); - strcpy(user->ident, row[1]); - strcpy(user->realname, row[2]); - user->flags |= USERFLAG_ISBOT; - client = create_socket(row[3], atoi(row[4]), row[5], user); + client = create_socket(row[3], atoi(row[4]), row[5], row[0], row[1], row[2]); client->flags |= (strcmp(row[6], "0") ? SOCKET_FLAG_PREFERRED : 0); client->flags |= (strcmp(row[8], "0") ? SOCKET_FLAG_USE_QUEUE : 0); client->botid = BOTID; diff --git a/src/bot_NeonSpam.c b/src/bot_NeonSpam.c index 050bc10..33e9cbf 100644 --- a/src/bot_NeonSpam.c +++ b/src/bot_NeonSpam.c @@ -118,7 +118,6 @@ static void neonspam_trigger_callback(struct ChanNode *chan, char *trigger) { } static void start_bots() { - struct UserNode *user; struct ClientSocket *client; MYSQL_RES *res, *res2; MYSQL_ROW row; @@ -127,11 +126,7 @@ static void start_bots() { res = mysql_use(); while ((row = mysql_fetch_row(res)) != NULL) { - user = addUser(row[0]); - strcpy(user->ident, row[1]); - strcpy(user->realname, row[2]); - user->flags |= USERFLAG_ISBOT; - client = create_socket(row[3], atoi(row[4]), row[5], user); + client = create_socket(row[3], atoi(row[4]), row[5], row[0], row[1], row[2]); client->flags |= (strcmp(row[6], "0") ? SOCKET_FLAG_PREFERRED : 0); client->flags |= (strcmp(row[8], "0") ? SOCKET_FLAG_USE_QUEUE : 0); client->botid = BOTID;