equal
deleted
inserted
replaced
86 |
86 |
87 @property |
87 @property |
88 def ready_for_read(self): |
88 def ready_for_read(self): |
89 return ((self.early_data and http._END_HEADERS in self.sent) |
89 return ((self.early_data and http._END_HEADERS in self.sent) |
90 or (self.read_wait_sentinel in self.sent and self.data) |
90 or (self.read_wait_sentinel in self.sent and self.data) |
91 or self.closed) |
91 or self.closed or self.remote_closed) |
92 |
92 |
93 def send(self, data): |
93 def send(self, data): |
94 # this is a horrible mock, but nothing needs us to raise the |
94 # this is a horrible mock, but nothing needs us to raise the |
95 # correct exception yet |
95 # correct exception yet |
96 assert not self.closed, 'attempted to write to a closed socket' |
96 assert not self.closed, 'attempted to write to a closed socket' |
114 self._sock = sock |
114 self._sock = sock |
115 self._fail_recv = True |
115 self._fail_recv = True |
116 |
116 |
117 def __getattr__(self, key): |
117 def __getattr__(self, key): |
118 return getattr(self._sock, key) |
118 return getattr(self._sock, key) |
|
119 |
|
120 def __setattr__(self, key, value): |
|
121 if key not in ('_sock', '_fail_recv'): |
|
122 return setattr(self._sock, key, value) |
|
123 return object.__setattr__(self, key, value) |
119 |
124 |
120 def recv(self, amt=-1): |
125 def recv(self, amt=-1): |
121 try: |
126 try: |
122 if self._fail_recv: |
127 if self._fail_recv: |
123 raise socket.sslerror(socket.SSL_ERROR_WANT_READ) |
128 raise socket.sslerror(socket.SSL_ERROR_WANT_READ) |