MCPcopy Create free account
hub / github.com/erans/pgsqlite / decode_startup_message

Function decode_startup_message

src/protocol/codec.rs:77–111  ·  view source on GitHub ↗
(src: &mut BytesMut)

Source from the content-addressed store, hash-verified

75}
76
77fn decode_startup_message(src: &mut BytesMut) -> io::Result<Option<FrontendMessage>> {
78 if src.len() < 4 {
79 return Ok(None);
80 }
81
82 let len = (&src[0..4]).get_i32() as usize;
83
84 if src.len() < len {
85 return Ok(None);
86 }
87
88 let msg_bytes = src.split_to(len);
89 let mut msg_buf = &msg_bytes[4..]; // Skip length
90
91 let protocol_version = msg_buf.get_i32();
92
93 // Check for SSL request (protocol version 80877103)
94 if protocol_version == 80877103 {
95 return Ok(Some(FrontendMessage::SslRequest));
96 }
97
98 let mut parameters = HashMap::new();
99
100 // Read parameter pairs until we hit null terminator
101 while msg_buf.has_remaining() && msg_buf[0] != 0 {
102 let key = read_cstring(&mut msg_buf)?;
103 let value = read_cstring(&mut msg_buf)?;
104 parameters.insert(key, value);
105 }
106
107 Ok(Some(FrontendMessage::StartupMessage(StartupMessage {
108 protocol_version,
109 parameters,
110 })))
111}
112
113fn decode_normal_message(src: &mut BytesMut) -> io::Result<Option<FrontendMessage>> {
114 if src.len() < 5 {

Callers 1

decodeMethod · 0.85

Calls 4

read_cstringFunction · 0.85
StartupMessageClass · 0.85
lenMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected