Skip to content

Commit 2dba3a9

Browse files
committed
[dtls] eliminate more exceptions, just set state to failed
1 parent 5c60fea commit 2dba3a9

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

aiortc/rtcdtlstransport.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -324,8 +324,9 @@ async def start(self, remoteParameters):
324324
if error == lib.SSL_ERROR_WANT_READ:
325325
await self._recv_next()
326326
else:
327+
self.__log_debug('x DTLS handshake failed (error %d)', error)
327328
self._set_state(State.FAILED)
328-
raise DtlsError('DTLS handshake failed (error %d)' % error)
329+
return
329330
except ConnectionError:
330331
self.__log_debug('x DTLS handshake failed (connection error)')
331332
self._set_state(State.FAILED)
@@ -340,8 +341,9 @@ async def start(self, remoteParameters):
340341
fingerprint_is_valid = True
341342
break
342343
if not fingerprint_is_valid:
344+
self.__log_debug('x DTLS handshake failed (fingerprint mismatch)')
343345
self._set_state(State.FAILED)
344-
raise DtlsError('DTLS fingerprint does not match')
346+
return
345347

346348
# generate keying material
347349
buf = ffi.new('unsigned char[]', 2 * (SRTP_KEY_LEN + SRTP_SALT_LEN))

tests/test_dtls.py

+7-11
Original file line numberDiff line numberDiff line change
@@ -233,13 +233,11 @@ def test_bad_client_fingerprint(self):
233233

234234
bogus_parameters = RTCDtlsParameters(
235235
fingerprints=[RTCDtlsFingerprint(algorithm='sha-256', value='bogus_fingerprint')])
236-
with self.assertRaises(DtlsError) as cm:
237-
run(asyncio.gather(
238-
session1.start(bogus_parameters),
239-
session2.start(session1.getLocalParameters())))
240-
self.assertEqual(str(cm.exception), 'DTLS fingerprint does not match')
236+
run(asyncio.gather(
237+
session1.start(bogus_parameters),
238+
session2.start(session1.getLocalParameters())))
241239
self.assertEqual(session1.state, 'failed')
242-
self.assertEqual(session2.state, 'connecting')
240+
self.assertEqual(session2.state, 'connected')
243241

244242
run(session1.stop())
245243
run(session2.stop())
@@ -258,11 +256,9 @@ def test_handshake_error(self, mock_get_error, mock_do_handshake):
258256
certificate2 = RTCCertificate.generateCertificate()
259257
session2 = RTCDtlsTransport(transport2, [certificate2])
260258

261-
with self.assertRaises(DtlsError) as cm:
262-
run(asyncio.gather(
263-
session1.start(session2.getLocalParameters()),
264-
session2.start(session1.getLocalParameters())))
265-
self.assertEqual(str(cm.exception), 'DTLS handshake failed (error 1)')
259+
run(asyncio.gather(
260+
session1.start(session2.getLocalParameters()),
261+
session2.start(session1.getLocalParameters())))
266262
self.assertEqual(session1.state, 'failed')
267263
self.assertEqual(session2.state, 'failed')
268264

0 commit comments

Comments
 (0)