aboutsummaryrefslogtreecommitdiff
path: root/src/rust
diff options
context:
space:
mode:
authorChelsea Holland Komlo <me@chelseakomlo.com>2018-01-22 18:33:22 -0500
committerChelsea Holland Komlo <me@chelseakomlo.com>2018-01-22 18:33:22 -0500
commitd0184963f9731bea82db1958c885ea1e7f7c42d1 (patch)
tree294554d17f90d0a4d495387b4abdb40ab414a5c6 /src/rust
parent510a91af533afb48f9ad8b64d3d2bc4cd707d9b6 (diff)
downloadtor-d0184963f9731bea82db1958c885ea1e7f7c42d1.tar.gz
tor-d0184963f9731bea82db1958c885ea1e7f7c42d1.zip
fixups from code review
Diffstat (limited to 'src/rust')
-rw-r--r--src/rust/protover/protover.rs8
-rw-r--r--src/rust/tor_log/tor_log.rs59
-rw-r--r--src/rust/tor_util/ffi.rs4
3 files changed, 53 insertions, 18 deletions
diff --git a/src/rust/protover/protover.rs b/src/rust/protover/protover.rs
index 33d49ea485..22a94a164d 100644
--- a/src/rust/protover/protover.rs
+++ b/src/rust/protover/protover.rs
@@ -243,11 +243,11 @@ fn contains_only_supported_protocols(proto_entry: &str) -> bool {
Err("Too many versions to expand") => {
tor_log_msg!(
LogSeverity::Warn,
- LogDomain::LdNet,
+ LogDomain::Net,
"get_versions",
- "When expanding a protocol list from an authority, I
- got too many protocols. This is possibly an attack or a bug,
- unless the Tor network truly has expanded to support over {}
+ "When expanding a protocol list from an authority, I \
+ got too many protocols. This is possibly an attack or a bug, \
+ unless the Tor network truly has expanded to support over {} \
different subprotocol versions. The offending string was: {}",
MAX_PROTOCOLS_TO_EXPAND,
proto_entry
diff --git a/src/rust/tor_log/tor_log.rs b/src/rust/tor_log/tor_log.rs
index f8bf190690..a88184cda9 100644
--- a/src/rust/tor_log/tor_log.rs
+++ b/src/rust/tor_log/tor_log.rs
@@ -9,8 +9,8 @@
/// general messages can use LdGeneral.
#[derive(Eq, PartialEq)]
pub enum LogDomain {
- LdNet,
- LdGeneral,
+ Net,
+ General,
}
/// The severity level at which to log messages.
@@ -98,33 +98,35 @@ pub mod log {
/// C_RUST_COUPLED: src/common/log.c, log domain types
extern "C" {
#[no_mangle]
- static _LOG_WARN: c_int;
- static _LOG_NOTICE: c_int;
+ static LOG_WARN_: c_int;
+ static LOG_NOTICE_: c_int;
}
/// Domain log types. These mirror definitions in /src/common/torlog.h
/// C_RUST_COUPLED: src/common/log.c, log severity types
extern "C" {
#[no_mangle]
- static _LD_NET: u32;
- static _LD_GENERAL: u32;
+ static LD_NET_: u32;
+ static LD_GENERAL_: u32;
}
/// Translate Rust defintions of log domain levels to C. This exposes a 1:1
/// mapping between types.
+ #[inline]
pub unsafe fn translate_domain(domain: LogDomain) -> u32 {
match domain {
- LogDomain::LdNet => _LD_NET,
- LogDomain::LdGeneral => _LD_GENERAL,
+ LogDomain::Net => LD_NET_,
+ LogDomain::General => LD_GENERAL_,
}
}
/// Translate Rust defintions of log severity levels to C. This exposes a
/// 1:1 mapping between types.
+ #[inline]
pub unsafe fn translate_severity(severity: LogSeverity) -> c_int {
match severity {
- LogSeverity::Warn => _LOG_WARN,
- LogSeverity::Notice => _LOG_NOTICE,
+ LogSeverity::Warn => LOG_WARN_,
+ LogSeverity::Notice => LOG_NOTICE_,
}
}
@@ -194,7 +196,7 @@ mod test {
fn test_macro() {
tor_log_msg!(
LogSeverity::Warn,
- LogDomain::LdNet,
+ LogDomain::Net,
"test_macro",
"test log message {}",
"a",
@@ -210,11 +212,12 @@ mod test {
assert_eq!("test log message a", *message);
}
+ // test multiple inputs into the log message
{
fn test_macro() {
tor_log_msg!(
LogSeverity::Warn,
- LogDomain::LdNet,
+ LogDomain::Net,
"next_test_macro",
"test log message {} {} {} {} {}",
1,
@@ -233,5 +236,37 @@ mod test {
let message = unsafe { Box::from_raw(LAST_LOGGED_MESSAGE) };
assert_eq!("test log message 1 2 3 4 5", *message);
}
+
+ // test how a long log message will be formatted
+ {
+ fn test_macro() {
+ tor_log_msg!(
+ LogSeverity::Warn,
+ LogDomain::Net,
+ "test_macro",
+ "{}",
+ "All the world's a stage, and all the men and women \
+ merely players: they have their exits and their \
+ entrances; and one man in his time plays many parts, his \
+ acts being seven ages."
+ );
+ }
+
+ test_macro();
+
+ let expected_string = "All the world's a \
+ stage, and all the men \
+ and women merely players: \
+ they have their exits and \
+ their entrances; and one man \
+ in his time plays many parts, \
+ his acts being seven ages.";
+
+ let function = unsafe { Box::from_raw(LAST_LOGGED_FUNCTION) };
+ assert_eq!("test_macro", *function);
+
+ let message = unsafe { Box::from_raw(LAST_LOGGED_MESSAGE) };
+ assert_eq!(expected_string, *message);
+ }
}
}
diff --git a/src/rust/tor_util/ffi.rs b/src/rust/tor_util/ffi.rs
index a9a6cf895c..a803dae26d 100644
--- a/src/rust/tor_util/ffi.rs
+++ b/src/rust/tor_util/ffi.rs
@@ -16,10 +16,10 @@ use tor_log::{LogSeverity, LogDomain};
/// tor_free(rust_str);
/// ```
#[no_mangle]
-pub extern "C" fn rust_welcome_string() {
+pub extern "C" fn rust_log_welcome_string() {
tor_log_msg!(
LogSeverity::Notice,
- LogDomain::LdGeneral,
+ LogDomain::General,
"rust_welcome_string",
"Tor is running with Rust integration. Please report \
any bugs you encounter."