aboutsummaryrefslogtreecommitdiff
path: root/src/message/handshake/clientinitack.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/message/handshake/clientinitack.rs')
-rw-r--r--src/message/handshake/clientinitack.rs46
1 files changed, 19 insertions, 27 deletions
diff --git a/src/message/handshake/clientinitack.rs b/src/message/handshake/clientinitack.rs
index 637b989..f881113 100644
--- a/src/message/handshake/clientinitack.rs
+++ b/src/message/handshake/clientinitack.rs
@@ -1,11 +1,10 @@
-use crate::error::ProtocolError;
-use crate::primitive::{StringList, Variant, VariantList, VariantMap};
-use crate::{HandshakeDeserialize, HandshakeSerialize};
+use crate::primitive::{Variant, VariantList, VariantMap};
+use crate::HandshakeSerialize;
use failure::Error;
/// ClientInitAck is received when the initialization was successfull
-#[derive(Debug)]
+#[derive(Debug, Clone)]
pub struct ClientInitAck {
/// Flags of supported legacy features
pub core_features: u32,
@@ -16,7 +15,7 @@ pub struct ClientInitAck {
/// List of VariantMaps of info on available authenticators
pub authenticators: VariantList,
/// List of supported extended features
- pub feature_list: StringList,
+ pub feature_list: Vec<String>,
}
impl HandshakeSerialize for ClientInitAck {
@@ -47,28 +46,21 @@ impl HandshakeSerialize for ClientInitAck {
}
}
-impl HandshakeDeserialize for ClientInitAck {
- fn parse(b: &[u8]) -> Result<(usize, Self), Error> {
- let (len, values): (usize, VariantMap) = HandshakeDeserialize::parse(b)?;
-
- let msgtype = match_variant!(&values["MsgType"], Variant::StringUTF8);
-
- if msgtype == "ClientInitAck" {
- return Ok((
- len,
- Self {
- core_features: 0x00008000,
- core_configured: match_variant!(values["Configured"], Variant::bool),
- storage_backends: match_variant!(
- values["StorageBackends"],
- Variant::VariantList
- ),
- authenticators: match_variant!(values["Authenticators"], Variant::VariantList),
- feature_list: match_variant!(values["FeatureList"], Variant::StringList),
- },
- ));
- } else {
- bail!(ProtocolError::WrongMsgType);
+impl From<VariantMap> for ClientInitAck {
+ fn from(input: VariantMap) -> Self {
+ ClientInitAck {
+ // TODO make this compatible with older clients
+ core_features: 0,
+ core_configured: match_variant!(input.get("Configured").unwrap(), Variant::bool),
+ storage_backends: match_variant!(
+ input.get("StorageBackends").unwrap(),
+ Variant::VariantList
+ ),
+ authenticators: match_variant!(
+ input.get("Authenticators").unwrap(),
+ Variant::VariantList
+ ),
+ feature_list: match_variant!(input.get("FeatureList").unwrap(), Variant::StringList),
}
}
}
onMax Audron-0/+93 2021-07-25add Traits for syncable objectsMax Audron-48/+114 2021-07-21cleanup objects::TypesMax Audron-5/+35 2021-07-21add IgnoreListManagerMax Audron-0/+165 2021-07-21add cert-managerMax Audron-0/+32 2021-07-21add BufferViewManager and BufferViewConfigMax Audron-0/+95 2021-07-21migrate BufferSyncer to use Network derive and add to central TypesMax Audron-143/+22 2021-07-21rewrite network derive to work more consistentlyMax Audron-78/+90 2021-07-21fix wrong capitalization for HighlightRuleListMax Audron-2/+2 2021-07-21implement the Network trait generically for all inner Variant TypesMax Audron-1/+66 2021-07-21change IRC MessageType to be a bitflag instead of enumMax Audron-54/+94 2021-07-21fix network objectMax Audron-18/+24 2021-07-21minor docs and cleanupMax Audron-4/+8 2021-04-05WIP: impl more signalproxy objectsMax Audron-1000/+1621 2021-03-09WIP: impl signalproxy typesMax Audron-253/+376 2021-01-21add to and from network deriveMax Audron-42/+2767 2021-01-21reorganize tests and add quassel featuresMax Audron-551/+850 2021-01-04add example program: quasselproxyclientMax Audron-0/+280 2021-01-04random stuffMax Audron-2/+9 2021-01-04add more signalproxy objectsMax Audron-40/+120 2021-01-04add message parsing feature flagsMax Audron-43/+96 2021-01-04fix parsing of datetime when value is -1Max Audron-1/+9 2021-01-02update dependenciesMax Audron-267/+27 2021-01-02rework handshakemessage parsingMax Audron-141/+278 2020-10-16updateMax Audron-1553/+294 2020-10-16update paperworkMax Audron-487/+391