@@ -606,18 +606,11 @@ def put_copydata(self, messages):
606606 self .state = (Receiving , self .standard_put )
607607 return self .standard_put (messages )
608608
609- # Build a sequence of raw copy data.
610- lines = []
611- for x in messages :
612- # XXX: Optimize this out using a C function.
613- if x [0 ] is not element .CopyData .type :
614- # This is extremely unlikely to happen as the
615- # last message in the list was copydata.
616- # However, if something did manage to sneak in,
617- # handle it properly.
618- self .state = (Receiving , self .standard_put )
619- return self .standard_put (messages )
620- lines .append (x [1 ])
609+ cdt = element .CopyData .type
610+ lines = [x [1 ] for x in messages if x [0 ] is cdt ]
611+ if len (lines ) != len (messages ):
612+ self .state = (Receiving , self .standard_put )
613+ return self .standard_put (messages )
621614
622615 if not self .completed or self .completed [- 1 ][0 ] != id (messages ):
623616 self .completed .append ((id (messages ), lines ))
@@ -637,13 +630,10 @@ def put_tupledata(self, messages):
637630
638631 p = element .Tuple .parse
639632 t = element .Tuple .type
640- tuplemessages = []
641- a = tuplemessages .append
642- for (TYP ,DATA ) in messages :
643- if TYP is not t :
644- self .state = (Receiving , self .standard_put )
645- return self .standard_put (messages )
646- a (p (DATA ))
633+ tuplemessages = [p (x [1 ]) for x in messages if x [0 ] is t ]
634+ if len (tuplemessages ) != len (messages ):
635+ self .state = (Receiving , self .standard_put )
636+ return self .standard_put (messages )
647637
648638 if not self .completed or self .completed [- 1 ][0 ] != id (messages ):
649639 self .completed .append (((id (messages ), tuplemessages )))
0 commit comments