Mult Port + TCP Calibration (SSH DEAD)
This commit is contained in:
@@ -357,6 +357,8 @@ func decodeWireToken(token string) string {
|
||||
|
||||
func isChunkCommand(payload []byte) bool {
|
||||
return bytes.HasPrefix(payload, []byte("CPROBE ")) ||
|
||||
bytes.HasPrefix(payload, []byte("CIPERFUP ")) ||
|
||||
bytes.HasPrefix(payload, []byte("CIPERFDW ")) ||
|
||||
bytes.HasPrefix(payload, []byte("COPEN ")) ||
|
||||
bytes.HasPrefix(payload, []byte("CPUSH ")) ||
|
||||
bytes.HasPrefix(payload, []byte("CPULL ")) ||
|
||||
@@ -388,6 +390,46 @@ func processChunkCommand(
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("PROBEOK"))
|
||||
}
|
||||
|
||||
if bytes.HasPrefix(payload, []byte("CIPERFUP ")) {
|
||||
parts := bytes.SplitN(payload, []byte(" "), 4)
|
||||
if len(parts) != 4 {
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("ERR bad CIPERFUP"))
|
||||
}
|
||||
if !tokenEqual(decodeWireToken(string(parts[1])), token) {
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("ERR authentication failed"))
|
||||
}
|
||||
size, err := strconv.Atoi(string(parts[2]))
|
||||
if err != nil || size < 1 || size > maxChunk {
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("ERR iperf upload chunk too large"))
|
||||
}
|
||||
data := parts[3]
|
||||
if len(data) != size || !bytes.Equal(data, probePattern(size)) {
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("ERR iperf upload validation failed"))
|
||||
}
|
||||
if debug != nil && debug.enabled {
|
||||
debug.logf("CALIBRATION fake_iperf=upload wire=x peer=%s chunk=%d bytes=%d pollers=1 outstanding=1", conn.RemoteAddr(), size, len(data))
|
||||
}
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("IPERFOK"))
|
||||
}
|
||||
|
||||
if bytes.HasPrefix(payload, []byte("CIPERFDW ")) {
|
||||
parts := strings.Fields(string(payload))
|
||||
if len(parts) != 3 {
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("ERR bad CIPERFDW"))
|
||||
}
|
||||
if !tokenEqual(decodeWireToken(parts[1]), token) {
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("ERR authentication failed"))
|
||||
}
|
||||
size, err := strconv.Atoi(parts[2])
|
||||
if err != nil || size < 1 || size > maxChunk {
|
||||
return protocol.WriteResponseFrame(conn, requestID, []byte("ERR iperf download chunk too large"))
|
||||
}
|
||||
if debug != nil && debug.enabled {
|
||||
debug.logf("CALIBRATION fake_iperf=download wire=x peer=%s chunk=%d bytes=%d pollers=1 outstanding=1", conn.RemoteAddr(), size, size)
|
||||
}
|
||||
return protocol.WriteResponseFrame(conn, requestID, probePattern(size))
|
||||
}
|
||||
|
||||
if bytes.HasPrefix(payload, []byte("COPEN ")) {
|
||||
parts := strings.Fields(string(payload))
|
||||
if len(parts) != 5 {
|
||||
|
||||
Reference in New Issue
Block a user