fix hang on fstat calls in request server
Support fstat by converting to a standard Stat call and processing that.
I didn't want to add another special case to the request backend, I
wanted to keep it only having to support Stat.
diff --git a/request-server.go b/request-server.go
index a0877c3..7023ae6 100644
--- a/request-server.go
+++ b/request-server.go
@@ -134,6 +134,16 @@
case isOpener:
handle := rs.nextRequest(requestFromPacket(pkt))
rpkt = sshFxpHandlePacket{pkt.id(), handle}
+ case *sshFxpFstatPacket:
+ handle := pkt.getHandle()
+ request, ok := rs.getRequest(handle)
+ if !ok {
+ rpkt = statusFromError(pkt, syscall.EBADF)
+ } else {
+ request = requestFromPacket(
+ &sshFxpStatPacket{ID: pkt.id(), Path: request.Filepath})
+ rpkt = rs.handle(request, pkt)
+ }
case hasHandle:
handle := pkt.getHandle()
request, ok := rs.getRequest(handle)