Harden selection tracking against dropped/failed SELECTs

- Only update the selected-file state on a successful SELECT (SW1 in
  61/62/63/90/91/92/9E/9F); a failed SELECT (e.g. 6A82) leaves the
  current file unchanged.
- Track the file structure from the FCP (GET RESPONSE after SELECT).
- Skip file decoding for record ops (READ/UPDATE/SEARCH RECORD) when the
  selected file is transparent/DF, marking the result 'stale' instead of
  decoding garbage — this catches silently-dropped SELECTs.
This commit is contained in:
catarrh committed 2026-08-16 00:20:32 +03:00
1 parent 91cb4e6e02
commit 747974460e
4 files changed
+144 -18

No files matched your search

+4 -2
View File
@@ -634,7 +634,9 @@ function fileRows(f) {
if (!f) return '';
const title = f.ef ? `${f.ef} (0x${(f.fid || '').toUpperCase()})` : (f.fid || '').toUpperCase();
const rows = [];
if (f.empty) {
if (f.stale) {
rows.push(['File', title + ' — selection stale (record op on non-record file)']);
} else if (f.empty) {
rows.push(['File', title + ' — empty']);
} else {
rows.push(['File', title]);
@@ -816,7 +818,7 @@ function showDetail(msg, entry) {
}
const cla = decoded.cla;
const claInfo = `${cla.interclass}, ch${cla.channel}, ${cla.secure_messaging}, chain: ${cla.chain}`;
const claInfo = `${cla.interclass}, ch${cla.channel}, SM: ${cla.secure_messaging}, chain: ${cla.chain}`;
const catRow = decoded.cat_command
? `<tr><td class="label">CAT</td><td class="name">${decoded.cat_command}</td></tr>`