aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
index bc78644..eff40f1 100644
--- a/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
+++ b/packages/meshbay-node/src/meshbay_node/transport/webrtc_server.py
@@ -137,7 +137,7 @@ from meshbay_node.media_probe import (
probe_video as _probe_video,
)
from meshbay_node.roots import (
- RootSet, entry_abs_path, SAFE_UPLOAD_NAME, safe_subdir, _free_name,
+ ROOT_NOT_SERVED, RootSet, entry_abs_path, SAFE_UPLOAD_NAME, safe_subdir, _free_name,
)
log = logging.getLogger(__name__)
@@ -3643,6 +3643,9 @@ class WebRTCPeerSession:
return
file_path = entry_abs_path(ctx["roots"], entry)
+ if file_path is None:
+ self._send({"type": "error", "detail": ROOT_NOT_SERVED})
+ return
if not file_path.exists():
self._send({"type": "error", "detail": "File not on disk"})
return
@@ -3770,6 +3773,9 @@ class WebRTCPeerSession:
self._send({"type": "error", "detail": "File not found"})
return
file_path = entry_abs_path(ctx["roots"], entry)
+ if file_path is None:
+ self._send({"type": "error", "detail": ROOT_NOT_SERVED})
+ return
if not file_path.exists():
self._send({"type": "error", "detail": "File not on disk"})
return
@@ -5524,6 +5530,11 @@ class WebRTCPeerSession:
def _exec_file_delete(self, ctx: dict, file_id: str, entry) -> None:
file_path = entry_abs_path(ctx["roots"], entry)
+ if file_path is None:
+ # Frozen, not gone: removing the entry would lose a file that is
+ # still on a drive the node cannot read right now.
+ self._send({"type": "error", "detail": ROOT_NOT_SERVED})
+ return
if file_path.exists():
file_path.unlink()
log.info("File deleted: %s", entry.name)
@@ -5723,6 +5734,9 @@ class WebRTCPeerSession:
return
file_path = entry_abs_path(ctx["roots"], entry)
+ if file_path is None:
+ self._send({"type": "error", "detail": ROOT_NOT_SERVED})
+ return
if not file_path.exists():
self._send({"type": "error", "detail": "File not on disk"})
return