Commit d0184963 authored by Chelsea Holland Komlo's avatar Chelsea Holland Komlo
Browse files

fixups from code review

parent 510a91af
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -54,10 +54,10 @@

/** Defining compile-time constants for Tor log levels (used by the Rust
 * log wrapper at src/rust/tor_log) */
const int _LOG_WARN = LOG_WARN;
const int _LOG_NOTICE = LOG_NOTICE;
const log_domain_mask_t _LD_GENERAL = LD_GENERAL;
const log_domain_mask_t _LD_NET = LD_NET;
const int LOG_WARN_ = LOG_WARN;
const int LOG_NOTICE_ = LOG_NOTICE;
const log_domain_mask_t LD_GENERAL_ = LD_GENERAL;
const log_domain_mask_t LD_NET_ = LD_NET;

/** Information for a single logfile; only used in log.c */
typedef struct logfile_t {
+4 −4
Original line number Diff line number Diff line
@@ -36,10 +36,10 @@
 *
 * C_RUST_COUPLED src/rust/tor_log LogSeverity, LogDomain
 */
extern const int _LOG_WARN;
extern const int _LOG_NOTICE;
extern const log_domain_mask_t _LD_NET;
extern const log_domain_mask_t _LD_GENERAL;
extern const int LOG_WARN_;
extern const int LOG_NOTICE_;
extern const log_domain_mask_t LD_NET_;
extern const log_domain_mask_t LD_GENERAL_;

/** Debug-level severity: for hyper-verbose messages of no interest to
 * anybody but developers. */
+2 −2
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ void evdns_shutdown(int);
#ifdef HAVE_RUST
// helper function defined in Rust to output a log message indicating if tor is
// running with Rust enabled. See src/rust/tor_util
void rust_welcome_string(void);
void rust_log_welcome_string(void);
#endif

/********* PROTOTYPES **********/
@@ -3283,7 +3283,7 @@ tor_init(int argc, char *argv[])
  }

#ifdef HAVE_RUST
  rust_welcome_string();
  rust_log_welcome_string();
#endif /* defined(HAVE_RUST) */

  if (network_init()<0) {
+4 −4
Original line number Diff line number Diff line
@@ -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
+47 −12
Original line number Diff line number Diff line
@@ -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);
        }
    }
}
Loading