Skip to content

Commit

Permalink
Merge pull request #73 from lucadjc/master
Browse files Browse the repository at this point in the history
Fixed openssl 3.1.X setting for no certificate configuration
  • Loading branch information
atxbyea authored Aug 29, 2023
2 parents 42dcec8 + 113ebed commit 2a1c02a
Show file tree
Hide file tree
Showing 16 changed files with 210 additions and 47 deletions.
2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@

.DS_Store
*.pyc
/.vs
/custom_components/climate_ip/ac14k_m.pem
3 changes: 3 additions & 0 deletions .vs/ProjectSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"CurrentProjectSetting": null
}
9 changes: 9 additions & 0 deletions .vs/VSWorkspaceState.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"ExpandedNodes": [
"",
"\\custom_components",
"\\custom_components\\climate_ip"
],
"SelectedNode": "\\custom_components\\climate_ip\\climate.py",
"PreviewInSolutionExplorer": false
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Empty file.
Binary file added .vs/samsungrac/v17/.wsuo
Binary file not shown.
Binary file added .vs/samsungrac/v17/Browse.VC.db
Binary file not shown.
Binary file added .vs/slnx.sqlite
Binary file not shown.
131 changes: 131 additions & 0 deletions custom_components/climate_ip/ac14k_m_old.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
Bag Attributes
friendlyName: ac14k_m
localKeyID: 54 69 6D 65 20 31 34 35 35 34 39 32 33 35 32 36 39 36
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDeXvhcsqRFWfQt
Qr2TGW+ePJzrKQVNOZmCGFXrBmOKa2gcZvXqDe71upkCmbXxDZbsqU1nFox6WtKy
za+JE1EaWIjVFV/D0hnnF+CA56851rFjAx7YYVtd9TwJYV1lSfJaQBU/ecUys0SX
lKZJtjIoJ/PyLREE79TjOqTxXMXnDpiAt3oiwApZMweJ5z2QViqtRepkI33GDgYc
LzamIengSG6WZkEUr2roY0il4aVXf3IRVRX+5cJ2L5462kFPKm/UnrXrSsrLwbF9
ltSlNA8FgpHN3d9ZyqB3MB46oGYyxYYU7a+/R3RAx0joNfVPFe8riQXQcoNEgalb
c8f7N4HPAgMBAAECggEABL80QA5UMWLNMpYlI9m8Jz2V//MdONvM6hkI5H57a34F
d+2+vCNWAYrdL1AGsUGgAidPDq9NimMb8lMvtxZhedV//kR5id2XTfaVhUrs06hA
myN66hWR9LyCbpTUgJAGi2Soz3US/5USFsZGknZANdk8fOP3ZAqWmc8rrDdVxivg
Z3qjiqgIZg24XsZmnK/QJejP4FLMqm6YUouH//u9xSKvTwkg89qxvygW9xNBNfi/
LrBHip/k8LnynKRE2odQWt74HcTjbZW4rxXrJ0tqDSIh8bUB23mRjFh1k4aKXnz3
Y/CDsfxvAutVi85/zyxYaIT6daP+PxvywwgjVhYHIQKBgQDyMxmGdi5kk3ePv0lM
lC28gVNhgKfhsXL8xIzcd/UM3eEK4baA+AKI9p6ifZ8g90NUJGuHxCp8/9yOKcmk
tY5toE45nH4fH9Z3j9NtWHMhXJDGWV+DjeiWmshbUqd7/OoIl1vig1npQqX+PXJR
pwDHnjkQbkyum4k8/IruHx813wKBgQDrCqK0rBkMaarr5eyOJ9BxhCej8i5kCzm7
XSaNgXtpBIQ4Y4r412M2JWaSLnDxlAc0iUhNGnIn4zkEP2HzX5JU4Yto9YAlRZnu
NQSvuVgyLiBCbS7WrRAlsNpTeCU3m+c5QNXBzBlHCiTdw3WS4bINOftsB3xnlJ+D
y/0YZozSEQKBgQCgWV5z3Dh40/0bSVyA+7WQENsgOWpsjOwBFyvfJvgxLZC5gJgw
qIIdJZH/KEY7MBj+UyJx/1jV6xudb2MVzjHeuHwxvj7t4kk+XRVwVlfa5YrgFvma
glBTrWQquf0ypE5Zo8PsomPbgAmf2hSepH9qqYFENJJGI6lnnBdq8WXbZwKBgQCR
p3ye5At9wrnWCB0pFwk4X4JFOd5/xukW8CnlBTmaId9iJmXHwYpM0q6Wpkr9mhNA
/lYc2eemSkxaEoE71Z0UFtVSzNiFwHUcxiRKVVyPdEAvigO9q2/XO5qAoXLG3ElV
FJWizD1Z5bJk7yycQlsZkTX6g0UX12VmwnHsvhhEUQKBgF0AVToAk+/OPxlA3N4A
Xn624Ktxzy/58NSLUfQ57AtL2zivoJzfmhUwgYkPsp+63Wklpcq7X7Q2NB7WscC4
rICqHxNow/KSzwuR6L3u/kewvlsrgTIM2Pp//+QdTK9GGU3HHAZKaNiB8m20k1Bs
NTANFxBk7alY0G7ZUhuzWkg6
-----END PRIVATE KEY-----
Bag Attributes
friendlyName: ac14k_m
localKeyID: 54 69 6D 65 20 31 34 35 35 34 39 32 33 35 32 36 39 36
subject=/C=KR/O=Samsung Electronics/CN=AC14K_M/[email protected]
issuer=/C=KR/O=Samsung Electronics/CN=RemoteAccessCA(CE)
-----BEGIN CERTIFICATE-----
MIIDmzCCAoOgAwIBAgIBCTANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQGEwJLUjEc
MBoGA1UECgwTU2Ftc3VuZyBFbGVjdHJvbmljczEbMBkGA1UEAwwSUmVtb3RlQWNj
ZXNzQ0EoQ0UpMCIYDzE5NjAwMTAxMDAwMDAwWhgPMjA2MDAxMDEwMDAwMDBaMGEx
CzAJBgNVBAYTAktSMRwwGgYDVQQKExNTYW1zdW5nIEVsZWN0cm9uaWNzMRAwDgYD
VQQDFAdBQzE0S19NMSIwIAYJKoZIhvcNAQkBFhNBQzE0S19NQHNhbXN1bmcuY29t
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3l74XLKkRVn0LUK9kxlv
njyc6ykFTTmZghhV6wZjimtoHGb16g3u9bqZApm18Q2W7KlNZxaMelrSss2viRNR
GliI1RVfw9IZ5xfggOevOdaxYwMe2GFbXfU8CWFdZUnyWkAVP3nFMrNEl5SmSbYy
KCfz8i0RBO/U4zqk8VzF5w6YgLd6IsAKWTMHiec9kFYqrUXqZCN9xg4GHC82piHp
4EhulmZBFK9q6GNIpeGlV39yEVUV/uXCdi+eOtpBTypv1J6160rKy8GxfZbUpTQP
BYKRzd3fWcqgdzAeOqBmMsWGFO2vv0d0QMdI6DX1TxXvK4kF0HKDRIGpW3PH+zeB
zwIDAQABo3MwcTAdBgNVHQ4EFgQUXzEjosLzA6xbR1KAqnmAp3BNM6MwHwYDVR0j
BBgwFoAU/12TkC/BOF7xDaZZWJ+DGN6nMxcwDAYDVR0TBAUwAwEB/zAhBgNVHREE
GjAYggtzYW1zdW5nLmNvbYIJbG9jYWxob3N0MA0GCSqGSIb3DQEBBQUAA4IBAQBW
0mStlbdvrHqDJ+KOKVf0C/y9FKTODqo/6/wJNZeZ+8ezPza4nFq70MwQYTpSbZhz
5w8bQP9fwSAoa2Vki8ZwcSd85Vi2tHz9O4C7d7zBA3FU8AL3NoEMFv6OGWGPnTY5
mG/Hn+LxuwQddlysfbRDds1LBY8DBUJNAmIeeWqA5Eg8DW6xJUwHeXUElJpSXHW6
XGvpWgAhXqoIf6TirdCrPY6+IzV/FcuVtBDGi+JoxgrMfMLgLEVjeSY96DJinHgZ
RT0FkA5e06Z+fqHh9Btu+aed+kuGSmya/A5wStOkGeKEbezbbN2gtW07lN6VxX3J
OCgygA+hmnBVnRDA8Jzu
-----END CERTIFICATE-----
Bag Attributes
friendlyName: CN=RemoteAccessCA(CE),O=Samsung Electronics,C=KR
subject=/C=KR/O=Samsung Electronics/CN=RemoteAccessCA(CE)
issuer=/C=KR/O=Samsung Electronics/CN=CECA
-----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIBADANBgkqhkiG9w0BAQUFADA6MQswCQYDVQQGEwJLUjEc
MBoGA1UECgwTU2Ftc3VuZyBFbGVjdHJvbmljczENMAsGA1UEAwwEQ0VDQTAiGA8x
OTYwMDEwMTAwMDAwMFoYDzIwNjAwMTAxMDAwMDAwWjBIMQswCQYDVQQGEwJLUjEc
MBoGA1UECgwTU2Ftc3VuZyBFbGVjdHJvbmljczEbMBkGA1UEAwwSUmVtb3RlQWNj
ZXNzQ0EoQ0UpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtatz9GvV
qbV395Whnad9MC9TEOiXuwnw37QHvQUwOTFgc6AenX5SORfb4UTw+0ApFNba9DlY
Xx/K9E5b5DGasDVGGTn+z+6MPB7GuAjkP+WSRwHMjrHRNqrBOr1YJUw3SIbMkRoT
460k9AD9DQDBORRtGBGwcBw6BvdasA+/L3Q63aJ7pDoj3qxocdcgk/zFq0OrxFDL
PMTL7a+a9DS8G10K73XGgES0RBwwhlXXVuLUprD6RgbeLHFsPpIq5vzzEpAYMCF6
vkZKjDGEW7JVTgUu0E37niN3NQv1gIXlJusDH6RWfFQxENZsdFkT/l+kTuY283Ga
2Ei1HsW3Xpt88QIDAQABo1AwTjAdBgNVHQ4EFgQU/12TkC/BOF7xDaZZWJ+DGN6n
MxcwHwYDVR0jBBgwFoAURwF9jkihypJa2u6zRwKrZwRlACswDAYDVR0TBAUwAwEB
/zANBgkqhkiG9w0BAQUFAAOCAQEAZkjxN4O92e1RTaXx1mpazyT98sJVl46R51s1
CTPq35HVfTiBOAu0C5MR6a9vIIFJScy5h69VN4OwDDbMhe/k3m6EfAutlL7lRrre
OT853HJahxdavzaXJ7tcrI/yDJI0X5GbQ8W74mmDt2/5rXsaB+h+NrToGqf6Hvf/
m7ZhUnCAt0hhLmltxTVYS25s9KoiIH0rXOb9cqUFsmBMEG2pHWC5AiSc0cXJm+kU
3z0B2GS+4IjGdVr3FTPzzTXrpqq/X1cIVKAum5WfsFMS0CRvqTVNVwYg52n69T2B
NPCCEpp9rsIieZ58jsnc506Uc+1Vp+NmBI2A/ecypZxSb6v9gg==
-----END CERTIFICATE-----
Bag Attributes
friendlyName: CN=CECA,O=Samsung Electronics,C=KR
subject=/C=KR/O=Samsung Electronics/CN=CECA
issuer=/C=KR/O=Samsung Electronics/CN=ROOTCA
-----BEGIN CERTIFICATE-----
MIIDRTCCAi2gAwIBAgIBBDANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGEwJLUjEc
MBoGA1UECgwTU2Ftc3VuZyBFbGVjdHJvbmljczEPMA0GA1UEAwwGUk9PVENBMCIY
DzE5NjAwMTAxMDAwMDAwWhgPMjA2MDAxMDEwMDAwMDBaMDoxCzAJBgNVBAYTAktS
MRwwGgYDVQQKDBNTYW1zdW5nIEVsZWN0cm9uaWNzMQ0wCwYDVQQDDARDRUNBMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtv1WJJ7tTs/aa1ZZRjMPPLeb
n/Ev0Y28CSBj/6P031/veZSg/2z65QZUvPjv8MZnIgNoMpxMGbPPO4Dxj+QJthBk
WydWRPguPyE+w3U4SdayZXWpLZTpKfHco3CklFwEqZtG/wTxHD1oOvtT0e2g5c79
hNQt9lQ4Wwzqa3MvQd0JyeB4syy2zRLo5NjJZl1BVn2oTt4xGCjjtAXtAqqHEbEf
pcvB3hPdIpFe6M8zuN22kROKaQ5i4XP4CyEpbFlgKRcWBGQFX3I5f5TdD3Yw1Ril
OLLL9wFsJ+iWLka9tAIcJKCNOf48p7aXm6COFwmjtCNu4wjQozwi6cycKUgxNQID
AQABo1AwTjAdBgNVHQ4EFgQURwF9jkihypJa2u6zRwKrZwRlACswHwYDVR0jBBgw
FoAU7andrmFFrxYM8+93lrn/Fq47sXMwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
AQUFAAOCAQEATexseQBXSfUR7fFTFxq6aAvHWIN+h3QLeN1sq8KCM4fbdkH3lOUP
rKW3w1ag62bnJVNjT4xPtzH/DyrqlzQUPTb7S0PfIXt2mu/VURnrmuXidS2grNwv
eu10gURZaz9N2UZEhY7E80tUZwcjAV+YP8+x3/iRQSrWvcMma/r01eUnwrF4xaE9
EYtJ/jTRre8MpEH/lg06m+rZf9Lk/yhG6at0YnUAIytThqFV4Cj8T8jBX+KG8BCo
VyUsFyrO+D6X98gMdTZnLqC1P1iWuxyrOWZTgsf44f5GXzmLqe5KLPvkDb4MywTa
nXrSOPSkcIgvS6WYw2Rii+e6lfVzqmhAmg==
-----END CERTIFICATE-----
Bag Attributes
friendlyName: CN=ROOTCA,O=Samsung Electronics,C=KR
subject=/C=KR/O=Samsung Electronics/CN=ROOTCA
issuer=/C=KR/O=Samsung Electronics/CN=ROOTCA
-----BEGIN CERTIFICATE-----
MIIDRzCCAi+gAwIBAgIBADANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGEwJLUjEc
MBoGA1UECgwTU2Ftc3VuZyBFbGVjdHJvbmljczEPMA0GA1UEAwwGUk9PVENBMCIY
DzE5NjAwMTAxMDAwMDAwWhgPMjA2MDAxMDEwMDAwMDBaMDwxCzAJBgNVBAYTAktS
MRwwGgYDVQQKDBNTYW1zdW5nIEVsZWN0cm9uaWNzMQ8wDQYDVQQDDAZST09UQ0Ew
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCd67g2hzhbIeSBoFfeqbXi
tzbO4dCWeCigVfmwEDhR1SDA0MfHOVlFpvuFr3WyFPvQZ0ccNrsTpBs5YieI/jZi
FYWO0ktbqQorL1CIFqBL9kAF+34BYtpl98PgJ1grLOH5T3GugJA7Irw0plEFmOfs
IydlUIQHl3oqyMIWPa2nIZ/FGi3hAquEPrvzHZB+QO4c+6tV1WLIaCjn88xkYuwz
uGYxaqJpnGdqhjZRIuHb2DEZPlP1VGdTTAttno36CyWqeHrSC8fXCSu55Zk+1rbC
Py/phOJjSyce2qk0IebETAYLCLqU7ABJxUxrolMrP37OB+Kqe4RWovaeMcdcNOOt
AgMBAAGjUDBOMB0GA1UdDgQWBBTtqd2uYUWvFgzz73eWuf8WrjuxczAfBgNVHSME
GDAWgBTtqd2uYUWvFgzz73eWuf8WrjuxczAMBgNVHRMEBTADAQH/MA0GCSqGSIb3
DQEBBQUAA4IBAQBkwK95x8JCAnY0F2bMwG5+7QfY+ci8s8m1ODi3v19HECS6nG9j
SXgwihEtQ3HqvUler+n7aOeAZlgm+BymM2GvuicveYN/nevIvzlpMOn2L6xU19/H
zM2eoDVfS49+i/cwoi/A7fcZmIYggZho2UJR/GvKc79g6EAhT7/i5alBZF0enMsA
9okzakb/aohQE9SzsEHnhVKpGAjvu0/TJK9WwX6mkiIEJY+mzQMWgEeQt6WWIgAb
gSX9NueH80tpZ9KqFnqnOoLxTAa7k0RPBRwyUO9CDhSnlWIEcsD9sqR2M+niOFnT
KBHcLDDiEU3llprD8FRV3unYrl0F0B2GGdRk
-----END CERTIFICATE-----
16 changes: 11 additions & 5 deletions custom_components/climate_ip/climate.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,8 @@ def __init__(self, rac_controller, config):
_LOGGER.info("self._name: {}".format(self._name))

