-/* ClientSocket.c - NeonServ v5.1
+/* ClientSocket.c - NeonServ v5.2
* Copyright (C) 2011 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
#include "IRCParser.h"
#include "UserNode.h"
#include "IRCQueue.h"
+#include "WHOHandler.h"
struct socket_list {
struct ClientSocket *data;
client->botid = 0;
client->clientid = 0;
client->queue = NULL;
+ client->whoqueue_first = NULL;
+ client->whoqueue_last = NULL;
client->next = sockets->data;
sockets->data = client;
return client;
}
client->sock = sock;
- client->flags |= SOCKET_FLAG_CONNECTED;
+ client->flags |= SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT;
client->connection_time = time(0);
//send the IRC Headers
}
client->sock = sock;
- client->flags |= SOCKET_FLAG_CONNECTED;
+ client->flags |= SOCKET_FLAG_CONNECTED | SOCKET_FLAG_RECONNECT;
client->connection_time = time(0);
//send the IRC Headers
char sendBuf[512];
int len;
- if(client->pass) {
+ if(client->pass && strcmp(client->pass, "")) {
len = sprintf(sendBuf, "PASS :%s\n", client->pass);
write_socket(client, sendBuf, len);
}
}
if(client->queue)
queue_destroy(client);
+ if(client->whoqueue_first)
+ clear_whoqueue(client);
free(client->host);
free(client->pass);
free(client);
sock->bufferpos -= used;
}
}
+ } else if(!(sock->flags & SOCKET_FLAG_CONNECTED) && (sock->flags & SOCKET_FLAG_RECONNECT)) {
+ if(time(0) - sock->connection_time >= SOCKET_RECONNECT_TIME) {
+ connect_socket(sock);
+ }
}
}
}