@@ -113,27 +113,24 @@ async def connect(self):
113113 self .running = False
114114 self .response = None
115115 self .conneted = True
116+ self .buffer = b''
117+ self .delimiter = b"\r \n "
116118 self .pod_id = self .scope ["url_route" ]["kwargs" ]["pod_id" ]
117119
118120 def reader (self , sock ):
121+ self .buffer += sock .read ()
119122 try :
120- delimiter , buffer = b"\r \n " , sock .read ()
121- if delimiter in buffer :
122- index = buffer .index (delimiter )
123- length = int (buffer [:index ], base = 16 )
124- if len (buffer ) - (index + len (delimiter )) < length :
125- buffer += sock .read ()
126- while buffer and self .conneted :
127- index = buffer .index (delimiter )
128- length = int (buffer [:index ], base = 16 )
123+ while self .buffer and self .buffer .endswith (self .delimiter ):
124+ index = self .buffer .index (self .delimiter )
125+ length = int (self .buffer [:index ], base = 16 )
129126 if length == 0 :
130127 asyncio .create_task (self .close (code = 1000 ))
131128 break
132- start_pos = index + len (delimiter )
133- end_pos = start_pos + length + len (delimiter )
129+ start_pos = index + len (self . delimiter )
130+ end_pos = start_pos + length + len (self . delimiter )
134131 asyncio .create_task (
135- self .send (bytes_data = buffer [start_pos :end_pos ].strip (delimiter )))
136- buffer = buffer [end_pos :]
132+ self .send (bytes_data = self . buffer [start_pos :end_pos ].strip (self . delimiter )))
133+ self . buffer = self . buffer [end_pos :]
137134 except BaseException :
138135 asyncio .create_task (self .close (code = 1000 ))
139136
0 commit comments