self._poll = None
self._unique_id = None
self._unique_id = self._name
_LOGGER.info("self._unique_id: {}".format(self._unique_id))
str_poll = config.get(CONFIG_DEVICE_POLL, "")
if str_poll:
str_poll = str_poll.lower()
Expand Down Expand Up @@ -250,10 +251,15 @@ def should_poll(self):

@property
def unique_id(self):
if self._unique_id is None and self.rac.unique_id is not None:
_LOGGER.info("About to set unique id {}".format(self.rac.unique_id))
self._unique_id = "climate_ip_" + self.rac.unique_id

#if self._unique_id is None and self.rac.unique_id is not None:
# _LOGGER.info("About to set unique id {}".format(self.rac.unique_id))
# self._unique_id = "climate_ip_" + self.rac.unique_id

if self._unique_id is None:
name_value = self._name
_LOGGER.info("About to set unique id {}".format(name_value))
self._unique_id = "climate_ip_" + name_value

_LOGGER.info("Returning unique id of {}".format(self._unique_id))
return self._unique_id

Expand Down
7 changes: 5 additions & 2 deletions custom_components/climate_ip/controller_yaml.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ def __init__(self, config, logger):
self._retries_count = 0
self._last_device_state = None
self._poll = None
self._unique_id = None
self._unique_id = self._device_id
self._uniqe_id_prop = None

