Commit 8beed12
committed
Merge remote-tracking branch 'origin/pr/644'
* origin/pr/644:
firewall blocks signal during read operations
Pull request description:
`qdb.read()` and `qdb.multiread()` calls in several functions had no protection against `InterruptedError`. When a SIGHUP arrives (triggered by another qube connecting early) during initialization or a rule update, these calls get interrupted mid-execution and crash the firewall service, leaving the proxyvm with no networking.
The fix in `get_connected_ips()` from the previous commit left these call sites unprotected:
`read_rules()` -- `qdb.multiread()` called by `handle_addr()` during both startup and the main loop
`update_handled()` -- `qdb.read()` called after every `handle_addr()`
`log_error()` -- `qdb.read('/default-user')` called when rule errors occur
Block signals for the firewall updates processing time and unblock them
just for the `read_watch()` call time.
### Tests
Mock `signal.pthread_sigmask()` and verify if it gets called at the
right time.2 files changed
Lines changed: 59 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
344 | 344 | | |
345 | 345 | | |
346 | 346 | | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
347 | 350 | | |
348 | 351 | | |
349 | 352 | | |
| |||
366 | 369 | | |
367 | 370 | | |
368 | 371 | | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
369 | 379 | | |
370 | 380 | | |
371 | 381 | | |
372 | | - | |
| 382 | + | |
| 383 | + | |
373 | 384 | | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
374 | 388 | | |
375 | 389 | | |
376 | 390 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
| |||
572 | 573 | | |
573 | 574 | | |
574 | 575 | | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
0 commit comments