diff options
author | Johan Sørensen <johan@johansorensen.com> | 2009-02-04 10:23:33 +0100 |
---|---|---|
committer | Johan Sørensen <johan@johansorensen.com> | 2009-04-22 14:04:17 +0200 |
commit | 4d0b3d5e9cff320aa5c7b1ccb4cecba43d5ab17e (patch) | |
tree | 9b4309221e34a9e7fb01d9dfb2d4c2ae43c6d255 /script/git-daemon | |
parent | 198c9de4a144ec3bcd2dc16808165700bf90f579 (diff) | |
download | gitorious-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-x | script/git-daemon | 43 |
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} ." |