Skip to content

Commit f8c62c5

Browse files
committed
4.13.4 fix boringssl seg fail issue.
1 parent bcebc9c commit f8c62c5

File tree

6 files changed

+32
-11
lines changed

6 files changed

+32
-11
lines changed

code/default/gae_proxy/local/check_local_network.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
from gae_proxy.local.config import config
2525

26+
import utils
2627
import simple_http_client
2728
from xlog import getLogger
2829

@@ -190,7 +191,7 @@ def report_fail(ip):
190191
def is_ok(ip=None):
191192
if not ip:
192193
return IPv4.is_ok() or IPv6.is_ok()
193-
elif "." in ip:
194+
elif utils.check_ip_valid4(ip):
194195
return IPv4.is_ok()
195196
else:
196197
return IPv6.is_ok()

code/default/lib/noarch/front_base/boringssl_wrap.py

+17-3
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,16 @@ def x509_name_to_string(xname):
115115

116116
try:
117117
cert = bssl.SSL_get_peer_certificate(self._connection)
118+
if cert == ffi.NULL:
119+
raise Exception("get cert failed")
120+
118121
alt_names_p = bssl.get_alt_names(cert)
122+
if alt_names_p == ffi.NULL:
123+
raise Exception("get alt_names failed")
124+
119125
alt_names = utils.to_str(ffi.string(alt_names_p))
126+
bssl.free(alt_names_p)
127+
120128
subject = x509_name_to_string(bssl.X509_get_subject_name(cert))
121129
issuer = x509_name_to_string(bssl.X509_get_issuer_name(cert))
122130
altName = alt_names.split(";")
@@ -139,15 +147,17 @@ def send(self, data, flags=0):
139147
ret = bssl.SSL_write(self._connection, data, len(data))
140148
return ret
141149
except Exception as e:
142-
self.logger.exception("ssl send:%r", e)
150+
self._context.logger.exception("ssl send:%r", e)
143151
raise e
144152

145153
def recv(self, bufsiz, flags=0):
146154
buf = bytes(bufsiz)
147155
n = bssl.SSL_read(self._connection, buf, bufsiz)
148156
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)
149159
e = socket.error(2)
150-
e.errno = 2
160+
e.errno = errno
151161
raise e
152162

153163
dat = buf[:n]
@@ -160,7 +170,11 @@ def recv_into(self, buf, nbytes=None):
160170
b = ffi.from_buffer(buf)
161171
n = bssl.SSL_read(self._connection, b, nbytes)
162172
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
164178

165179
return n
166180

code/default/lib/noarch/hyper/common/util.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ def to_bytestring(element):
1717
"""
1818
if isinstance(element, bytes):
1919
return element
20-
if isinstance(element, string_types):
21-
return element.encode('utf-8')
22-
elif isinstance(element, bytes):
23-
return element
2420
elif isinstance(element, memoryview):
2521
return element.tobytes()
22+
elif isinstance(element, bytes):
23+
return element
2624
elif isinstance(element, int):
2725
return str(element)
26+
if isinstance(element, string_types):
27+
return element.encode('utf-8')
2828
else:
2929
raise ValueError("Non string type:%s" % type(element))
3030

code/default/lib/tests/test_utils.py

+6
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,9 @@ def test_merge_dict(self):
2323
'b': 3,
2424
'c': 4
2525
})
26+
27+
def test_memory(self):
28+
buf = bytearray(8)
29+
mv = memoryview(buf)
30+
mv3 = mv[3:]
31+
print(len(mv3))

code/default/version.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4.13.3
1+
4.13.4

code/default/x_tunnel/local/client.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def load_config():
106106

107107
# performance parameters
108108
# range 2 - 100
109-
config.set_var("concurent_thread_num", 8)
109+
config.set_var("concurent_thread_num", 20)
110110

111111
# min roundtrip on road if connectoin exist
112112
config.set_var("min_on_road", 3)
@@ -121,7 +121,7 @@ def load_config():
121121
config.set_var("ack_delay", 300)
122122

123123
# max 10M
124-
config.set_var("max_payload", 1 * 64 * 1024)
124+
config.set_var("max_payload", 256 * 1024)
125125

126126
# range 1 - 30
127127
config.set_var("roundtrip_timeout", 25)

0 commit comments

Comments
 (0)