Skip to content

Commit 7a6ec4f

Browse files
committed
addressing review-skill
1 parent 72a9083 commit 7a6ec4f

1 file changed

Lines changed: 22 additions & 7 deletions

File tree

src/gateway/server/ws-connection/message-handler.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
getDeviceBootstrapTokenProfile,
77
redeemDeviceBootstrapTokenProfile,
88
revokeDeviceBootstrapToken,
9+
restoreDeviceBootstrapToken,
910
verifyDeviceBootstrapToken,
1011
} from "../../../infra/device-bootstrap.js";
1112
import {
@@ -1478,13 +1479,9 @@ export function attachGatewayWsMessageHandler(params: GatewayWsMessageHandlerPar
14781479
},
14791480
};
14801481

1481-
try {
1482-
await sendFrame({ type: "res", id: frame.id, ok: true, payload: helloOk });
1483-
} catch (err) {
1484-
setCloseCause("hello-send-failed", { error: formatForLog(err) });
1485-
close();
1486-
return;
1487-
}
1482+
let revokedBootstrapTokenRecord:
1483+
| Awaited<ReturnType<typeof revokeDeviceBootstrapToken>>["record"]
1484+
| undefined;
14881485
if (authMethod === "bootstrap-token" && bootstrapTokenCandidate && device) {
14891486
try {
14901487
if (issuedBootstrapProfile) {
@@ -1501,6 +1498,8 @@ export function attachGatewayWsMessageHandler(params: GatewayWsMessageHandlerPar
15011498
logGateway.warn(
15021499
`bootstrap token revoke skipped after profile redemption device=${device.id}`,
15031500
);
1501+
} else {
1502+
revokedBootstrapTokenRecord = revoked.record;
15041503
}
15051504
}
15061505
}
@@ -1510,6 +1509,22 @@ export function attachGatewayWsMessageHandler(params: GatewayWsMessageHandlerPar
15101509
);
15111510
}
15121511
}
1512+
try {
1513+
await sendFrame({ type: "res", id: frame.id, ok: true, payload: helloOk });
1514+
} catch (err) {
1515+
if (revokedBootstrapTokenRecord) {
1516+
try {
1517+
await restoreDeviceBootstrapToken({ record: revokedBootstrapTokenRecord });
1518+
} catch (restoreErr) {
1519+
logGateway.warn(
1520+
`bootstrap token restore after hello-send failure failed device=${device?.id ?? "unknown"}: ${formatForLog(restoreErr)}`,
1521+
);
1522+
}
1523+
}
1524+
setCloseCause("hello-send-failed", { error: formatForLog(err) });
1525+
close();
1526+
return;
1527+
}
15131528
logWs("out", "hello-ok", {
15141529
connId,
15151530
methods: gatewayMethods.length,

0 commit comments

Comments
 (0)