Skip to content

Commit

Permalink
...
Browse files Browse the repository at this point in the history
  • Loading branch information
splitice committed Feb 20, 2024
1 parent edf5851 commit 51a34c9
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 12 deletions.
17 changes: 11 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,20 @@ class Socket extends EventEmitter {
}

onRecvReady () {
const me = this;
try {
this.wrap.recv (this.buffer, function (buffer, bytes, source) {
let buffer = this.buffer
this.wrap.recv (buffer, (bytes, source)=>{
if(bytes < 0) {
this.emit ("return", buffer);
return
}
const newBuffer = buffer.slice (0, bytes);
me.emit ("message", newBuffer, source, buffer);
return this.buffer
});
this.emit ("message", newBuffer, source, buffer);
buffer = this.buffer
return buffer
})
} catch (error) {
me.emit ("error", error);
this.emit ("error", error, buffer);
}
}

Expand Down
13 changes: 7 additions & 6 deletions src/raw.cc
Original file line number Diff line number Diff line change
Expand Up @@ -712,17 +712,17 @@ NAN_METHOD(SocketWrap::Recv) {
return;
}

const unsigned argc = 3;
Local<Value> argv[argc];
Local<Value> argv[2];
Local<Function> cb = Local<Function>::Cast (info[1]);
argv[0] = info[0];

do {
//memset (&sin_storage, 0, sin_length);
rc = recvfrom (socket->poll_fd_, node::Buffer::Data (buffer),
(int) node::Buffer::Length (buffer), 0, (sockaddr *) &sin_storage,
&sin_length);
if (errno == EAGAIN || errno == EWOULDBLOCK) {
argv[0] = Nan::New<Number>(-1);
cb->Call (context, socket->handle(), 1, argv);
break;
}

Expand All @@ -737,9 +737,10 @@ NAN_METHOD(SocketWrap::Recv) {
uv_ip4_name ((sockaddr_in*)&sin_storage, addr, 50);
else
addr[0] = 0; /* TODO */
argv[1] = Nan::New<Number>(rc);
argv[2] = Nan::New(addr).ToLocalChecked();
MaybeLocal<v8::Value> newBuffer = cb->Call (context, socket->handle(), argc, argv);

argv[0] = Nan::New<Number>(rc);
argv[1] = Nan::New(addr).ToLocalChecked();
MaybeLocal<v8::Value> newBuffer = cb->Call (context, socket->handle(), 2, argv);
if (newBuffer.IsEmpty()) {
break;
}
Expand Down

0 comments on commit 51a34c9

Please sign in to comment.