Fixed agent log parsing bug

Bryan Roe committed Apr 22, 2021 at 15:00 UTC a5053b17e51551d7c9b23b05c207256017723017
1 file changed +19 -3
agents/modules_meshcore/util-agentlog.js
+19 -3
@@ -109,10 +109,24 @@ function parseLine(entry)
109
110 function readLog_data(buffer)
111 {
112 - var lines = buffer.toString().split('\n');
113 - while(lines.length > 0)
112 + var lines = buffer.toString();
113 + if (this.buffered != null) { lines = this.buffered + lines; }
114 + lines = lines.split('\n');
115 + var i;
116 +
117 + for (i = 0; i < (lines.length - 1) ; ++i)
118 + {
119 + parseLine.call(this, lines[i]);
120 + }
121 +
122 + if (lines.length == 1)
123 + {
124 + parseLine.call(this, lines[0]);
125 + this.buffered = null;
126 + }
127 + else
128 {
115 - parseLine.call(this, lines.shift());
129 + this.buffered = lines[lines.length - 1];
130 }
131 }
132
@@ -122,9 +136,11 @@ function readLogEx(path)
136 try
137 {
138 var s = require('fs').createReadStream(path);
139 + s.buffered = null;
140 s.results = ret;
141 s.on('data', readLog_data);
142 s.resume();
143 + if (s.buffered != null) { readLog_data.call(s, s.buffered); s.buffered = null; }
144 s.removeAllListeners('data');
145 s = null;
146 }