summaryrefslogtreecommitdiffstats
path: root/script/git-daemon
diff options
context:
space:
mode:
authorJohan Sørensen <johan@johansorensen.com>2009-02-04 10:23:33 +0100
committerJohan Sørensen <johan@johansorensen.com>2009-04-22 14:04:17 +0200
commit4d0b3d5e9cff320aa5c7b1ccb4cecba43d5ab17e (patch)
tree9b4309221e34a9e7fb01d9dfb2d4c2ae43c6d255 /script/git-daemon
parent198c9de4a144ec3bcd2dc16808165700bf90f579 (diff)
downloadgitorious-mainline-outdated-4d0b3d5e9cff320aa5c7b1ccb4cecba43d5ab17e.zip
gitorious-mainline-outdated-4d0b3d5e9cff320aa5c7b1ccb4cecba43d5ab17e.tar.gz
gitorious-mainline-outdated-4d0b3d5e9cff320aa5c7b1ccb4cecba43d5ab17e.tar.bz2
Make sure we only record the actual clone in git-daemon if all the path stuff
is ok.
Diffstat (limited to 'script/git-daemon')
-rwxr-xr-xscript/git-daemon43
1 files changed, 11 insertions, 32 deletions
diff --git a/script/git-daemon b/script/git-daemon
index 5f988fe..74aac1c 100755
--- a/script/git-daemon
+++ b/script/git-daemon
@@ -72,31 +72,22 @@ module Git
base_path = $3
host = $4
- path = File.expand_path("#{BASE_PATH}/#{base_path}")
- repository = nil
+ path = File.expand_path("#{BASE_PATH}/#{base_path}")
+ log(Process.pid, "Connection from #{ip} for #{base_path.inspect}")
+ repository = nil
begin
repository = ::Repository.find_by_path(path)
rescue => e
log(Process.pid, "AR error: #{e.class.name} #{e.message}:\n #{e.backtrace.join("\n ")}")
end
- log(Process.pid, "Connection from #{ip} for #{base_path.inspect}")
-
- if repository
- if ip_family == "AF_INET6"
- repository.cloned_from(ip)
- else
- geoip = GeoIP.new(File.join(RAILS_ROOT, "data", "GeoIP.dat"))
- localization = geoip.country(ip)
- repository.cloned_from(ip, localization[3], localization[5])
- end
- else
+ unless repository
log(Process.pid, "Cannot find repository: #{path}")
session.close
return
end
-
+
real_path = repository.full_repository_path
log(Process.pid, "#{ip} wants #{path.inspect} => #{real_path.inspect}")
@@ -113,25 +104,13 @@ module Git
return
end
- begin
- repository = ::Repository.find_by_path(path)
- log(Process.pid, "Connection from #{ip} for #{path.inspect}")
-
- if repository
- if ip_family == "AF_INET6"
- repository.cloned_from(ip)
- else
- geoip = GeoIP.new(File.join(RAILS_ROOT, "data", "GeoIP.dat"))
- localization = geoip.country(ip)
- repository.cloned_from(ip, localization[3], localization[5])
- end
- else
- log(Process.pid, "Cannot find repository: #{path}")
- end
- rescue => e
- log(Process.pid, "AR error: #{e.class.name} #{e.message}:\n #{e.backtrace.join("\n ")}")
+ if ip_family == "AF_INET6"
+ repository.cloned_from(ip)
+ else
+ geoip = GeoIP.new(File.join(RAILS_ROOT, "data", "GeoIP.dat"))
+ localization = geoip.country(ip)
+ repository.cloned_from(ip, localization[3], localization[5])
end
-
Dir.chdir(real_path) do
cmd = "git-upload-pack --strict --timeout=#{TIMEOUT} ."