diff --git a/request-server.go b/request-server.go index 7bd7bc48..31301db3 100644 --- a/request-server.go +++ b/request-server.go @@ -247,7 +247,7 @@ func (rs *RequestServer) packetWorker(ctx context.Context, pktChan chan orderedR if !ok { rpkt = statusFromError(pkt.ID, EBADF) } else { - request = NewRequest("Stat", cleanPathWithBase(rs.startDirectory, request.Filepath)) + request = getRequest("Stat", cleanPathWithBase(rs.startDirectory, request.Filepath)) rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) } case *sshFxpFsetstatPacket: @@ -256,15 +256,15 @@ func (rs *RequestServer) packetWorker(ctx context.Context, pktChan chan orderedR if !ok { rpkt = statusFromError(pkt.ID, EBADF) } else { - request = NewRequest("Setstat", cleanPathWithBase(rs.startDirectory, request.Filepath)) + request = getRequest("Setstat", cleanPathWithBase(rs.startDirectory, request.Filepath)) rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) } case *sshFxpExtendedPacketPosixRename: - request := NewRequest("PosixRename", cleanPathWithBase(rs.startDirectory, pkt.Oldpath)) + request := getRequest("PosixRename", cleanPathWithBase(rs.startDirectory, pkt.Oldpath)) request.Target = cleanPathWithBase(rs.startDirectory, pkt.Newpath) rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) case *sshFxpExtendedPacketStatVFS: - request := NewRequest("StatVFS", cleanPathWithBase(rs.startDirectory, pkt.Path)) + request := getRequest("StatVFS", cleanPathWithBase(rs.startDirectory, pkt.Path)) rpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID) case hasHandle: handle := pkt.getHandle() diff --git a/request.go b/request.go index 5ffb1628..d3dc8e36 100644 --- a/request.go +++ b/request.go @@ -142,9 +142,13 @@ type Request struct { // NewRequest creates a new Request object. func NewRequest(method, path string) *Request { + return getRequest(method, cleanPath(path)) +} + +func getRequest(method, cleanedPath string) *Request { return &Request{ Method: method, - Filepath: path, + Filepath: cleanedPath, } } @@ -170,7 +174,7 @@ func (r *Request) copy() *Request { // New Request initialized based on packet data func requestFromPacket(ctx context.Context, pkt hasPath, baseDir string) *Request { method := requestMethod(pkt) - request := NewRequest(method, cleanPathWithBase(baseDir, pkt.getPath())) + request := getRequest(method, cleanPathWithBase(baseDir, pkt.getPath())) request.ctx, request.cancelCtx = context.WithCancel(ctx) switch p := pkt.(type) {