X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Foserver%2Foserver.c;h=5f120cbf2bd4342a3ae34cc7ee8a57e74ebc16fa;hb=0b1cb00c4391dee4d633f92c5c42c7a0d4ff4861;hp=5a40ff98cce90c8c96908da83ff497d1bed921d1;hpb=55629c7a4496e0b559f30a8bf33af6cb3888d063;p=ccan-lca-2011.git diff --git a/ccan/oserver/oserver.c b/ccan/oserver/oserver.c index 5a40ff9..5f120cb 100644 --- a/ccan/oserver/oserver.c +++ b/ccan/oserver/oserver.c @@ -10,15 +10,18 @@ #include #include #include +#include -void oserver_serve(int fd) +bool oserver_serve(int fd) { char buf[1024]; unsigned int i; for (i = 0; i < sizeof(buf)-1; i++) { - if (read(fd, &buf[i], 1) != 1) - errx(1, "Client disconnected"); + if (read(fd, &buf[i], 1) != 1) { + errno = EIO; + return false; + } if (buf[i] == '\n' || buf[i] == '\r') break; buf[i] = toupper(buf[i]); @@ -29,8 +32,8 @@ void oserver_serve(int fd) strlen("Louder, like this: '")) || !write_all(fd, buf, i) || !write_all(fd, "'\r\n", strlen("'\r\n"))) - err(1, "Write failed"); - exit(0); + return false; + return true; } int oserver_setup(void)