@property
Expand Down Expand Up @@ -258,7 +258,7 @@ def update_state(self):
self._attributes.update(self._state_getter.state_attributes)

#[lucadjc]: added last sync date to send some alerts from hassio in case of connection error
self._attributes['last_sync'] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
self._attributes['last_sync'] = ''

toJSON = json.dumps(self._state_getter.state_attributes['device_state'])
try:
Expand All @@ -275,6 +275,9 @@ def update_state(self):
self._attributes['AC_ADD2_OPTIONCODE'] = json_data['AC_ADD2_OPTIONCODE']
self._attributes['AC_ADD2_USEDTIME'] = json_data['AC_ADD2_USEDTIME']
self._attributes['AC_ADD2_FILTER_USE_TIME'] = json_data['AC_ADD2_FILTER_USE_TIME']

if(len(json_data['AC_ADD2_OUT_VERSION']) != 0):
self._attributes['last_sync'] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
except:
self._logger.info("Error: update_state")

Expand Down
13 changes: 7 additions & 6 deletions custom_components/climate_ip/manifest.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
{
"domain": "climate_ip",
"name": "Climate IP",
"documentation": "https://github.com/atxbyea/samsungrac",
"issue_tracker": "https://github.com/atxbyea/samsungrac/issues",
"dependencies": [],
"config_flow": false,
"version": "3.5.2",
"codeowners": [
"@SebuZet"
],
"config_flow": false,
"dependencies": [],
"documentation": "https://github.com/atxbyea/samsungrac",
"iot_class": "local_polling",
"issue_tracker": "https://github.com/atxbyea/samsungrac/issues",
"requirements": [
"requests>=2.21.0",
"xmljson>=0.2.0"
]
],
"version": "3.5.2"
}


