// TBD: Extract more info func UnpackProxyRequest(raw []byte) (*http.Request, error) { var ( mh codec.MsgpackHandle h = &mh ) var v []interface{} mh.SliceType = reflect.TypeOf(Headers(nil)) codec.NewDecoderBytes(raw, h).Decode(&v) r, err := http.NewRequest(string(v[0].([]uint8)), string(v[1].([]uint8)), bytes.NewBuffer(v[4].([]byte))) if err != nil { return nil, err } r.Header = CocaineHeaderToHttpHeader(v[3].(Headers)) r.Host = r.Header.Get("Host") if xRealIp := r.Header.Get("X-Real-IP"); xRealIp != "" { r.RemoteAddr = xRealIp } err = decompressBody(r) if err != nil { return nil, err } return r, nil }
// TBD: Extract more info func UnpackProxyRequest(raw []byte) *http.Request { var ( mh codec.MsgpackHandle h = &mh ) var v []interface{} mh.SliceType = reflect.TypeOf(Headers(nil)) codec.NewDecoderBytes(raw, h).Decode(&v) r, err := http.NewRequest(string(v[0].([]uint8)), string(v[1].([]uint8)), bytes.NewBuffer(v[4].([]byte))) if err != nil { fmt.Println("Error", err) } r.Header = CocaineHeaderToHttpHeader(v[3].(Headers)) if xRealIp := r.Header.Get("X-Real-IP"); xRealIp != "" { r.RemoteAddr = xRealIp } return r }