mirror of
				https://github.com/django/daphne.git
				synced 2025-11-04 09:37:32 +03:00 
			
		
		
		
	Fix bug with sending empty response
This commit is contained in:
		
							parent
							
								
									be1498768f
								
							
						
					
					
						commit
						5c9093ddeb
					
				| 
						 | 
					@ -268,6 +268,9 @@ class AsgiHandler(base.BaseHandler):
 | 
				
			||||||
        Yields (chunk, last_chunk) tuples.
 | 
					        Yields (chunk, last_chunk) tuples.
 | 
				
			||||||
        """
 | 
					        """
 | 
				
			||||||
        position = 0
 | 
					        position = 0
 | 
				
			||||||
 | 
					        if not data:
 | 
				
			||||||
 | 
					            yield data, True
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
        while position < len(data):
 | 
					        while position < len(data):
 | 
				
			||||||
            yield (
 | 
					            yield (
 | 
				
			||||||
                data[position:position + cls.chunk_size],
 | 
					                data[position:position + cls.chunk_size],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -88,3 +88,30 @@ class HandlerTests(SimpleTestCase):
 | 
				
			||||||
        self.assertEqual(reply_messages[0]["more_content"], True)
 | 
					        self.assertEqual(reply_messages[0]["more_content"], True)
 | 
				
			||||||
        self.assertEqual(reply_messages[1]["content"], b"andhereistherest")
 | 
					        self.assertEqual(reply_messages[1]["content"], b"andhereistherest")
 | 
				
			||||||
        self.assertEqual(reply_messages[1].get("more_content", False), False)
 | 
					        self.assertEqual(reply_messages[1].get("more_content", False), False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def test_chunk_bytes(self):
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        Makes sure chunk_bytes works correctly
 | 
				
			||||||
 | 
					        """
 | 
				
			||||||
 | 
					        # Empty string should still return one chunk
 | 
				
			||||||
 | 
					        result = list(FakeAsgiHandler.chunk_bytes(b""))
 | 
				
			||||||
 | 
					        self.assertEqual(len(result), 1)
 | 
				
			||||||
 | 
					        self.assertEqual(result[0][0], b"")
 | 
				
			||||||
 | 
					        self.assertEqual(result[0][1], True)
 | 
				
			||||||
 | 
					        # Below chunk size
 | 
				
			||||||
 | 
					        result = list(FakeAsgiHandler.chunk_bytes(b"12345678901234567890123456789"))
 | 
				
			||||||
 | 
					        self.assertEqual(len(result), 1)
 | 
				
			||||||
 | 
					        self.assertEqual(result[0][0], b"12345678901234567890123456789")
 | 
				
			||||||
 | 
					        self.assertEqual(result[0][1], True)
 | 
				
			||||||
 | 
					        # Exactly chunk size
 | 
				
			||||||
 | 
					        result = list(FakeAsgiHandler.chunk_bytes(b"123456789012345678901234567890"))
 | 
				
			||||||
 | 
					        self.assertEqual(len(result), 1)
 | 
				
			||||||
 | 
					        self.assertEqual(result[0][0], b"123456789012345678901234567890")
 | 
				
			||||||
 | 
					        self.assertEqual(result[0][1], True)
 | 
				
			||||||
 | 
					        # Just above chunk size
 | 
				
			||||||
 | 
					        result = list(FakeAsgiHandler.chunk_bytes(b"123456789012345678901234567890a"))
 | 
				
			||||||
 | 
					        self.assertEqual(len(result), 2)
 | 
				
			||||||
 | 
					        self.assertEqual(result[0][0], b"123456789012345678901234567890")
 | 
				
			||||||
 | 
					        self.assertEqual(result[0][1], False)
 | 
				
			||||||
 | 
					        self.assertEqual(result[1][0], b"a")
 | 
				
			||||||
 | 
					        self.assertEqual(result[1][1], True)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user