MCPcopy Create free account
hub / github.com/apache/impala / ValidateConnHeader

Function ValidateConnHeader

be/src/kudu/rpc/serialization.cc:188–218  ·  view source on GitHub ↗

validate the entire rpc header (magic number + flags)

Source from the content-addressed store, hash-verified

186
187// validate the entire rpc header (magic number + flags)
188Status ValidateConnHeader(const Slice& slice) {
189 DCHECK_EQ(kMagicNumberLength + kHeaderFlagsLength, slice.size())
190 << "Invalid RPC header length";
191
192 // validate actual magic
193 if (!slice.starts_with(kMagicNumber)) {
194 if (slice.starts_with("GET ") ||
195 slice.starts_with("POST") ||
196 slice.starts_with("HEAD")) {
197 return Status::InvalidArgument("invalid negotation, appears to be an HTTP client on "
198 "the RPC port");
199 }
200 return Status::InvalidArgument("connection must begin with magic number", kMagicNumber);
201 }
202
203 const uint8_t *data = slice.data();
204 data += kMagicNumberLength;
205
206 // validate version
207 if (data[kHeaderPosVersion] != kCurrentRpcVersion) {
208 return Status::InvalidArgument("Unsupported RPC version",
209 StringPrintf("Received: %d, Supported: %d",
210 data[kHeaderPosVersion], kCurrentRpcVersion));
211 }
212
213 // TODO: validate additional header flags:
214 // RPC_SERVICE_CLASS
215 // RPC_AUTH_PROTOCOL
216
217 return Status::OK();
218}
219
220} // namespace serialization
221} // namespace rpc

Callers 2

TEST_FFunction · 0.85

Calls 6

InvalidArgumentFunction · 0.85
StringPrintfFunction · 0.85
OKFunction · 0.85
starts_withMethod · 0.80
sizeMethod · 0.45
dataMethod · 0.45

Tested by 1

TEST_FFunction · 0.68