From edf5851027437b167b067a43ed677e1f4a2b0c87 Mon Sep 17 00:00:00 2001 From: Mathew Date: Tue, 20 Feb 2024 16:56:15 +1100 Subject: [PATCH] ... --- index.js | 1 + src/raw.cc | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index ba6dc77..472c1f1 100644 --- a/index.js +++ b/index.js @@ -76,6 +76,7 @@ class Socket extends EventEmitter { this.wrap.recv (this.buffer, function (buffer, bytes, source) { const newBuffer = buffer.slice (0, bytes); me.emit ("message", newBuffer, source, buffer); + return this.buffer }); } catch (error) { me.emit ("error", error); diff --git a/src/raw.cc b/src/raw.cc index 8c073a4..96feef9 100644 --- a/src/raw.cc +++ b/src/raw.cc @@ -739,7 +739,11 @@ NAN_METHOD(SocketWrap::Recv) { addr[0] = 0; /* TODO */ argv[1] = Nan::New(rc); argv[2] = Nan::New(addr).ToLocalChecked(); - cb->Call (context, socket->handle(), argc, argv); + MaybeLocal newBuffer = cb->Call (context, socket->handle(), argc, argv); + if (newBuffer.IsEmpty()) { + break; + } + buffer = newBuffer.ToLocalChecked()->ToObject(context).ToLocalChecked(); } while(true); info.GetReturnValue().Set(info.This());