Commit 69bd942
committed
LOC-7325: fourth review round — close all six remaining findings
Never delete or retry a user-supplied binary (HIGH). The previous round
added `userProvidedBinaryPath` and honoured it in evictDownloadedBinary,
but the sibling path prepareBinaryRetry still unlinked unconditionally,
so a `binarypath` binary that crashed was deleted out from under the
user. addArgs re-applies the option on every retry, so the retry then
re-exec'd the deleted file, burned all 9 attempts and replaced the real
diagnostic with ENOENT. prepareBinaryRetry now delegates to
evictDownloadedBinary so both deletion paths share one rule, and
shouldRetryBinaryDownload stops the retry for user-supplied paths.
Require the reported pid to be alive before calling a non-zero exit a
success. A payload claiming 'connected' from a daemon that had already
died was reported as a successful start, leaving the caller to run its
whole suite against a dead tunnel. `is-running` was already a dependency.
Route synchronous binary-path failures to the callback. getAvailableDirs
throws when no candidate directory is writable (locked-down CI), and that
throw escaped start() with the callback never fired — the same "caller
never hears back" class this ticket set out to close. start() now has a
single delivery guard covering both the sync throw and the execFile
handler; startSync returns the error like every other failure it reports.
Reject any non-200 download response. The >= 400 guard still let a 3xx
through, and since https.get does not follow redirects the redirect body
was written to the binary path, chmodded 0755 and returned as the binary.
Destroy the write stream on response- and request-level download errors.
pipe() unpipes on source error but never ends the destination, so each
retry leaked a write fd and opened a second writer on the same path.
Make the sync retry path synchronous. retryBinaryDownload deleted the
stale binary inside an fs.stat callback, so it returned undefined and
downloadSync discarded the retry's result: startSync reported "Couldn't
find binary file" on the first failure while the retry chain ran on in
the background holding the event loop open.
Tests: adds test/local_binary_download.js (stubs https.get, so no network
or TLS fixture) and extends the start() suite. 9 of the new assertions
fail on the previous commit. Suite excluding the credential-gated
LocalBinary Download block: 54 passing, same 3 pre-existing failures.
The existing connected-payload test asserted success for pid 12345, which
is not a live process; it now reports this process's own pid, with a new
test covering the dead-pid case.1 parent b9fe94e commit 69bd942
4 files changed
Lines changed: 411 additions & 54 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
40 | 48 | | |
41 | 49 | | |
42 | 50 | | |
| |||
72 | 80 | | |
73 | 81 | | |
74 | 82 | | |
75 | | - | |
| 83 | + | |
76 | 84 | | |
77 | 85 | | |
78 | 86 | | |
| |||
89 | 97 | | |
90 | 98 | | |
91 | 99 | | |
92 | | - | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
93 | 112 | | |
94 | 113 | | |
95 | 114 | | |
96 | 115 | | |
97 | | - | |
| 116 | + | |
98 | 117 | | |
99 | 118 | | |
100 | 119 | | |
| |||
105 | 124 | | |
106 | 125 | | |
107 | 126 | | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | 127 | | |
118 | 128 | | |
119 | 129 | | |
| |||
124 | 134 | | |
125 | 135 | | |
126 | 136 | | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
132 | 144 | | |
133 | 145 | | |
134 | | - | |
| 146 | + | |
135 | 147 | | |
136 | 148 | | |
137 | 149 | | |
138 | 150 | | |
139 | | - | |
| 151 | + | |
140 | 152 | | |
141 | 153 | | |
142 | 154 | | |
143 | 155 | | |
144 | 156 | | |
145 | | - | |
| 157 | + | |
146 | 158 | | |
147 | 159 | | |
148 | | - | |
| 160 | + | |
149 | 161 | | |
150 | 162 | | |
151 | 163 | | |
152 | 164 | | |
153 | 165 | | |
154 | 166 | | |
155 | | - | |
| 167 | + | |
156 | 168 | | |
157 | 169 | | |
158 | 170 | | |
| |||
162 | 174 | | |
163 | 175 | | |
164 | 176 | | |
165 | | - | |
| 177 | + | |
166 | 178 | | |
167 | 179 | | |
168 | 180 | | |
169 | | - | |
| 181 | + | |
170 | 182 | | |
171 | 183 | | |
172 | 184 | | |
173 | | - | |
| 185 | + | |
174 | 186 | | |
175 | 187 | | |
176 | | - | |
177 | | - | |
| 188 | + | |
| 189 | + | |
178 | 190 | | |
179 | 191 | | |
180 | | - | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
181 | 201 | | |
182 | 202 | | |
183 | 203 | | |
| |||
205 | 225 | | |
206 | 226 | | |
207 | 227 | | |
208 | | - | |
209 | | - | |
210 | | - | |
211 | | - | |
212 | | - | |
213 | | - | |
214 | | - | |
215 | | - | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
216 | 231 | | |
217 | 232 | | |
218 | 233 | | |
219 | 234 | | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
220 | 244 | | |
221 | 245 | | |
222 | 246 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
131 | 131 | | |
132 | 132 | | |
133 | 133 | | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
134 | 145 | | |
135 | 146 | | |
136 | 147 | | |
137 | 148 | | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
138 | 158 | | |
139 | | - | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
146 | | - | |
147 | | - | |
148 | | - | |
149 | | - | |
150 | | - | |
| 159 | + | |
| 160 | + | |
151 | 161 | | |
152 | 162 | | |
153 | 163 | | |
| |||
268 | 278 | | |
269 | 279 | | |
270 | 280 | | |
271 | | - | |
272 | | - | |
273 | | - | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
274 | 288 | | |
275 | 289 | | |
276 | 290 | | |
| |||
301 | 315 | | |
302 | 316 | | |
303 | 317 | | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
304 | 322 | | |
305 | 323 | | |
306 | 324 | | |
| |||
319 | 337 | | |
320 | 338 | | |
321 | 339 | | |
| 340 | + | |
322 | 341 | | |
323 | 342 | | |
324 | 343 | | |
| |||
0 commit comments