mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From haosdent huang <haosd...@gmail.com>
Subject Re: Review Request 52105: Avoid redirect loop in `/redirect/xxx` in the master.
Date Wed, 28 Sep 2016 18:18:18 GMT

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/52105/#review150746
-----------------------------------------------------------



Verfied work with zk

```
./bin/mesos-master.sh --work_dir=/tmp/mesos_1 --zk=zk://localhost:2181/mesos --quorum=2 --port=5051
./bin/mesos-master.sh --work_dir=/tmp/mesos_2 --zk=zk://localhost:2181/mesos --quorum=2 --port=5052
./bin/mesos-master.sh --work_dir=/tmp/mesos_3 --zk=zk://localhost:2181/mesos --quorum=2 --port=5053
```

and test with following urls

```
# 5051 is the leading master.
$ curl -v http://localhost:5051/redirect          # 307 to '//localhost:5051'
$ curl -v http://localhost:5051/redirect          # 404
$ curl -v http://localhost:5051/redirect/a        # 404
$ curl -v http://localhost:5051/state             # 200
$ curl -v http://localhost:5052/master/redirect/a # 404

# 5052 is a no-leading master.
$ curl -v http://localhost:5052/redirect          # 307 to '//localhost:5051'
$ curl -v http://localhost:5052/redirect          # 404
$ curl -v http://localhost:5052/redirect/a        # 404
$ curl -v http://localhost:5052/state             # 307 to '//localhost:5051/master/state'
$ curl -v http://localhost:5052/master/redirect/a # 404
```


src/master/http.cpp (lines 2036 - 2037)
<https://reviews.apache.org/r/52105/#comment218802>

    Add blank lines above and below, like
    
    ```
      string basePath = "//" + hostname.get() + ":" + stringify(info.port());
    
      string redirectPath = "/redirect";
      string masterRedirectPath = "/" + master->self().id + "/redirect";
    
      if (request.url.path == redirectPath ||
    ```



src/master/http.cpp (line 2044)
<https://reviews.apache.org/r/52105/#comment218801>

    Indent incorrect here, should be
    
    ```
      } else if (strings::startsWith(request.url.path, redirectPath + "/") ||
                 strings::startsWith(request.url.path, masterRedirectPath + "/")) {
    ```



src/master/http.cpp (line 2045)
<https://reviews.apache.org/r/52105/#comment218804>

    Comment need to end with `.`


- haosdent huang


