summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Bratch <luke@bratch.co.uk>2019-05-18 19:17:52 +0100
committerLuke Bratch <luke@bratch.co.uk>2019-05-18 19:17:52 +0100
commitc47b5a1531fe0e2a3b00c4a5ec80a4dc4cbe2428 (patch)
tree5cd2b408abf6eb1a9275ae83ec7854e861c9969c
parentbff1674c746edc0b71b022a8d48f739d76b89641 (diff)
Tell clients to go away if we're not registered with the real server yet.
-rw-r--r--blabouncer.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/blabouncer.c b/blabouncer.c
index 287176b..0eb2519 100644
--- a/blabouncer.c
+++ b/blabouncer.c
@@ -1,6 +1,4 @@
// TODO:
-// - FIGURE OUT WHEN WE'RE REGISTERED (NICK and USER from user are replied to with commands 001, 002, 003, and 004 from the ircd when registration successful)
-// - int registered = 0; already created to track when this has happened (assuming still want to do it this way)
// - handle nick in use
// - Might need to change channel struct nicks to be channel struct user struct with its own nick/modes/etc.
// - Do we actually need to store the modes in the channel struct?
@@ -996,6 +994,13 @@ int processircmessage(SSL *server_ssl, char *str, int source, struct client *cli
// Somewhere to store the several strings we will need to build and send
char outgoingmsg[MAXDATASIZE]; // String to send to client
+ // Tell the client to go away if we aren't registered with the real server yet as defined by the last greeting not being set yet
+ if (!strlen(ircdstrings->greeting004)) {
+ sendtoclient(sourcefd, "Sorry, we aren't registered with a real IRC server yet.", clients, settings);
+ disconnectclient(sourcefd, clients, ircdstrings, settings);
+ return 1;
+ }
+
// Send IRC greeting strings (001/RPL_WELCOME, 002/RPL_YOURHOST, 003/RPL_CREATED, 004/RPL_MYINFO) to client
snprintf(outgoingmsg, MAXDATASIZE, "%s", ircdstrings->greeting001);
sendtoclient(sourcefd, outgoingmsg, clients, settings);
@@ -1474,9 +1479,6 @@ void dochat(int *serversockfd, int *clientsockfd, struct settings *settings) {
// <=============================================
// Initialise IRC connecting/registration state
- // Registered with the IRCd yet?
-////////////// int registered = 0;
-
// Struct of various strings from and for the real IRCd (such as the greeting strings, the real IRCd's name,
// our nick!user@host string, our nick, username, real name, etc.)
struct ircdstrings ircdstrings;