MCPcopy Index your code
hub / github.com/RustPython/RustPython / set_msg_callback

Method set_msg_callback

crates/stdlib/src/openssl.rs:1793–1830  ·  view source on GitHub ↗
(
            &self,
            value: Option<PyObjectRef>,
            vm: &VirtualMachine,
        )

Source from the content-addressed store, hash-verified

1791
1792 #[pygetset(setter, name = "_msg_callback")]
1793 fn set_msg_callback(
1794 &self,
1795 value: Option<PyObjectRef>,
1796 vm: &VirtualMachine,
1797 ) -> PyResult<()> {
1798 let mut callback_guard = self.msg_callback.lock();
1799
1800 if let Some(callback_obj) = value {
1801 if !vm.is_none(&callback_obj) {
1802 // Check if callable
1803 if !callback_obj.is_callable() {
1804 return Err(vm.new_type_error("not a callable object"));
1805 }
1806
1807 // Set the callback
1808 *callback_guard = Some(callback_obj);
1809
1810 // Set OpenSSL callback
1811 unsafe {
1812 SSL_CTX_set_msg_callback(self.ctx().as_ptr(), Some(_msg_callback));
1813 }
1814 } else {
1815 // Clear callback
1816 *callback_guard = None;
1817 unsafe {
1818 SSL_CTX_set_msg_callback(self.ctx().as_ptr(), None);
1819 }
1820 }
1821 } else {
1822 // Clear callback when value is None
1823 *callback_guard = None;
1824 unsafe {
1825 SSL_CTX_set_msg_callback(self.ctx().as_ptr(), None);
1826 }
1827 }
1828
1829 Ok(())
1830 }
1831
1832 #[pymethod]
1833 fn load_cert_chain(&self, args: LoadCertChainArgs, vm: &VirtualMachine) -> PyResult<()> {

Callers

nothing calls this directly

Calls 7

is_callableMethod · 0.80
ErrClass · 0.50
SomeClass · 0.50
lockMethod · 0.45
is_noneMethod · 0.45
as_ptrMethod · 0.45
ctxMethod · 0.45

Tested by

no test coverage detected