76 changes: 44 additions & 32 deletions custom_components/climate_ip/samsung_2878.py
Original file line number Diff line number Diff line change
Expand Up @@ -244,39 +244,51 @@ def send_socket_command(self, command, retries=1):
self.send_socket_command(command, retries - 1)

def create_connection(self):
sslSocket = None
cfg = self._cfg
self.logger.info("Creating ssl context")
sslContext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
self.logger.info("Setting up ciphers")
sslContext.set_ciphers("HIGH:!DH:!aNULL")
self.logger.info("Setting up verify mode")
sslContext.verify_mode = (
ssl.CERT_REQUIRED if cfg.cert is not None else ssl.CERT_NONE
)
if cfg.cert is not None:
sslContext.set_ciphers("ALL:@SECLEVEL=0")
self.logger.info("Setting up verify location: {}".format(cfg.cert))
sslContext.load_verify_locations(cafile=cfg.cert)
self.logger.info("Setting up load cert chain: {}".format(cfg.cert))
sslContext.load_cert_chain(cfg.cert)
else:
self.logger.info("Cert is empty, skipping verification")
self.logger.info("Wrapping socket")
sslSocket = sslContext.wrap_socket(
socket(AF_INET, SOCK_STREAM), server_hostname=cfg.host
)
self.logger.info(
"Socket wrapped: {}".format(True if sslSocket is not None else False)
)
try:
self.logger.info(ssl.OPENSSL_VERSION)
sslSocket = None
cfg = self._cfg
self.logger.info("Creating ssl context")
sslContext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)

