Merge pull request #464 from shocknet/spont-payment-timeout

Spont payment timeout
This commit is contained in:
CapDog 2021-09-04 15:11:22 -04:00 committed by GitHub
commit 67d2dd4b04
2 changed files with 44 additions and 37 deletions

View file

@ -389,22 +389,23 @@ const sendSpontaneousPayment = async (
logger.info('ORDER ID') logger.info('ORDER ID')
logger.info(orderID) logger.info(orderID)
/** @type {import('shock-common').Schema.OrderResponse} */ /** @type {import('shock-common').Schema.OrderResponse} */
const encryptedOrderRes = await Utils.tryAndWait( const encryptedOrderRes = await Common.makePromise((res, rej) => {
gun => setTimeout(() => {
new Promise(res => { rej(new Error('Timeout of 30s passed when awaiting order response.'))
gun }, 30000)
.user(to)
.get(Key.ORDER_TO_RESPONSE) require('../Mediator')
.get(orderID) .getGun()
.on(orderResponse => { .user(to)
logger.info(orderResponse) .get(Key.ORDER_TO_RESPONSE)
if (Schema.isOrderResponse(orderResponse)) { .get(orderID)
res(orderResponse) .on(orderResponse => {
} logger.info(orderResponse)
}) if (Schema.isOrderResponse(orderResponse)) {
}), res(orderResponse)
v => Schema.isOrderResponse(v) }
) })
})
if (!Schema.isOrderResponse(encryptedOrderRes)) { if (!Schema.isOrderResponse(encryptedOrderRes)) {
const e = TypeError( const e = TypeError(
@ -479,27 +480,31 @@ const sendSpontaneousPayment = async (
logger.info('ACK NODE') logger.info('ACK NODE')
logger.info(orderResponse.ackNode) logger.info(orderResponse.ackNode)
/** @type {import('shock-common').Schema.OrderResponse} */ /** @type {import('shock-common').Schema.OrderResponse} */
const encryptedOrderAckRes = await Utils.tryAndWait( const encryptedOrderAckRes = await Common.makePromise((res, rej) => {
gun => setTimeout(() => {
new Promise(res => { rej(
gun new Error(
.user(to) "Timeout of 30s exceeded when waiting for order response's ack."
.get(Key.ORDER_TO_RESPONSE) )
.get(orderResponse.ackNode) )
.on(orderResponse => { }, 30000)
logger.info(orderResponse)
logger.info(Schema.isOrderResponse(orderResponse))
//@ts-expect-error require('../Mediator')
if (orderResponse && orderResponse.type === 'orderAck') { .getGun()
//@ts-expect-error .user(to)
res(orderResponse) .get(Key.ORDER_TO_RESPONSE)
} .get(orderResponse.ackNode)
}) .on(orderResponse => {
}), logger.info(orderResponse)
//@ts-expect-error logger.info(Schema.isOrderResponse(orderResponse))
v => !v || !v.type
) //@ts-expect-error
if (orderResponse && orderResponse.type === 'orderAck') {
//@ts-expect-error
res(orderResponse)
}
})
})
if (!encryptedOrderAckRes || !encryptedOrderAckRes.type) { if (!encryptedOrderAckRes || !encryptedOrderAckRes.type) {
const e = TypeError( const e = TypeError(

View file

@ -188,7 +188,9 @@ const pubToEpub = async pub => {
return epubOrTimeout return epubOrTimeout
} catch (err) { } catch (err) {
logger.error(`Error inside pubToEpub:`) logger.error(
`Error inside pubToEpub for pub ${pub.slice(0, 8)}...${pub.slice(-8)}:`
)
logger.error(err) logger.error(err)
throw err throw err
} }