annotate utils/tcpserv-dump.c @ 215:67289fac8a44

utils: new program tcpserv-dump
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 24 Jul 2023 21:49:09 -0800
parents utils/sip-udp-dump.c@5995660dcbac
children 6aa2cd650943
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
2 * This debug utility binds to a TCP port specified on the command line,
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
3 * accepts incoming TCP connections and reads any bytes sent by a client
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
4 * on an opened connection - but never sends anything back. A log file
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
5 * is written, recording all received connections and bytes.
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 */
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <sys/types.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <sys/socket.h>
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
10 #include <sys/time.h>
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
11 #include <sys/errno.h>
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include <netinet/in.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include <arpa/inet.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include <stdio.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include <stdlib.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 #include <string.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 #include <strings.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 #include <time.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 #include <unistd.h>
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
21 #define MAXCONN 10
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
22
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
23 static int tcp_port;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
24 static int listener, nconn, conns[MAXCONN], max_fd;
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 static FILE *logf;
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
26 static struct timeval curtime;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
27 static char fmt_time[32];
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 static void
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
30 format_time()
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 {
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
32 struct tm *tm;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
33
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
34 tm = gmtime(&curtime.tv_sec);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
35 sprintf(fmt_time, "%d-%02d-%02dT%02d:%02d:%02dZ",
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
36 tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
37 tm->tm_hour, tm->tm_min, tm->tm_sec);
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 }
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 static void
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
41 handle_accept(newfd, sin)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
42 struct sockaddr_in *sin;
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 {
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
44 fprintf(logf, "\n%s Accept conn from %s:%u fd %d\n", fmt_time,
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
45 inet_ntoa(sin->sin_addr), ntohs(sin->sin_port), newfd);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
46 if (nconn < MAXCONN) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
47 conns[nconn] = newfd;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
48 nconn++;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
49 if (newfd > max_fd)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
50 max_fd = newfd;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
51 } else {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
52 fprintf(logf, "MAXCONN exceeded, closing new fd\n");
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
53 close(newfd);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
54 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
55 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
56
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
57 static int
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
58 handle_conn_fd(fd)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
59 {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
60 u_char buf[512];
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
61 int cc, off, chunk, i, c;
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
63 cc = read(fd, buf, sizeof buf);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
64 fprintf(logf, "\n%s fd %d read %d\n", fmt_time, fd, cc);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
65 if (cc <= 0) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
66 fprintf(logf, "closing fd\n");
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
67 return(1);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
68 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
69 for (off = 0; off < cc; off += chunk) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
70 fprintf(logf, "%04X: ", off);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
71 chunk = cc - off;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
72 if (chunk > 16)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
73 chunk = 16;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
74 for (i = 0; i < 16; i++) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
75 if (i < chunk)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
76 fprintf(logf, "%02X ", buf[off + i]);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
77 else
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
78 fputs(" ", logf);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
79 if (i == 7 || i == 15)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
80 putc(' ', logf);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
81 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
82 for (i = 0; i < chunk; i++) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
83 c = buf[off + i];
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
84 if (c < ' ' || c > '~')
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
85 c = '.';
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
86 putc(c, logf);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
87 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
88 putc('\n', logf);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
89 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
90 return(0);
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 }
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 main(argc, argv)
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 char **argv;
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 {
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
96 int max_fd, rc, i;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
97 struct sockaddr_in sin;
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 socklen_t addrlen;
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
99 fd_set fds;
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
101 if (argc != 3) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
102 fprintf(stderr, "usage: %s port logfile\n", argv[0]);
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 exit(1);
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 }
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
105 tcp_port = atoi(argv[1]);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
106 listener = socket(AF_INET, SOCK_STREAM, 0);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
107 if (listener < 0) {
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 perror("socket");
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 exit(1);
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 }
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 sin.sin_family = AF_INET;
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 sin.sin_addr.s_addr = INADDR_ANY;
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
113 sin.sin_port = htons(tcp_port);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
114 rc = bind(listener, (struct sockaddr *) &sin, sizeof sin);
43
5995660dcbac sip-rx-test, sip-udp-dump: fix bind error handling
Mychaela Falconia <falcon@freecalypso.org>
parents: 18
diff changeset
115 if (rc < 0) {
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 perror("bind");
43
5995660dcbac sip-rx-test, sip-udp-dump: fix bind error handling
Mychaela Falconia <falcon@freecalypso.org>
parents: 18
diff changeset
117 exit(1);
5995660dcbac sip-rx-test, sip-udp-dump: fix bind error handling
Mychaela Falconia <falcon@freecalypso.org>
parents: 18
diff changeset
118 }
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
119 logf = fopen(argv[2], "a");
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
120 if (!logf) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
121 perror(argv[2]);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
122 exit(1);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
123 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
124 rc = listen(listener, 5);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
125 if (rc < 0) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
126 perror("listen");
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
127 exit(1);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
128 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
129 gettimeofday(&curtime, 0);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
130 format_time();
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
131 fprintf(logf, "\n%s Test server started\n", fmt_time);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
132 fflush(logf);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
133 nconn = 0;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
134 max_fd = listener;
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 for (;;) {
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
136 FD_ZERO(&fds);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
137 FD_SET(listener, &fds);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
138 for (i = 0; i < nconn; i++)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
139 FD_SET(conns[i], &fds);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
140 rc = select(max_fd+1, &fds, 0, 0, 0);
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 if (rc < 0) {
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
142 if (errno == EINTR)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
143 continue;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
144 perror("select");
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 exit(1);
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 }
215
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
147 gettimeofday(&curtime, 0);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
148 format_time();
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
149 for (i = 0; i < nconn; ) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
150 if (!FD_ISSET(conns[i], &fds)) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
151 i++;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
152 continue;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
153 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
154 if (handle_conn_fd(conns[i])) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
155 close(conns[i]);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
156 nconn--;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
157 conns[i] = conns[nconn];
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
158 } else
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
159 i++;
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
160 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
161 if (FD_ISSET(listener, &fds)) {
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
162 addrlen = sizeof(struct sockaddr_in);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
163 rc = accept(listener, (struct sockaddr *) &sin,
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
164 &addrlen);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
165 if (rc >= 0)
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
166 handle_accept(rc, &sin);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
167 else
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
168 fprintf(logf, "\n%s accept syscall error!\n",
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
169 fmt_time);
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
170 }
67289fac8a44 utils: new program tcpserv-dump
Mychaela Falconia <falcon@freecalypso.org>
parents: 43
diff changeset
171 fflush(logf);
17
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 }
4e0a73be9e37 sip-udp-dump utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 }