@@ -115,8 +115,16 @@ def x509_name_to_string(xname):
115
115
116
116
try :
117
117
cert = bssl .SSL_get_peer_certificate (self ._connection )
118
+ if cert == ffi .NULL :
119
+ raise Exception ("get cert failed" )
120
+
118
121
alt_names_p = bssl .get_alt_names (cert )
122
+ if alt_names_p == ffi .NULL :
123
+ raise Exception ("get alt_names failed" )
124
+
119
125
alt_names = utils .to_str (ffi .string (alt_names_p ))
126
+ bssl .free (alt_names_p )
127
+
120
128
subject = x509_name_to_string (bssl .X509_get_subject_name (cert ))
121
129
issuer = x509_name_to_string (bssl .X509_get_issuer_name (cert ))
122
130
altName = alt_names .split (";" )
@@ -139,15 +147,17 @@ def send(self, data, flags=0):
139
147
ret = bssl .SSL_write (self ._connection , data , len (data ))
140
148
return ret
141
149
except Exception as e :
142
- self .logger .exception ("ssl send:%r" , e )
150
+ self ._context . logger .exception ("ssl send:%r" , e )
143
151
raise e
144
152
145
153
def recv (self , bufsiz , flags = 0 ):
146
154
buf = bytes (bufsiz )
147
155
n = bssl .SSL_read (self ._connection , buf , bufsiz )
148
156
if n <= 0 :
157
+ errno = bssl .SSL_get_error (self ._connection , n )
158
+ self ._context .logger .warn ("recv errno: %d ip:%s" , errno , self .ip_str )
149
159
e = socket .error (2 )
150
- e .errno = 2
160
+ e .errno = errno
151
161
raise e
152
162
153
163
dat = buf [:n ]
@@ -160,7 +170,11 @@ def recv_into(self, buf, nbytes=None):
160
170
b = ffi .from_buffer (buf )
161
171
n = bssl .SSL_read (self ._connection , b , nbytes )
162
172
if n <= 0 :
163
- return None
173
+ errno = bssl .SSL_get_error (self ._connection , n )
174
+ self ._context .logger .warn ("recv_into errno: %d ip:%s" , errno , self .ip_str )
175
+ e = socket .error (2 )
176
+ e .errno = errno
177
+ raise e
164
178
165
179
return n
166
180
0 commit comments