From bdb412f7ec16bbc93e76506291db9d58283628e0 Mon Sep 17 00:00:00 2001 From: Michael Gernoth Date: Mon, 12 May 2008 15:32:34 +0200 Subject: [PATCH] translate 0x0a to 0x0d 0x0a in SOL --- redir.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/redir.c b/redir.c index 9731715..9c72bf7 100644 --- a/redir.c +++ b/redir.c @@ -236,13 +236,27 @@ int redir_sol_send(struct redir *r, unsigned char *buf, int blen) { int len = 10+blen; int rc; - unsigned char *request = malloc(len); + int i,j; + unsigned char *request; + + for (i = 0; i < blen; i++) { + if (buf[i] == 0x0a) + len++; + } + + request = malloc(len); memset(request, 0, len); request[0] = SOL_DATA_TO_HOST; - request[8] = blen & 0xff; - request[9] = blen >> 8; - memcpy(request + 10, buf, blen); + request[8] = (len-10) & 0xff; + request[9] = (len-10) >> 8; + for (i=0, j=0; i < blen; i++,j++) { + if (buf[i] == 0x0a) { + request[j + 10] = 0x0d; + j++; + } + request[j + 10] = buf[i]; + } rc = redir_write(r, request, len); free(request); return rc; -- 2.39.2