self.logger.info("Setting up ciphers")

#2023-07-04 lucadjc: after openssl version upgrade, new setting is needed
#sslContext.set_ciphers("HIGH:!DH:!aNULL")
sslContext.set_ciphers("HIGH:!DH:!aNULL:@SECLEVEL=0")
self.logger.info("Setting up verify mode")
sslContext.verify_mode = (
ssl.CERT_REQUIRED if cfg.cert is not None else ssl.CERT_NONE
)
if cfg.cert is not None:
sslContext.set_ciphers("ALL:@SECLEVEL=0")
self.logger.info("Setting up verify location: {}".format(cfg.cert))
sslContext.load_verify_locations(cafile=cfg.cert)
self.logger.info("Setting up load cert chain: {}".format(cfg.cert))
sslContext.load_cert_chain(cfg.cert)

else:
self.logger.info("Cert is empty, skipping verification")

self.logger.info("Wrapping socket")
sslSocket = sslContext.wrap_socket(
socket(AF_INET, SOCK_STREAM), server_hostname=cfg.host
)
self.logger.info(
"Socket wrapped: {}".format(True if sslSocket is not None else False)
)

if sslSocket is not None:
self.logger.info("Connecting with {}:{}".format(cfg.host, cfg.port))
sslSocket.connect((cfg.host, cfg.port))
# sslSocket.setblocking(0)
self.handle_socket_response(sslSocket)
else:
self.logger.info("Wrapping socket failed")
if sslSocket is not None:
self.logger.info("Connecting with {}:{}".format(cfg.host, cfg.port))
sslSocket.connect((cfg.host, cfg.port))
# sslSocket.setblocking(0)
self.handle_socket_response(sslSocket)
else:
self.logger.info("Wrapping socket failed")
except:
self.logger.error(
"Error: {}".format(traceback.format_exc())
)

@property
def socket(self):
Expand Down

0 comments on commit 2a1c02a

Please sign in to comment.