Fix various compile warnings
[splice.git] / splice-test4s.c
CommitLineData
d8525fbd
JA
1#include <errno.h>
2#include <fcntl.h>
3#include <netinet/in.h>
4#include <signal.h>
5#include <stdio.h>
6#include <stdlib.h>
7#include <sys/sendfile.h>
8#include <sys/socket.h>
9#include <sys/time.h>
10#include <sys/types.h>
11#include <unistd.h>
12
13static int error(const char *n)
14{
15 perror(n);
16 return -1;
17}
18
19static int parent(int listen_sk)
20{
21 unsigned long received;
22 struct sockaddr addr;
23 unsigned int len = sizeof(addr);
24 int sk;
25
26again:
27 sk = accept(listen_sk, &addr, &len);
28 if (sk < 0)
29 return error("accept");
30
31 /* read forever */
32 received = 0;
33 for (;;) {
34 int ret = recv(sk, NULL, 128*1024*1024, MSG_TRUNC);
35 if (ret > 0) {
36 received += ret;
37 continue;
38 }
39 if (!ret)
40 break;
41 if (errno == EAGAIN || errno == EINTR)
42 continue;
43 break;
44 }
45
46 printf("Received %f MB of data\n", (double) received / (1024*1024));
47 close(sk);
48 goto again;
49}
50
000b72a8 51int main(__attribute__((__unused__)) int argc, __attribute__((__unused__)) char **argv)
d8525fbd 52{
d8525fbd 53 struct sockaddr_in saddr_in;
000b72a8
JA
54 struct sockaddr addr;
55 unsigned int len;
56 int sk;
d8525fbd
JA
57
58 signal(SIGCHLD, SIG_IGN);
59 sk = socket(PF_INET, SOCK_STREAM, 0);
60 if (sk < 0) {
61 perror("socket");
62 exit(1);
63 }
64 saddr_in.sin_addr.s_addr = htonl(INADDR_ANY);
65 saddr_in.sin_port = htons(1111);
66
67 if (bind(sk, (struct sockaddr*)&saddr_in, sizeof(saddr_in)) < 0) {
68 fprintf(stderr,"bind failed\n");
69 exit(1);
70 }
71
72 if (listen(sk, 1) < 0) {
73 perror("listen");
74 exit(1);
75 }
76 len = sizeof(addr);
77 if (getsockname(sk, &addr, &len) < 0) {
78 perror("getsockname");
79 exit(1);
80 }
81 return parent(sk);
82}