mirror of
https://github.com/brunopostle/ifcurl.git
synced 2026-07-12 02:08:13 +00:00
All ifcopenshell calls (from_string, filter_elements, geom.iterator) now run inside a short-lived child process via run_sandboxed(). A SIGSEGV or SIGABRT in the child returns HTTP 422 instead of killing the service worker. Configurable timeout (IFCURL_SANDBOX_TIMEOUT, default 120s) and optional resource limits (IFCURL_SANDBOX_MEMORY_MB, IFCURL_SANDBOX_CPU_SECS). The T3 GUID cache still works: the sandboxed pipeline returns resolved GUIDs on selector miss so the parent can populate the cache; on hit the parent passes cached GUIDs and the child converts them to step IDs. Tests use a sync_sandbox fixture that runs run_sandboxed synchronously so mock patches remain visible; four dedicated sandbox tests cover normal return, exception propagation, segfault detection, and timeout. Closes ifcurl-vm5. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| conftest.py | ||
| test_auth.py | ||
| test_bcf.py | ||
| test_git.py | ||
| test_render.py | ||
| test_sandbox.py | ||
| test_service.py | ||
| test_url.py | ||
| test_viewer_url.mjs | ||