#ifndef CCAN_OSERVER_H
#define CCAN_OSERVER_H
-#include <ccan/compiler/compiler.h>
+#include <stdbool.h>
/**
* oserver_setup - get a listening filedescriptor for an oserver
- *
- * Opens a socket and binds it to OSERVER_PORT, then sets it up to listen
+ * @port: port to use (usually OSERVER_PORT)
+ * Opens a socket and binds it to @port, then sets it up to listen
* for connections and returns it.
*
* Example:
* int serverfd;
*
- * serverfd = oserver_setup();
+ * serverfd = oserver_setup(OSERVER_PORT);
* if (serverfd < 0)
* err(1, "Failed to set up server");
*/
-int oserver_setup(void);
+int oserver_setup(unsigned short port);
/**
* oserver_serve - serve an oserver client via a file descriptor
* @fd: the file descriptor (usually a connected socket)
*
- * This does not return, but exits with status 0 if served OK.
+ * This returns false (with errno set) on failure.
*
* Example:
* #include <sys/types.h>
* if (clientfd < 0)
* err(1, "Accepting connection from client");
* if (fork() == 0)
- * oserver_serve(clientfd);
+ * exit(oserver_serve(clientfd) ? 0 : 1);
* else
* close(clientfd);
*/
-void NORETURN oserver_serve(int fd);
+bool oserver_serve(int fd);
#define OSERVER_PORT 2727
#endif /* CCAN_OSERVER_H */