ref: 50bc9f2c47441facf926715dca4e73da381d6a5d
parent: 2b69733d8c24af32a3e89fcf587e6a7409d179d6
author: Michael Misch <michaelmisch1985@gmail.com>
date: Thu Feb 19 02:22:44 EST 2026
Get IRC mostly there
--- a/convS2C.c
+++ b/convS2C.c
@@ -27,6 +27,7 @@
s.fn = (*parse_cmd);
s.cmd.type = ErrorCmd;
+ s.cmd.data = "";
s.base = c;
s.size = n;
for(;;){--- a/service.c
+++ b/service.c
@@ -425,10 +425,15 @@
respond(r, "not implemented yet");
goto Out;
}
+ if(!cmd.data){+ respond(r, "expected data");
+ goto Out;
+ }
if(b = bufferSearch(f->svc->base, cmd.buffer)) {qlock(&b->l);
switch(cmd.type){case FeedCmd:
+
d = dirfstat(b->fd);
pwrite(b->fd, cmd.data, strlen(cmd.data), d->length);
free(d);
@@ -465,7 +470,7 @@
for(i = 0; i < nservice; i++)
if(service[i].ref > 0)
if((bufferSearchTag(service[i].base, r->tag))){- memset(&cmd, 0, CmdSize);
+ memset(&cmd, 0, sizeof(Cmd));
cmd.type = FlushCmd;
send(service[i].cmds, &cmd);
break;
--
⑨