|
1 | 1 | use super::os::PyPathLike; |
2 | 2 | use super::socket::PySocketRef; |
3 | | -use crate::builtins::bytearray::PyByteArrayRef; |
4 | 3 | use crate::builtins::pystr::PyStrRef; |
5 | 4 | use crate::builtins::{pytype::PyTypeRef, weakref::PyWeak}; |
6 | | -use crate::byteslike::PyBytesLike; |
| 5 | +use crate::byteslike::{PyBytesLike, PyRwBytesLike}; |
7 | 6 | use crate::common::lock::{PyRwLock, PyRwLockReadGuard, PyRwLockWriteGuard}; |
8 | 7 | use crate::exceptions::{IntoPyException, PyBaseExceptionRef}; |
9 | 8 | use crate::function::{OptionalArg, OptionalOption}; |
@@ -688,14 +687,11 @@ impl PySslSocket { |
688 | 687 | } |
689 | 688 |
|
690 | 689 | #[pymethod] |
691 | | - fn read(&self, n: usize, buffer: OptionalArg<PyByteArrayRef>, vm: &VirtualMachine) -> PyResult { |
| 690 | + fn read(&self, n: usize, buffer: OptionalArg<PyRwBytesLike>, vm: &VirtualMachine) -> PyResult { |
692 | 691 | let mut stream = self.stream_mut(); |
693 | 692 | let ret_nread = buffer.is_present(); |
694 | 693 | let ssl_res = if let OptionalArg::Present(buffer) = buffer { |
695 | | - let mut buf = buffer.borrow_value_mut(); |
696 | | - stream |
697 | | - .ssl_read(&mut buf.elements) |
698 | | - .map(|n| vm.ctx.new_int(n)) |
| 694 | + buffer.with_ref(|buf| stream.ssl_read(buf).map(|n| vm.ctx.new_int(n))) |
699 | 695 | } else { |
700 | 696 | let mut buf = vec![0u8; n]; |
701 | 697 | stream.ssl_read(&mut buf).map(|n| { |
|
0 commit comments