summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbrecht Dreß <albrecht.dress@arcor.de>2020-08-29 14:33:05 +0200
committerAlbrecht Dreß <albrecht.dress@arcor.de>2020-08-29 14:33:05 +0200
commitae13377fb15c21705041f6e41cf8a5b9e449edbb (patch)
tree4332c5f08bb70934f75ee08e2c8ac4355ab62f3d
parentf9e56c3a51f4ba8b91cead5526ff14ec75d2a35d (diff)
downloadgnutls-ae13377fb15c21705041f6e41cf8a5b9e449edbb.tar.gz
improve gnutls-serv EOL processing
add option `--crlf` to gnutls-serv to disable replacing a received CRLF by LF in echo mode (fixes #1073). Signed-off-by: Albrecht Dreß <albrecht.dress@arcor.de>
-rw-r--r--src/serv-args.def6
-rw-r--r--src/serv.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/src/serv-args.def b/src/serv-args.def
index a584085e26..ca61801c1e 100644
--- a/src/serv-args.def
+++ b/src/serv-args.def
@@ -95,6 +95,12 @@ flag = {
};
flag = {
+ name = crlf;
+ descrip = "Do not replace CRLF by LF in Echo server mode";
+ doc = "";
+};
+
+flag = {
name = udp;
value = u;
descrip = "Use DTLS (datagram TLS) over UDP";
diff --git a/src/serv.c b/src/serv.c
index 57304bc9d3..5198b58c65 100644
--- a/src/serv.c
+++ b/src/serv.c
@@ -55,6 +55,7 @@
/* global stuff */
static int generate = 0;
static int http = 0;
+static int strip_crlf = 1;
static int x509ctype;
static int debug = 0;
@@ -1058,7 +1059,8 @@ get_response(gnutls_session_t session, char *request,
*response = peer_print_data(session, response_length);
} else {
int ret;
- strip(request);
+ if (strip_crlf != 0)
+ strip(request);
fprintf(stderr, "received cmd: %s\n", request);
ret = check_command(session, request, disable_client_cert);
@@ -1838,9 +1840,11 @@ static void cmd_parser(int argc, char **argv)
noticket = HAVE_OPT(NOTICKET);
earlydata = HAVE_OPT(EARLYDATA);
- if (HAVE_OPT(ECHO))
+ if (HAVE_OPT(ECHO)) {
http = 0;
- else
+ if (HAVE_OPT(CRLF))
+ strip_crlf = 0;
+ } else
http = 1;
record_max_size = OPT_VALUE_RECORDSIZE;