summaryrefslogtreecommitdiffstats
path: root/nserver/src/necho.c
diff options
context:
space:
mode:
Diffstat (limited to 'nserver/src/necho.c')
-rw-r--r--nserver/src/necho.c64
1 files changed, 0 insertions, 64 deletions
diff --git a/nserver/src/necho.c b/nserver/src/necho.c
deleted file mode 100644
index b08889a..0000000
--- a/nserver/src/necho.c
+++ /dev/null
@@ -1,64 +0,0 @@
-#include <necho.h>
-
-int slurpsock(RingBuffer *buf, int sock)
-{
- ssize_t bytes;
-
- if (RingBuffer_available_data(buf) == 0) {
- buf->start = buf->end = 0;
- }
-
- bytes = recv(sock, RingBuffer_starts_at(buf),
- RingBuffer_available_space(buf), 0);
- check(bytes >= 0, "Failed to read from socket: %d", sock);
-
- RingBuffer_commit_write(buf, bytes);
-
- return bytes;
-
- error:
- return -1;
-}
-
-int barfsock(int sock, RingBuffer *buf, int len)
-{
- int bytes = 0;
-
- bstring data = RingBuffer_get_all(buf);
- check(data != NULL, "barfsock: Failed to get from the buffer.");
-
- bytes = send(sock, bdata(data), len, 0);
- check(bytes >= 0, "barfsock: send failed");
-
- return bytes;
- error:
- return -1;
-}
-
-void echoserve(int sock)
-{
- int rc = 0;
- RingBuffer *buf = RingBuffer_create(1024 * 10);
- ssize_t bytes;
-
- do {
- bytes = slurpsock(buf, sock);
- check(bytes >= 0, "echoserve: slurpsock failed");
-
- if (bytes < 1) {
- break;
- }
-
- rc = barfsock(sock, buf, bytes);
- check(rc != -1, "echoserve: echo failed");
- } while(1);
-
- rc = close(sock);
- check(rc == 0, "echoserve: close failed");
-
- exit(0);
- error:
- rc = close(sock);
- check(rc == 0, "echoserve: close failed");
- exit(1);
-}