diff --git a/README.md b/README.md index e5ebf22..ca5969b 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ A simple HTTP/1.1 server written in C. Usage: -p | --port --config= + --disable-peer-addr-print ## Before Compiling diff --git a/src/arg_parse.c b/src/arg_parse.c index 0ca73cd..4bc3e3b 100644 --- a/src/arg_parse.c +++ b/src/arg_parse.c @@ -25,6 +25,7 @@ void print_usage(void) { puts("Usage:"); puts(" -p | --port "); puts(" --config="); + puts(" --disable-peer-addr-print"); } Args parse_args(int argc, char **argv) { @@ -45,6 +46,8 @@ Args parse_args(int argc, char **argv) { ++argv; } else if (strncmp(argv[0], "--config=", 9) == 0 && strlen(argv[0]) > 9) { args.config_file = argv[0] + 9; + } else if (strcmp(argv[0], "--disable-peer-addr-print") == 0) { + args.flags |= 1; } else { puts("ERROR: Invalid args!\n"); print_usage(); diff --git a/src/arg_parse.h b/src/arg_parse.h index 6e76206..641c29b 100644 --- a/src/arg_parse.h +++ b/src/arg_parse.h @@ -18,6 +18,8 @@ #define SEODISPARATE_COM_C_SIMPLE_HTTP_ARG_PARSE_H_ typedef struct Args { + // xxxx xxx0 - enable peer addr print. + // xxxx xxx1 - disable peer addr print. unsigned short flags; unsigned short port; // Does not need to be free'd, this should point to a string in argv. diff --git a/src/main.c b/src/main.c index 1a883e7..bac21d6 100644 --- a/src/main.c +++ b/src/main.c @@ -47,7 +47,7 @@ } int main(int argc, char **argv) { - Args args = parse_args(argc, argv); + const Args args = parse_args(argc, argv); if (!args.config_file) { fprintf(stderr, "ERROR Config file not specified!\n"); @@ -110,14 +110,18 @@ int main(int argc, char **argv) { printf("WARNING: accept: errno %d\n", errno); } else if (ret >= 0) { // Received connection, handle it. - printf("Peer connected: addr is "); - for (unsigned int idx = 0; idx < 16; ++idx) { - if (idx % 2 == 0 && idx > 0) { - printf(":"); + if ((args.flags & 1) == 0) { + printf("Peer connected: addr is "); + for (unsigned int idx = 0; idx < 16; ++idx) { + if (idx % 2 == 0 && idx > 0) { + printf(":"); + } + printf("%02x", peer_info.sin6_addr.s6_addr[idx]); } - printf("%02x", peer_info.sin6_addr.s6_addr[idx]); + puts(""); + } else { + printf("Peer connected.\n"); } - puts(""); int connection_fd = ret; read_ret = read(connection_fd, recv_buf, C_SIMPLE_HTTP_RECV_BUF_SIZE); if (read_ret < 0) {