-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Invalid host in HTTP header if setting host via service_name for channel inited by list or file #1940
Comments
We could
option B would revert some changes dab62e4 by @guodongxiaren |
I think we can check if ns_url shceme is 'http' or 'https', if true, set host field by service_name |
hmm. looks good. I can provide a patch based on this |
Is it possible that we fix the host field after a server has been selected?
If schema is not http(s), but protocol is HTTP. |
Currently the host is set by remote side iff the host is not set. however such scheme info is not available when host is updated by remote_side inside http impl |
correction merged 3f8e1cc |
Describe the bug (描述bug)
In brpc::PROTOCOL_HTTP, we will set the host field by service_name when
However, when the channel is inited via na_url shceme =
list
orfile
, such_service_name
is not valid host field whichresults in
400 BadRequest
To Reproduce (复现方法)
Init a channel with ipport list and http_request uri with relative path, eg:
In the http request, the
host
field will be set as :host: 127.0.0.1:8000,127.0.0.1:8001
Similarly, when the ns_url is a
file://conf/hosts
, the host field in HTTP requeset will be:host: conf
Expected behavior (期望行为)
host should be set as remote_side IP+Port in the senarios above
Versions (各种版本)
OS: Ubuntu 20.04
Compiler: g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
brpc: latest 59f5d77
protobuf: 3.6.1
Additional context/screenshots (更多上下文/截图)
The text was updated successfully, but these errors were encountered: