removed promise sockets

This commit is contained in:
Ben Wilson
2023-08-06 11:08:53 -04:00
parent 4da96c6b68
commit 16328d8d03
4 changed files with 22 additions and 109 deletions
-92
View File
@@ -27,7 +27,6 @@
"discord.js": "^14.11.0",
"merkle-lib": "^2.0.10",
"node-telegram-bot-api": "^0.61.0",
"promise-socket": "^7.0.0",
"reflect-metadata": "^0.1.13",
"rpc-bitcoin": "^2.0.0",
"rxjs": "^7.2.0",
@@ -4212,16 +4211,6 @@
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
"dev": true
},
"node_modules/core-js": {
"version": "3.31.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.0.tgz",
"integrity": "sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@@ -8941,36 +8930,12 @@
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz",
"integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg=="
},
"node_modules/promise-duplex": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/promise-duplex/-/promise-duplex-6.0.0.tgz",
"integrity": "sha512-ZL7rquzjTFzInDBeWYcsT+qddolNvzigahk6MI6qLSbQvlyRRCJkU3JztgaVunzvkH28smRa2Qu/cY9RXtSkgA==",
"dependencies": {
"core-js": "^3.6.5",
"promise-readable": "^6.0.0",
"promise-writable": "^6.0.0"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
"optional": true
},
"node_modules/promise-readable": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/promise-readable/-/promise-readable-6.0.0.tgz",
"integrity": "sha512-5NxtmUswijvX5cAM0zPSy6yiCXH/eKBpiiBq6JfAUrmngMquMbzcBhF2qA+ocs4rYYKdvAfv3cOvZxADLtL1CA==",
"dependencies": {
"core-js": "^3.6.5"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/promise-retry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
@@ -8984,26 +8949,6 @@
"node": ">=10"
}
},
"node_modules/promise-socket": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/promise-socket/-/promise-socket-7.0.0.tgz",
"integrity": "sha512-Oic9BrxmcHOPEnzKp2Js+ehFyvsbd0WxsE5khweCTHuRvdzbXjHUZmSDT6F9TW8SIkAJ0lCzoHjMYnb0WQJPiw==",
"dependencies": {
"promise-duplex": "^6.0.0",
"tslib": "^2.0.1"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/promise-writable": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/promise-writable/-/promise-writable-6.0.0.tgz",
"integrity": "sha512-b81zre/itgJFS7dwWzIdKNVVqvLiUxYRS/wolUB0H1YY/tAaS146XGKa4Q/5wCbsnXLyn0MCeV6f8HHe4iUHLg==",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
@@ -14558,11 +14503,6 @@
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
"dev": true
},
"core-js": {
"version": "3.31.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.31.0.tgz",
"integrity": "sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ=="
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@@ -18157,30 +18097,12 @@
"resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.2.0.tgz",
"integrity": "sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg=="
},
"promise-duplex": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/promise-duplex/-/promise-duplex-6.0.0.tgz",
"integrity": "sha512-ZL7rquzjTFzInDBeWYcsT+qddolNvzigahk6MI6qLSbQvlyRRCJkU3JztgaVunzvkH28smRa2Qu/cY9RXtSkgA==",
"requires": {
"core-js": "^3.6.5",
"promise-readable": "^6.0.0",
"promise-writable": "^6.0.0"
}
},
"promise-inflight": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
"optional": true
},
"promise-readable": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/promise-readable/-/promise-readable-6.0.0.tgz",
"integrity": "sha512-5NxtmUswijvX5cAM0zPSy6yiCXH/eKBpiiBq6JfAUrmngMquMbzcBhF2qA+ocs4rYYKdvAfv3cOvZxADLtL1CA==",
"requires": {
"core-js": "^3.6.5"
}
},
"promise-retry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
@@ -18191,20 +18113,6 @@
"retry": "^0.12.0"
}
},
"promise-socket": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/promise-socket/-/promise-socket-7.0.0.tgz",
"integrity": "sha512-Oic9BrxmcHOPEnzKp2Js+ehFyvsbd0WxsE5khweCTHuRvdzbXjHUZmSDT6F9TW8SIkAJ0lCzoHjMYnb0WQJPiw==",
"requires": {
"promise-duplex": "^6.0.0",
"tslib": "^2.0.1"
}
},
"promise-writable": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/promise-writable/-/promise-writable-6.0.0.tgz",
"integrity": "sha512-b81zre/itgJFS7dwWzIdKNVVqvLiUxYRS/wolUB0H1YY/tAaS146XGKa4Q/5wCbsnXLyn0MCeV6f8HHe4iUHLg=="
},
"prompts": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
-1
View File
@@ -38,7 +38,6 @@
"discord.js": "^14.11.0",
"merkle-lib": "^2.0.10",
"node-telegram-bot-api": "^0.61.0",
"promise-socket": "^7.0.0",
"reflect-metadata": "^0.1.13",
"rpc-bitcoin": "^2.0.0",
"rxjs": "^7.2.0",
+17 -10
View File
@@ -5,7 +5,6 @@ import { plainToInstance } from 'class-transformer';
import { validate, ValidatorOptions } from 'class-validator';
import * as crypto from 'crypto';
import { Socket } from 'net';
import PromiseSocket from 'promise-socket';
import { firstValueFrom, Subscription } from 'rxjs';
import { AddressSettingsService } from '../ORM/address-settings/address-settings.service';
@@ -50,7 +49,7 @@ export class StratumV1Client {
constructor(
public readonly promiseSocket: PromiseSocket<Socket>,
public readonly socket: Socket,
private readonly stratumV1JobsService: StratumV1JobsService,
private readonly bitcoinRpcService: BitcoinRpcService,
private readonly clientService: ClientService,
@@ -61,7 +60,7 @@ export class StratumV1Client {
private readonly addressSettingsService: AddressSettingsService
) {
this.promiseSocket.socket.on('data', (data: Buffer) => {
this.socket.on('data', (data: Buffer) => {
data.toString()
.split('\n')
.filter(m => m.length > 0)
@@ -69,7 +68,7 @@ export class StratumV1Client {
try {
await this.handleMessage(m);
} catch (e) {
await this.promiseSocket.end();
await this.socket.end();
console.error(e);
}
})
@@ -107,7 +106,7 @@ export class StratumV1Client {
parsedMessage = JSON.parse(message);
} catch (e) {
console.log("Invalid JSON");
await this.promiseSocket.end();
await this.socket.end();
return;
}
@@ -343,7 +342,7 @@ export class StratumV1Client {
try {
await this.sendNewMiningJob(jobTemplate);
} catch (e) {
await this.promiseSocket.end();
await this.socket.end();
console.error(e);
}
});
@@ -528,7 +527,7 @@ export class StratumV1Client {
}) + '\n';
await this.promiseSocket.write(data);
await this.socket.write(data);
// we need to clear the jobs so that the difficulty set takes effect. Otherwise the different miner implementations can cause issues
@@ -562,14 +561,22 @@ export class StratumV1Client {
private async write(message: string): Promise<boolean> {
try {
if (this.promiseSocket.isPromiseWritable) {
await this.promiseSocket.write(message);
if (!this.socket.destroyed && !this.socket.writableEnded) {
await new Promise((resolve, reject) => {
this.socket.write(message, (error) => {
if (error) {
reject(error);
} else {
resolve(true);
}
});
});
return true;
} else {
console.error('Error: Cannot write to closed or ended socket.');
}
} catch (error) {
await this.promiseSocket.end();
await this.socket.end();
console.error('Error occurred while writing to socket:', error);
}
return false;
+5 -6
View File
@@ -1,7 +1,6 @@
import { Injectable, OnModuleInit } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { Server, Socket } from 'net';
import { PromiseSocket } from 'promise-socket';
import { StratumV1Client } from '../models/StratumV1Client';
import { AddressSettingsService } from '../ORM/address-settings/address-settings.service';
@@ -43,10 +42,10 @@ export class StratumV1Service implements OnModuleInit {
private startSocketServer() {
const server = new Server(async (socket: Socket) => {
const promiseSocket = new PromiseSocket(socket);
const client = new StratumV1Client(
promiseSocket,
socket,
this.stratumV1JobsService,
this.bitcoinRpcService,
this.clientService,
@@ -58,7 +57,7 @@ export class StratumV1Service implements OnModuleInit {
);
promiseSocket.socket.on('end', async (error: Error) => {
socket.on('end', async (error: Error) => {
// Handle socket disconnection
client.destroy();
@@ -70,7 +69,7 @@ export class StratumV1Service implements OnModuleInit {
});
promiseSocket.socket.on('error', async (error: Error) => {
socket.on('error', async (error: Error) => {
client.destroy();
@@ -79,7 +78,7 @@ export class StratumV1Service implements OnModuleInit {
const clientCount = await this.clientService.connectedClientCount();
console.log(`Client disconnected, socket error, ${client.extraNonceAndSessionId}, ${clientCount} total clients`);
promiseSocket.destroy();
socket.destroy();
});