mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
merge
This commit is contained in:
commit
fde86ff673
2 changed files with 10 additions and 1 deletions
|
@ -232,12 +232,13 @@ class FTP:
|
||||||
This does not follow the procedure from the RFC to send Telnet
|
This does not follow the procedure from the RFC to send Telnet
|
||||||
IP and Synch; that doesn't seem to work with the servers I've
|
IP and Synch; that doesn't seem to work with the servers I've
|
||||||
tried. Instead, just send the ABOR command as OOB data.'''
|
tried. Instead, just send the ABOR command as OOB data.'''
|
||||||
line = 'ABOR' + CRLF
|
line = b'ABOR' + B_CRLF
|
||||||
if self.debugging > 1: print('*put urgent*', self.sanitize(line))
|
if self.debugging > 1: print('*put urgent*', self.sanitize(line))
|
||||||
self.sock.sendall(line, MSG_OOB)
|
self.sock.sendall(line, MSG_OOB)
|
||||||
resp = self.getmultiline()
|
resp = self.getmultiline()
|
||||||
if resp[:3] not in ('426', '225', '226'):
|
if resp[:3] not in ('426', '225', '226'):
|
||||||
raise error_proto(resp)
|
raise error_proto(resp)
|
||||||
|
return resp
|
||||||
|
|
||||||
def sendcmd(self, cmd):
|
def sendcmd(self, cmd):
|
||||||
'''Send a command and return the response.'''
|
'''Send a command and return the response.'''
|
||||||
|
|
|
@ -42,6 +42,8 @@ class DummyFTPHandler(asynchat.async_chat):
|
||||||
|
|
||||||
def __init__(self, conn):
|
def __init__(self, conn):
|
||||||
asynchat.async_chat.__init__(self, conn)
|
asynchat.async_chat.__init__(self, conn)
|
||||||
|
# tells the socket to handle urgent data inline (ABOR command)
|
||||||
|
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_OOBINLINE, 1)
|
||||||
self.set_terminator(b"\r\n")
|
self.set_terminator(b"\r\n")
|
||||||
self.in_buffer = []
|
self.in_buffer = []
|
||||||
self.dtp = None
|
self.dtp = None
|
||||||
|
@ -158,6 +160,9 @@ class DummyFTPHandler(asynchat.async_chat):
|
||||||
self.push('221 quit ok')
|
self.push('221 quit ok')
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
def cmd_abor(self, arg):
|
||||||
|
self.push('226 abor ok')
|
||||||
|
|
||||||
def cmd_stor(self, arg):
|
def cmd_stor(self, arg):
|
||||||
self.push('125 stor ok')
|
self.push('125 stor ok')
|
||||||
|
|
||||||
|
@ -312,6 +317,9 @@ class TestFTPClass(TestCase):
|
||||||
# Ensure the connection gets closed; sock attribute should be None
|
# Ensure the connection gets closed; sock attribute should be None
|
||||||
self.assertEqual(self.client.sock, None)
|
self.assertEqual(self.client.sock, None)
|
||||||
|
|
||||||
|
def test_abort(self):
|
||||||
|
self.client.abort()
|
||||||
|
|
||||||
def test_retrbinary(self):
|
def test_retrbinary(self):
|
||||||
def callback(data):
|
def callback(data):
|
||||||
received.append(data.decode('ascii'))
|
received.append(data.decode('ascii'))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue