Skip to content

Commit 5bc7c6a

Browse files
authored
chore: case-sensitive config string (#58)
1 parent 583949d commit 5bc7c6a

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

questdb-rs/src/ingress/mod.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1592,8 +1592,8 @@ fn configure_tls(
15921592
Ok(Some(Arc::new(config)))
15931593
}
15941594

1595-
fn validate_auto_flush_params(params: &HashMap<String, &String>) -> Result<()> {
1596-
if let Some(&auto_flush) = params.get("auto_flush") {
1595+
fn validate_auto_flush_params(params: &HashMap<String, String>) -> Result<()> {
1596+
if let Some(auto_flush) = params.get("auto_flush") {
15971597
if auto_flush.as_str() != "off" {
15981598
return Err(error::fmt!(
15991599
ConfigError,
@@ -1692,7 +1692,7 @@ impl Protocol {
16921692
}
16931693

16941694
fn from_schema(schema: &str) -> Result<Self> {
1695-
match schema.to_lowercase().as_str() {
1695+
match schema {
16961696
"tcp" => Ok(Protocol::Tcp),
16971697
"tcps" => Ok(Protocol::Tcps),
16981698
#[cfg(feature = "ilp-over-http")]
@@ -1804,14 +1804,10 @@ impl SenderBuilder {
18041804
let conf = conf.as_ref();
18051805
let conf = questdb_confstr::parse_conf_str(conf)
18061806
.map_err(|e| error::fmt!(ConfigError, "Config parse error: {}", e))?;
1807-
let service = conf.service().to_lowercase();
1808-
let params = conf
1809-
.params()
1810-
.iter()
1811-
.map(|(k, v)| (k.to_lowercase(), v))
1812-
.collect::<HashMap<_, _>>();
1807+
let service = conf.service();
1808+
let params = conf.params();
18131809

1814-
let protocol = Protocol::from_schema(service.as_str())?;
1810+
let protocol = Protocol::from_schema(service)?;
18151811

18161812
let Some(addr) = params.get("addr") else {
18171813
return Err(error::fmt!(
@@ -1825,7 +1821,7 @@ impl SenderBuilder {
18251821
};
18261822
let mut builder = SenderBuilder::new(protocol, host, port);
18271823

1828-
validate_auto_flush_params(&params)?;
1824+
validate_auto_flush_params(params)?;
18291825

18301826
for (key, val) in params.iter().map(|(k, v)| (k.as_str(), v.as_str())) {
18311827
builder = match key {

questdb-rs/src/tests/sender.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,3 +469,22 @@ fn test_tls_insecure_skip_verify() -> TestResult {
469469
assert_eq!(server.msgs[0].as_str(), exp);
470470
Ok(())
471471
}
472+
473+
#[test]
474+
fn bad_uppercase_protocol() {
475+
let res = Sender::from_conf("TCP::addr=localhost:9009;");
476+
assert!(res.is_err());
477+
let err = res.unwrap_err();
478+
assert!(err.code() == ErrorCode::ConfigError);
479+
assert!(err.msg() == "Unsupported protocol: TCP");
480+
}
481+
482+
#[test]
483+
fn bad_uppercase_addr() {
484+
let res = Sender::from_conf("tcp::ADDR=localhost:9009;");
485+
assert!(res.is_err());
486+
let err = res.unwrap_err();
487+
eprint!("err: {:?}", err);
488+
assert!(err.code() == ErrorCode::ConfigError);
489+
assert!(err.msg() == "Missing \"addr\" parameter in config string");
490+
}

0 commit comments

Comments
 (0)