Fix bug preventing XMPP client from connecting
This commit is contained in:
1 parent
3134b63b68
commit
ab80a62c5c
1 file changed
+36
-42
+36
-42
@@ -321,50 +321,44 @@ export default class XmppClient extends EventEmitter {
|
|||||||
this._iqStanzaCallbacks = new Map();
|
this._iqStanzaCallbacks = new Map();
|
||||||
}
|
}
|
||||||
|
|
||||||
static connect(opts: XmppClientOptions): Promise<XmppClient> {
|
static async connect(opts: XmppClientOptions): Promise<XmppClient> {
|
||||||
return new Promise((resolve, reject) => {
|
function connectSocket(host: string, port: number): Promise<net.Socket> {
|
||||||
let socket = new net.Socket();
|
return new Promise((resolve, reject) => {
|
||||||
socket.on("error", reject);
|
const socket = new net.Socket();
|
||||||
|
socket.on("error", reject);
|
||||||
socket.connect(
|
socket.connect(port, host, () => {
|
||||||
opts.port || 5222,
|
|
||||||
opts.host,
|
|
||||||
void async function () {
|
|
||||||
socket.removeListener("error", reject);
|
socket.removeListener("error", reject);
|
||||||
try {
|
resolve(socket);
|
||||||
let status = 1;
|
});
|
||||||
while (status) {
|
});
|
||||||
if (status === STATUS_STARTTLS)
|
}
|
||||||
socket = await upgradeTls(socket, opts.host);
|
|
||||||
status = await xmppStream(
|
|
||||||
socket,
|
|
||||||
init(
|
|
||||||
socket,
|
|
||||||
opts.host,
|
|
||||||
opts.username,
|
|
||||||
opts.password,
|
|
||||||
opts.resource,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const client = new XmppClient();
|
let socket = await connectSocket(opts.host, opts.port || 5222);
|
||||||
client._socket = socket;
|
try {
|
||||||
client._host = opts.host;
|
let status = 1;
|
||||||
client._username = opts.username;
|
while (status) {
|
||||||
client._resource = opts.resource;
|
if (status === STATUS_STARTTLS)
|
||||||
socket.on("data", client._onData.bind(client));
|
socket = await upgradeTls(socket, opts.host);
|
||||||
socket.on("error", client._onError.bind(client));
|
status = await xmppStream(
|
||||||
if (opts.timeout)
|
socket,
|
||||||
socket.setTimeout(opts.timeout, client.close.bind(client));
|
init(socket, opts.host, opts.username, opts.password, opts.resource),
|
||||||
resolve(client);
|
);
|
||||||
} catch (err) {
|
}
|
||||||
socket.destroy();
|
} catch (err) {
|
||||||
reject(err);
|
socket.destroy();
|
||||||
}
|
throw err;
|
||||||
},
|
}
|
||||||
);
|
|
||||||
});
|
const client = new XmppClient();
|
||||||
|
client._socket = socket;
|
||||||
|
client._host = opts.host;
|
||||||
|
client._username = opts.username;
|
||||||
|
client._resource = opts.resource;
|
||||||
|
socket.on("data", client._onData.bind(client));
|
||||||
|
socket.on("error", client._onError.bind(client));
|
||||||
|
if (opts.timeout)
|
||||||
|
socket.setTimeout(opts.timeout, client.close.bind(client));
|
||||||
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
close(): void {
|
close(): void {
|
||||||
|
|||||||
Reference in new issue
Block a user