diff --git a/bug.py b/bug.py new file mode 100644 index 0000000..c8a1b96 --- /dev/null +++ b/bug.py @@ -0,0 +1,15 @@ +class A: + def __init__(self, arg=None): + if arg is None: + self.arg = {} + + def set(self): + self.arg['something'] = 'something' + + +a1 = A() +a1.set() +a2 = A() + +print(a2.arg) +# output is {'something': 'something'} diff --git a/mswp.py b/mswp.py index 4396a6a..ef85a9b 100644 --- a/mswp.py +++ b/mswp.py @@ -1,11 +1,12 @@ class Datapack: def __init__(self, method='post', app='all', version='msw/1.0', head=None, body=b'', check_head=True): if head is None: - self.head = {} + head = {} + self.head = head self.method = method self.app = app self.version = version - if not head and check_head: + if not self.head and check_head: self.head = {'nohead': "true"} else: self.head = head @@ -21,7 +22,6 @@ class Datapack: self.encode_data = first_line + b'\n' + heads + b'\n' + self.body def decode(self, only_head=False): - self.head = {} index = self.encode_data.index(b'\n\n') upper = self.encode_data[:index] if not only_head: @@ -37,3 +37,6 @@ class Datapack: self.head[i] = ii if only_head: return self.encode_data[index+2:] + + +dp = Datapack() diff --git a/plugins/net.py b/plugins/net.py index 6bb5161..b1e1fcc 100644 --- a/plugins/net.py +++ b/plugins/net.py @@ -92,7 +92,7 @@ class Netrecv: print('Null data') break except Exception as e: - print('Decode error') + print('Decode error %s: %s' % (type(e), str(e))) break # try unpack # @@ -138,6 +138,13 @@ class Netrecv: aleady_write_down += still_need data = new_data[still_need:] + else: + file = open(dp.head['filename'], 'wb') + file.write(data[:length]) + data = data[length:] + + file.close() + else: # dp.method is not 'file' length = int(dp.head['length']) data_length = len(data) diff --git a/test_file.py b/test_file.py index b21b4a6..844380c 100644 --- a/test_file.py +++ b/test_file.py @@ -1,7 +1,7 @@ import socket import time -data = '''post log msw/1.0 +data = '''file log msw/1.0 from: network flag: abcdefgh filename: download.txt