Dont wait for cancel response when user denies permission
This commit is contained in:
parent
ca485cc0f7
commit
2cae0ab695
3 changed files with 19 additions and 2 deletions
|
|
@ -500,7 +500,7 @@ func (self *manager) on_file_transfer_response(ftc *FileTransmissionCommand) (er
|
|||
if ftc.Status == `OK` {
|
||||
self.state = state_waiting_for_file_metadata
|
||||
} else {
|
||||
return fmt.Errorf(`Permission for transfer denied`)
|
||||
return os.ErrPermission
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf(`Unexpected response from terminal: %s`, ftc.String())
|
||||
|
|
@ -780,6 +780,10 @@ func (self *handler) on_file_transfer_response(ftc *FileTransmissionCommand) (er
|
|||
}
|
||||
transfer_started := self.manager.state == state_transferring
|
||||
if merr := self.manager.on_file_transfer_response(ftc); merr != nil {
|
||||
if merr == os.ErrPermission {
|
||||
// terminal will not respond to cancel request
|
||||
return fmt.Errorf("Permission denied by user")
|
||||
}
|
||||
self.abort_with_error(merr)
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -179,6 +179,7 @@ def __init__(self, cmd, cwd, allow=True, env=None):
|
|||
class TestFileTransmission(BaseTest):
|
||||
|
||||
def setUp(self):
|
||||
self.direction_receive = False
|
||||
super().setUp()
|
||||
self.tdir = os.path.realpath(tempfile.mkdtemp())
|
||||
self.responses = []
|
||||
|
|
@ -327,7 +328,7 @@ def test_rsync_hashers(self):
|
|||
@contextmanager
|
||||
def run_kitten(self, cmd, home_dir='', allow=True):
|
||||
cwd = os.path.realpath(tempfile.mkdtemp(suffix='-cwd', dir=self.tdir))
|
||||
cmd = [kitten_exe(), 'transfer'] + cmd
|
||||
cmd = [kitten_exe(), 'transfer'] + (['--direction=receive'] if self.direction_receive else []) + cmd
|
||||
env = {'PWD': cwd}
|
||||
if home_dir:
|
||||
env['HOME'] = home_dir
|
||||
|
|
@ -342,6 +343,17 @@ def run_kitten(self, cmd, home_dir='', allow=True):
|
|||
if os.path.exists(cwd):
|
||||
shutil.rmtree(cwd)
|
||||
|
||||
def test_transfer_receive(self):
|
||||
self.direction_receive = True
|
||||
src = os.path.join(self.tdir, 'src')
|
||||
self.src_data = os.urandom(11113)
|
||||
with open(src, 'wb') as s:
|
||||
s.write(self.src_data)
|
||||
dest = os.path.join(self.tdir, 'dest')
|
||||
with self.run_kitten([src, dest], allow=False) as pty:
|
||||
pty.wait_till_child_exits(require_exit_code=1)
|
||||
self.assertFalse(os.path.exists(dest))
|
||||
|
||||
def test_transfer_send(self):
|
||||
src = os.path.join(self.tdir, 'src')
|
||||
self.src_data = os.urandom(9137)
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ package wcswidth
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
|
||||
"kitty/tools/utils"
|
||||
)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue