Compare commits

..

2 Commits

Author SHA1 Message Date
Derrick Hammer 54904ab1ad
*Bug fix pushRemote 2023-04-06 17:24:06 -04:00
Derrick Hammer ab4632b644
*_mux doesnt exist in Protomux 2023-04-06 17:22:18 -04:00
1 changed files with 11 additions and 7 deletions

View File

@ -605,14 +605,14 @@ module.exports = class Protomux {
const info = this._get(protocol, id); const info = this._get(protocol, id);
if (this._slave) { if (this._slave) {
await this._mux.pullRemote(); await this.pullRemote();
} }
// allow the remote to grow the ids by one // allow the remote to grow the ids by one
if (this._remote.length === rid) { if (this._remote.length === rid) {
this._remote.push(null); this._remote.push(null);
if (this._slave) { if (this._slave) {
await this._mux.pushRemote(this._remote.length - 1); await this.pushRemote(this._remote.length - 1);
} }
} }
@ -626,18 +626,22 @@ module.exports = class Protomux {
if (session === null) { if (session === null) {
if (this._slave) { if (this._slave) {
await this._mux.pullFree(); await this.pullFree();
} }
// we already closed the channel - ignore // we already closed the channel - ignore
this._free.push(localId - 1); this._free.push(localId - 1);
if (this._slave) { if (this._slave) {
await this._mux.pushFree(localId - 1); await this.pushFree(localId - 1);
} }
return; return;
} }
this._remote[rid] = { state, pending: null, session: null }; this._remote[rid] = { state, pending: null, session: null };
if (this._slave) {
await this.pushRemote(remoteId);
}
session._remoteId = remoteId; session._remoteId = remoteId;
session._fullyOpen(); session._fullyOpen();
return; return;
@ -658,7 +662,7 @@ module.exports = class Protomux {
info.incoming.push(remoteId); info.incoming.push(remoteId);
if (this._slave) { if (this._slave) {
await this._mux.pushRemotes(); await this.pushRemote(remoteId);
} }
this._requestSession(protocol, id, info).catch(this._safeDestroyBound); this._requestSession(protocol, id, info).catch(this._safeDestroyBound);
@ -677,12 +681,12 @@ module.exports = class Protomux {
const session = this._local[localId - 1]; const session = this._local[localId - 1];
if (this._slave) { if (this._slave) {
await this._mux.pullFree(localId - 1); await this.pullFree(localId - 1);
} }
this._free.push(localId - 1); this._free.push(localId - 1);
if (this._slave) { if (this._slave) {
await this._mux.pushFree(localId - 1); await this.pushFree(localId - 1);
} }
if (session !== null) session._close(true); if (session !== null) session._close(true);