On Sept. 28, 2016, 5:56 p.m., Charles Allen wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/52105/
> -----------------------------------------------------------
> 
> (Updated Sept. 28, 2016, 5:56 p.m.)
> 
> 
> Review request for mesos and Vinod Kone.
> 
> 
> Bugs: MESOS-6210
>     https://issues.apache.org/jira/browse/MESOS-6210
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> Detect paths starting with `/redirect/` or `/master_id/redirect/`
> and return 404 instead of getting into a redirect loop.
> 
> 
> Diffs
> -----
> 
>   src/master/http.cpp 9005e7c308d5f57c6f5c573951d468a3ba730740 
> 
> Diff: https://reviews.apache.org/r/52105/diff/
> 
> 
> Testing
> -------
> 
> Single Node started with `./src/mesos-master --work_dir=/tmp/mesos`
> 
> 
> ```
> Charless-MacBook-Pro:~ charlesallen$ curl -v http://127.0.0.1:5050/redirect
> *   Trying 127.0.0.1...
> * Connected to 127.0.0.1 (127.0.0.1) port 5050 (#0)
> > GET /redirect HTTP/1.1
> > Host: 127.0.0.1:5050
> > User-Agent: curl/7.43.0
> > Accept: */*
> >
> < HTTP/1.1 307 Temporary Redirect
> < Date: Wed, 28 Sep 2016 17:49:22 GMT
> < Location: //192.168.1.234:5050
> < Content-Length: 0
> <
> * Connection #0 to host 127.0.0.1 left intact
> Charless-MacBook-Pro:~ charlesallen$ curl -v http://127.0.0.1:5050/redirect/
> *   Trying 127.0.0.1...
> * Connected to 127.0.0.1 (127.0.0.1) port 5050 (#0)
> > GET /redirect/ HTTP/1.1
> > Host: 127.0.0.1:5050
> > User-Agent: curl/7.43.0
> > Accept: */*
> >
> < HTTP/1.1 404 Not Found
> < Date: Wed, 28 Sep 2016 17:49:24 GMT
> < Content-Length: 0
> <
> * Connection #0 to host 127.0.0.1 left intact
> Charless-MacBook-Pro:~ charlesallen$ curl -v http://127.0.0.1:5050/redirect/foo
> *   Trying 127.0.0.1...
> * Connected to 127.0.0.1 (127.0.0.1) port 5050 (#0)
> > GET /redirect/foo HTTP/1.1
> > Host: 127.0.0.1:5050
> > User-Agent: curl/7.43.0
> > Accept: */*
> >
> < HTTP/1.1 404 Not Found
> < Date: Wed, 28 Sep 2016 17:49:26 GMT
> < Content-Length: 0
> <
> * Connection #0 to host 127.0.0.1 left intact
> Charless-MacBook-Pro:~ charlesallen$ curl -v http://127.0.0.1:5050/redirect_foo
> *   Trying 127.0.0.1...
> * Connected to 127.0.0.1 (127.0.0.1) port 5050 (#0)
> > GET /redirect_foo HTTP/1.1
> > Host: 127.0.0.1:5050
> > User-Agent: curl/7.43.0
> > Accept: */*
> >
> < HTTP/1.1 404 Not Found
> < Date: Wed, 28 Sep 2016 17:49:38 GMT
> < Content-Length: 0
> <
> * Connection #0 to host 127.0.0.1 left intact
> Charless-MacBook-Pro:~ charlesallen$ curl -v http://127.0.0.1:5050/master/redirect
> *   Trying 127.0.0.1...
> * Connected to 127.0.0.1 (127.0.0.1) port 5050 (#0)
> > GET /master/redirect HTTP/1.1
> > Host: 127.0.0.1:5050
> > User-Agent: curl/7.43.0
> > Accept: */*
> >
> < HTTP/1.1 307 Temporary Redirect
> < Date: Wed, 28 Sep 2016 17:49:48 GMT
> < Location: //192.168.1.234:5050
> < Content-Length: 0
> <
> * Connection #0 to host 127.0.0.1 left intact
> Charless-MacBook-Pro:~ charlesallen$ curl -v http://127.0.0.1:5050/master/redirect/
> *   Trying 127.0.0.1...
> * Connected to 127.0.0.1 (127.0.0.1) port 5050 (#0)
> > GET /master/redirect/ HTTP/1.1
> > Host: 127.0.0.1:5050
> > User-Agent: curl/7.43.0
> > Accept: */*
> >
> < HTTP/1.1 404 Not Found
> < Date: Wed, 28 Sep 2016 17:49:50 GMT
> < Content-Length: 0
> <
> * Connection #0 to host 127.0.0.1 left intact
> Charless-MacBook-Pro:~ charlesallen$ curl -v http://127.0.0.1:5050/master/redirect/foo
> *   Trying 127.0.0.1...
> * Connected to 127.0.0.1 (127.0.0.1) port 5050 (#0)
> > GET /master/redirect/foo HTTP/1.1
> > Host: 127.0.0.1:5050
> > User-Agent: curl/7.43.0
> > Accept: */*
> >
> < HTTP/1.1 404 Not Found
> < Date: Wed, 28 Sep 2016 17:49:51 GMT
> < Content-Length: 0
> <
> * Connection #0 to host 127.0.0.1 left intact
> Charless-MacBook-Pro:~ charlesallen$ curl -v http://127.0.0.1:5050/master/redirect_foo
> *   Trying 127.0.0.1...
> * Connected to 127.0.0.1 (127.0.0.1) port 5050 (#0)
> > GET /master/redirect_foo HTTP/1.1
> > Host: 127.0.0.1:5050
> > User-Agent: curl/7.43.0
> > Accept: */*
> >
> < HTTP/1.1 404 Not Found
> < Date: Wed, 28 Sep 2016 17:49:54 GMT
> < Content-Length: 0
> <
> * Connection #0 to host 127.0.0.1 left intact
> ```
> 
> It is worth noting that in this PR /master/redirect/  and /redirect/ return 404, not
307. This behavior is consistent with master.
> 
> 
> Thanks,
> 
> Charles Allen
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message