summary refs log tree commit diff
path: root/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'client.c')
-rw-r--r--client.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/client.c b/client.c
index 74d1e5c..442ed2d 100644
--- a/client.c
+++ b/client.c
@@ -63,7 +63,7 @@ bool clientClose(const struct Client *client) {
 	return client->close;
 }
 
-static void clientSend(struct Client *client, const char *ptr, size_t len) {
+void clientSend(struct Client *client, const char *ptr, size_t len) {
 	if (verbose) fprintf(stderr, "\x1B[34m%.*s\x1B[m", (int)len, ptr);
 	while (len) {
 		ssize_t ret = tls_write(client->tls, ptr, len);
@@ -89,25 +89,38 @@ static void format(struct Client *client, const char *format, ...) {
 	clientSend(client, buf, len);
 }
 
+static void passRequired(struct Client *client) {
+	format(
+		client,
+		":invalid 464 * :Password incorrect\r\n"
+		"ERROR :Password incorrect\r\n"
+	);
+	client->close = true;
+}
+
 typedef void Handler(struct Client *client, struct Command cmd);
 
 static void handleNick(struct Client *client, struct Command cmd) {
 	(void)cmd;
 	client->need &= ~NeedNick;
+	if (!client->need) stateSync(client);
+	if (client->need == NeedPass) passRequired(client);
 }
 
 static void handleUser(struct Client *client, struct Command cmd) {
 	(void)cmd;
 	// TODO: Identify client by username.
 	client->need &= ~NeedUser;
+	if (!client->need) stateSync(client);
+	if (client->need == NeedPass) passRequired(client);
 }
 
 static void handlePass(struct Client *client, struct Command cmd) {
 	if (!cmd.params[0] || strcmp(clientPass, cmd.params[0])) {
-		format(client, ":invalid 464 * :Password incorrect\r\n");
-		client->close = true;
+		passRequired(client);
 	} else {
 		client->need &= ~NeedPass;
+		if (!client->need) stateSync(client);
 	}
 }
 
er'>2021-02-09Add volume control bindings to cwmJune McEnroe sndioctl is nice and easy. 2021-02-09Use w3m to open other URLsJune McEnroe 2021-02-09Disable mouse mode in xtermJune McEnroe I do not ever want to use this feature. 2021-02-09Add pbcopy, pbpaste, open dispatch scriptsJune McEnroe 2021-02-09Use flags for pbd client behaviourJune McEnroe 2021-02-08Add macOS-like copy and paste to xtermJune McEnroe 2021-02-08Only update clock script every minuteJune McEnroe 2021-02-08Use 4M- for window resizing in cwmJune McEnroe 2021-02-08Tweak trackpad scaling, mouse accelerationJune McEnroe This feels more comfortable. 2021-02-08Use xsel in up and add it do install.shJune McEnroe 2021-02-07Swap root window coloursJune McEnroe 2021-02-07Add -X flag to install X stuff on OpenBSDJune McEnroe 2021-02-07Adjust brightness by smaller incrementsJune McEnroe 2021-02-07Fix cwm window cycling, move big by defaultJune McEnroe 2021-02-07Use class names for Foreground, Background, BorderColorJune McEnroe I'm not really sure what difference this makes, but it seems like the right thing to do to be generic? 2021-02-07Add simple battery status and clock to xsessionJune McEnroe I love how simple this is. 2021-02-07Set cursor theme and sizeJune McEnroe 2021-02-07Use scrot for up -s if no screencaptureJune McEnroe Still missing putting the URL in an X selection. 2021-02-07Enable mouse acceleration in XJune McEnroe 2021-02-07Set colours for Xt and cwmJune McEnroe And increase XTerm internalBorder. 2021-02-07Set urgency on bell in xtermJune McEnroe 2021-02-07Add bindings for brightness controlJune McEnroe Weirdly the Fn key doesn't change how the F row registers... I wonder if I can do something about that. 2021-02-07Set X key repeat rateJune McEnroe 2021-02-07Bump font size to 12June McEnroe 11 is what I use on macOS, but I feel like my eyes are working harder here. 2021-02-07Fully configure and rebind cwmJune McEnroe This is sort of a mix of trying to emulate macOS somewhat for my muscle memory and just rebinding some of the cwm defaults to use 4- rather than M-. 2021-02-07Add BintiJune McEnroe 2021-02-07Finish configuring xtermJune McEnroe 2021-02-06Enable tapping, reverse scroll, set scaling in wsconsctlJune McEnroe 2021-02-06Set root window to black on purple snowJune McEnroe 2021-02-06Add xmodmap configurationJune McEnroe 2021-02-06Add initial OpenBSD X configurationJune McEnroe cwm still needs a lot more rebinding, and I need to actually look at its other options. xterm definitely still needs some configuration, but I at least managed to get it to use a decent looking font. Very happy that OpenBSD includes Luxi Mono, which is what my usual font, Go Mono, is based on anyway. Still missing is xmodmap and such. 2021-02-06Add xterm output to schemeJune McEnroe