log RLIMIT_NOFILE
let http_simple the same as http_post when server_decode
This commit is contained in:
		
							parent
							
								
									3d4356e8b4
								
							
						
					
					
						commit
						1221a1f3f6
					
				
					 3 changed files with 9 additions and 34 deletions
				
			
		|  | @ -189,6 +189,8 @@ class TransferBase(object): | |||
| 		socket.setdefaulttimeout(timeout) | ||||
| 		last_rows = [] | ||||
| 		db_instance = obj() | ||||
| 		import resource | ||||
| 		logging.info('current process RLIMIT_NOFILE resource: soft %d hard %d'  % resource.getrlimit(resource.RLIMIT_NOFILE)) | ||||
| 		try: | ||||
| 			while True: | ||||
| 				load_config() | ||||
|  |  | |||
|  | @ -298,12 +298,14 @@ class auth_sha1(verify_base): | |||
|         self.recv_buf += buf | ||||
|         out_buf = b'' | ||||
|         if not self.has_recv_header: | ||||
|             if len(self.recv_buf) < 4: | ||||
|             if len(self.recv_buf) < 6: | ||||
|                 return (b'', False) | ||||
|             crc = struct.pack('<I', binascii.crc32(self.server_info.key) & 0xFFFFFFFF) | ||||
|             if crc != self.recv_buf[:4]: | ||||
|                 return self.not_match_return(self.recv_buf) | ||||
|             length = struct.unpack('>H', self.recv_buf[4:6])[0] | ||||
|             if length > 2048: | ||||
|                 return self.not_match_return(self.recv_buf) | ||||
|             if length > len(self.recv_buf): | ||||
|                 return (b'', False) | ||||
|             sha1data = hmac.new(self.server_info.recv_iv + self.server_info.key, self.recv_buf[:length - 10], hashlib.sha1).digest()[:10] | ||||
|  | @ -529,12 +531,14 @@ class auth_sha1_v2(verify_base): | |||
|         self.recv_buf += buf | ||||
|         out_buf = b'' | ||||
|         if not self.has_recv_header: | ||||
|             if len(self.recv_buf) < 4: | ||||
|             if len(self.recv_buf) < 6: | ||||
|                 return (b'', False) | ||||
|             crc = struct.pack('<I', binascii.crc32(self.salt + self.server_info.key) & 0xFFFFFFFF) | ||||
|             if crc != self.recv_buf[:4]: | ||||
|                 return self.not_match_return(self.recv_buf) | ||||
|             length = struct.unpack('>H', self.recv_buf[4:6])[0] | ||||
|             if length > 2048: | ||||
|                 return self.not_match_return(self.recv_buf) | ||||
|             if length > len(self.recv_buf): | ||||
|                 return (b'', False) | ||||
|             sha1data = hmac.new(self.server_info.recv_iv + self.server_info.key, self.recv_buf[:length - 10], hashlib.sha1).digest()[:10] | ||||
|  |  | |||
|  | @ -167,7 +167,7 @@ class http_simple(plain.plain): | |||
|         self.recv_buffer += buf | ||||
|         buf = self.recv_buffer | ||||
|         if len(buf) > 10: | ||||
|             if match_begin(buf, b'GET /') or match_begin(buf, b'POST /'): | ||||
|             if match_begin(buf, b'GET ') or match_begin(buf, b'POST '): | ||||
|                 if len(buf) > 65536: | ||||
|                     self.recv_buffer = None | ||||
|                     logging.warn('http_simple: over size') | ||||
|  | @ -238,37 +238,6 @@ class http_post(http_simple): | |||
|             return (b'E'*64, False, False) | ||||
|         return (buf, True, False) | ||||
| 
 | ||||
|     def server_decode(self, buf): | ||||
|         if self.has_recv_header: | ||||
|             return (buf, True, False) | ||||
| 
 | ||||
|         self.recv_buffer += buf | ||||
|         buf = self.recv_buffer | ||||
|         if len(buf) > 10: | ||||
|             if match_begin(buf, b'GET ') or match_begin(buf, b'POST '): | ||||
|                 if len(buf) > 65536: | ||||
|                     self.recv_buffer = None | ||||
|                     logging.warn('http_post: over size') | ||||
|                     return self.not_match_return(buf) | ||||
|             else: #not http header, run on original protocol | ||||
|                 self.recv_buffer = None | ||||
|                 logging.debug('http_post: not match begin') | ||||
|                 return self.not_match_return(buf) | ||||
|         else: | ||||
|             return (b'', True, False) | ||||
| 
 | ||||
|         if b'\r\n\r\n' in buf: | ||||
|             datas = buf.split(b'\r\n\r\n', 1) | ||||
|             ret_buf = self.get_data_from_http_header(buf) | ||||
|             if len(datas) > 1: | ||||
|                 ret_buf += datas[1] | ||||
|             if len(ret_buf) >= 7: | ||||
|                 self.has_recv_header = True | ||||
|                 return (ret_buf, True, False) | ||||
|             return self.not_match_return(buf) | ||||
|         else: | ||||
|             return (b'', True, False) | ||||
| 
 | ||||
| class random_head(plain.plain): | ||||
|     def __init__(self, method): | ||||
|         self.method = method | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue