| 
					
				 | 
			
			
				@@ -1954,13 +1954,17 @@ fetch_from_evbuffer_socks_client(struct evbuffer *buf, int state, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   size_t datalen; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int r; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  data = evbuffer_pullup(buf, 128); /* Make sure we have at least 128 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                     * contiguous bytes if possible. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  datalen = evbuffer_get_contiguous_space(buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /* Linearize the SOCKS response in the buffer, up to 128 bytes. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * (parse_socks_client shouldn't need to see anything beyond that.) */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  datalen = evbuffer_get_length(buf); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (datalen > 128) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    datalen = 128; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data = evbuffer_pullup(buf, datalen); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   r = parse_socks_client(data, datalen, state, reason, &drain); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (drain > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     evbuffer_drain(buf, drain); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  else if (drain < 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     evbuffer_drain(buf, evbuffer_get_length(buf)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return r; 
			 |