|
@@ -35,9 +35,21 @@ func ParseHttpHost(payload []byte) (string, string, string, uint16) {
|
|
|
uri = append(uri, []byte("...")...)
|
|
uri = append(uri, []byte("...")...)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- hostStart := bytes.Index(rest, []byte("Host:")) + len("Host:")
|
|
|
|
|
|
|
+ //hostStart := bytes.Index(rest, []byte("Host:")) + len("Host:")
|
|
|
|
|
+ hostHeader := "Host:"
|
|
|
|
|
+ hostIdx := bytes.Index(rest, []byte(hostHeader))
|
|
|
|
|
+ if hostIdx == -1 {
|
|
|
|
|
+ return string(method), string(uri), "", 0
|
|
|
|
|
+ }
|
|
|
|
|
+ hostStart := hostIdx + len(hostHeader)
|
|
|
hostEnd := bytes.Index(rest[hostStart:], []byte("\r\n"))
|
|
hostEnd := bytes.Index(rest[hostStart:], []byte("\r\n"))
|
|
|
- hostPort := string(bytes.TrimSpace(rest[hostStart : hostStart+hostEnd]))
|
|
|
|
|
|
|
+ var hostPortBts []byte
|
|
|
|
|
+ if hostEnd == -1 {
|
|
|
|
|
+ hostPortBts = rest[hostStart:]
|
|
|
|
|
+ } else {
|
|
|
|
|
+ hostPortBts = rest[hostStart : hostStart+hostEnd]
|
|
|
|
|
+ }
|
|
|
|
|
+ hostPort := string(bytes.TrimSpace(hostPortBts))
|
|
|
hostParts := strings.Split(hostPort, ":")
|
|
hostParts := strings.Split(hostPort, ":")
|
|
|
host := hostParts[0]
|
|
host := hostParts[0]
|
|
|
port := uint16(80) // Default port
|
|
port := uint16(80) // Default port
|