mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-20 04:20:55 +01:00
When proxying the SVN protocol, don't mutate URIs in protocol frames if we're an intracluster proxy
Summary: Ref T10809. Currently, both the proxy and target may mutate URIs (rewriting "svn+ssh://x/diffusion/Y/" to a path on disk). I believe this previously worked by fate/chance/luck since both URI variants contain the repository information, but the algorithms were tightened up recently with callsign removal. Stop rewriting them if we're the intracluster proxy -- they only need to be rewritten on the target host. Test Plan: - Checked out a proxied SVN repository, with and without a callsign. - Checked out an unproxied SVN repository, with and without a callsign. Reviewers: chad Reviewed By: chad Maniphest Tasks: T10809 Differential Revision: https://secure.phabricator.com/D15712
This commit is contained in:
parent
d4bf2a147b
commit
ca6da4c2be
1 changed files with 10 additions and 0 deletions
|
@ -21,6 +21,7 @@ final class DiffusionSubversionServeSSHWorkflow
|
|||
private $externalBaseURI;
|
||||
private $peekBuffer;
|
||||
private $command;
|
||||
private $isProxying;
|
||||
|
||||
private function getCommand() {
|
||||
return $this->command;
|
||||
|
@ -146,6 +147,7 @@ final class DiffusionSubversionServeSSHWorkflow
|
|||
|
||||
if ($this->shouldProxy()) {
|
||||
$command = $this->getProxyCommand();
|
||||
$this->isProxying = true;
|
||||
} else {
|
||||
$command = csprintf(
|
||||
'svnserve -t --tunnel-user=%s',
|
||||
|
@ -372,6 +374,10 @@ final class DiffusionSubversionServeSSHWorkflow
|
|||
}
|
||||
|
||||
private function makeInternalURI($uri_string) {
|
||||
if ($this->isProxying) {
|
||||
return $uri_string;
|
||||
}
|
||||
|
||||
$uri = new PhutilURI($uri_string);
|
||||
|
||||
$repository = $this->getRepository();
|
||||
|
@ -409,6 +415,10 @@ final class DiffusionSubversionServeSSHWorkflow
|
|||
}
|
||||
|
||||
private function makeExternalURI($uri) {
|
||||
if ($this->isProxying) {
|
||||
return $uri;
|
||||
}
|
||||
|
||||
$internal = $this->internalBaseURI;
|
||||
$external = $this->externalBaseURI;
|
||||
|
||||
|
|
Loading…
Reference in a new issue