Skip to content

Commit 002138d

Browse files
ryanegkleiman
authored andcommitted
don't allow proxying requests to self (#497)
1 parent 71af3e5 commit 002138d

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/main/scala/org/apache/mesos/chronos/scheduler/api/RedirectFilter.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ import com.google.inject.Inject
1111

1212
import scala.collection.JavaConverters._
1313
import scala.language.postfixOps
14+
import mesosphere.chaos.http.HttpConf
15+
import org.apache.mesos.chronos.scheduler.config.SchedulerConfiguration
1416

1517
/**
1618
* Simple filter that redirects to the leader if applicable.
1719
* @author Florian Leibert ([email protected])
1820
*/
19-
class RedirectFilter @Inject()(val jobScheduler: JobScheduler) extends Filter {
21+
class RedirectFilter @Inject()(val jobScheduler: JobScheduler, val config: SchedulerConfiguration with HttpConf) extends Filter {
2022
val log = Logger.getLogger(getClass.getName)
2123

2224
def init(filterConfig: FilterConfig) {}
@@ -28,8 +30,9 @@ class RedirectFilter @Inject()(val jobScheduler: JobScheduler) extends Filter {
2830
case request: HttpServletRequest =>
2931
val leaderData = jobScheduler.getLeader
3032
val response = rawResponse.asInstanceOf[HttpServletResponse]
33+
val currentId = "%s:%d".format(config.hostname(), config.httpPort())
3134

32-
if (jobScheduler.isLeader) {
35+
if (jobScheduler.isLeader || currentId == leaderData) {
3336
chain.doFilter(request, response)
3437
} else {
3538
var proxyStatus: Int = 200

0 commit comments

Comments
 (0)