summary refs log tree commit diff
path: root/bounce.c
diff options
context:
space:
mode:
Diffstat (limited to 'bounce.c')
-rw-r--r--bounce.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/bounce.c b/bounce.c
index ff99b91..07ed4ae 100644
--- a/bounce.c
+++ b/bounce.c
@@ -43,6 +43,7 @@ static void loopAdd(int fd, struct Client *client) {
 
 	loop.fds[loop.len].fd = fd;
 	loop.fds[loop.len].events = POLLIN;
+	loop.fds[loop.len].revents = 0;
 	loop.clients[loop.len] = client;
 	loop.len++;
 }
@@ -64,7 +65,6 @@ static char *censor(char *arg) {
 int main(int argc, char *argv[]) {
 	const char *localHost = "localhost";
 	const char *localPort = "6697";
-	const char *localPass = NULL;
 	char certPath[PATH_MAX] = "";
 	char privPath[PATH_MAX] = "";
 
@@ -84,7 +84,7 @@ int main(int argc, char *argv[]) {
 			break; case 'H': localHost = optarg;
 			break; case 'K': strlcpy(privPath, optarg, sizeof(privPath));
 			break; case 'P': localPort = optarg;
-			break; case 'W': localPass = censor(optarg);
+			break; case 'W': clientPass = censor(optarg);
 			break; case 'a': auth = censor(optarg);
 			break; case 'h': host = optarg;
 			break; case 'j': join = optarg;
@@ -138,17 +138,22 @@ int main(int argc, char *argv[]) {
 		for (size_t i = 0; i < loop.len; ++i) {
 			if (!loop.fds[i].revents) continue;
 			if (i < bindLen) {
-				struct Client *client = clientAlloc();
-				loopAdd(listenAccept(&client->tls, loop.fds[i].fd), client);
+				struct tls *tls;
+				int fd = listenAccept(&tls, loop.fds[i].fd);
+				loopAdd(fd, clientAlloc(tls));
 			} else if (!loop.clients[i]) {
 				serverRecv();
-			} else if (loop.fds[i].revents & POLLERR) {
-				close(loop.fds[i].fd);
-				clientFree(loop.clients[i]);
-				loopRemove(i);
 			} else {
-				clientRecv(loop.clients[i]);
+				struct Client *client = loop.clients[i];
+				if (loop.fds[i].revents & POLLIN) clientRecv(client);
+				if (loop.fds[i].revents & ~POLLIN || clientClose(client)) {
+					clientFree(client);
+					close(loop.fds[i].fd);
+					loopRemove(i);
+					break;
+				}
 			}
 		}
 	}
+	err(EX_IOERR, "poll");
 }
mmit/contrib/palaver/notify.c?h=2.3&id=457e4661d8c96d14382aebf6943294b5c1a83ffd&follow=1'>contrib/palaver: Use open_memstream instead of fmemopenJune McEnroe Somehow I never knew about this function. Much better than fmemopen with mode "w". 2020-10-11Handle signals before the main loopJune McEnroe This is a long-standing issue I ignored. 2020-09-09Fix possibliy uninitialized error 2.0June McEnroe It won't be, but gcc thinks it might. 2020-08-31Refactor reserialization and client self-producingJune McEnroe 2020-08-30Add chmod+chown to certbot exampleJune McEnroe 2020-08-30Rearrange bounce.c, move non-main mains below mainJune McEnroe 2020-08-30Sandbox pounce with unveil(2)June McEnroe 2020-08-28Refactor certificate loading and load all certs from config pathsJune McEnroe 2020-08-27Sandbox pounce with pledge(2)June McEnroe unveil(2) is a bit complicated to apply to this, I'll have to think about it more. 2020-08-27Sandbox calico with pledge(2) and unveil(2)June McEnroe 2020-08-27Add support for OpenBSDJune McEnroe 2020-08-27Remove rc scriptsJune McEnroe 2020-08-27contrib/palaver: Fix documented database pathJune McEnroe 2020-08-27contrib/palaver: Remove rc scriptJune McEnroe 2020-08-27contrib/palaver: Fix database search and creationJune McEnroe 2020-08-27contrib/palaver: Use pounce's XDG directoryJune McEnroe 2020-08-27contrib/palaver: Only allow HTTPSJune McEnroe 2020-08-25Support the pounce_env rc variableJune McEnroe 2020-08-25Remove deprecated option namesJune McEnroe The next release will be 2.0 so these can be removed now. 2020-08-25Document configuration and data file searchJune McEnroe 2020-08-24Use dataOpen for save fileJune McEnroe 2020-08-24Use configOpen to load localCAJune McEnroe 2020-08-24Use configPath to load client cert/privJune McEnroe 2020-08-24Use configOpen in getopt_configJune McEnroe 2020-08-24Import xdg.c from catgirlJune McEnroe 2020-08-23Replace “RAND_bytes” by “getentropy”Issam E. Maghni This removes the dependency on libcrypto. Signed-off-by: Issam E. Maghni <issam.e.maghni@mailbox.org> 2020-08-16contrib/palaver: Add no message preview flagsJune McEnroe 2020-08-13contrib/palaver: Don't set channel for PMsJune McEnroe 2020-08-13Fix unintended interception of NICK after registrationJune McEnroe Another bug caused by trying to support broken clients. I'm annoyed. 2020-08-12Add Additional Components section to READMEJune McEnroe 2020-08-12Document -L / palaver optionJune McEnroe 2020-08-11contrib/palaver: Document service configurationJune McEnroe 2020-08-11contrib/palaver: Add install target and rc scriptJune McEnroe 2020-08-11contrib/palaver: Implement command and notificationsJune McEnroe