From c7ee9db291232cf5ab3df45b747c35571450b2ea Mon Sep 17 00:00:00 2001 From: lnedry Date: Sat, 25 Nov 2023 12:50:00 -0500 Subject: [PATCH 1/2] Update transaction.js Fixed missing Buffer to string conversion. --- lib/transaction.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/transaction.js b/lib/transaction.js index f2d10c6..80b17f4 100644 --- a/lib/transaction.js +++ b/lib/transaction.js @@ -66,7 +66,7 @@ class Transaction { add_data (line) { if (typeof line === 'string') { // This shouldn't ever happen... - line = new Buffer(line, 'binary'); + line = Buffer.from(line, 'binary'); } // check if this is the end of headers line if (this.header_pos === 0 && @@ -86,7 +86,7 @@ class Transaction { line.toString('binary').replace(/\r\n$/, '\n')); } } - else if (this.header_pos && this.parse_body) { + else if (this.parse_body) { if (line[0] === 0x2E) line = line.slice(1); // Strip leading "." let new_line = this.body.parse_more( line.toString('binary').replace(/\r\n$/, '\n')); @@ -95,8 +95,8 @@ class Transaction { return; // buffering for banners } - new_line = new_line.replace(/^\./gm, '..').replace(/\r?\n/gm, '\r\n'); - line = new Buffer(new_line,'binary'); + new_line = new_line.toString('binary').replace(/^\./gm, '..').replace(/\r?\n/gm, '\r\n'); + line = Buffer.from(new_line,'binary'); } if (!this.discard_data) this.message_stream.add_line(line); @@ -131,7 +131,7 @@ class Transaction { data = data.toString('binary') .replace(/^\./gm, '..') .replace(/\r?\n/gm, '\r\n'); - const line = new Buffer(data, 'binary'); + const line = Buffer.from(data, 'binary'); if (!this.discard_data) this.message_stream.add_line(line); } From 34799000c04f1e1b40215c4df01e4dfc69796209 Mon Sep 17 00:00:00 2001 From: lnedry Date: Sat, 25 Nov 2023 12:54:59 -0500 Subject: [PATCH 2/2] Update transaction.js Added test for add_data() when parse_body is true. --- test/transaction.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/test/transaction.js b/test/transaction.js index 891d2e5..96b5be9 100644 --- a/test/transaction.js +++ b/test/transaction.js @@ -39,6 +39,16 @@ describe('transaction', function () { done(); }) + it('can add_data with parse_body = true', (done) => { + const newTrans = transaction.createTransaction('', {"headers":{"max_lines":1000}}); + newTrans.parse_body = true; + newTrans.add_data(`From: test@example.com\r\n`); + newTrans.add_data(`\r\n`); + newTrans.add_data(`abcde\r\n`); + newTrans.add_data(`zyxwvu\r\n`); + done(); + }) + describe('Header', function () { beforeEach((done) => { @@ -60,4 +70,4 @@ describe('transaction', function () { done(); }) }) -}) \ No newline at end of file +})