66 getDeviceBootstrapTokenProfile ,
77 redeemDeviceBootstrapTokenProfile ,
88 revokeDeviceBootstrapToken ,
9+ restoreDeviceBootstrapToken ,
910 verifyDeviceBootstrapToken ,
1011} from "../../../infra/device-bootstrap.js" ;
1112import {
@@ -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