X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit-repos-server;h=6170b69b022b0d96de3da6265329069fa665472f;hp=6acd6894f0eae552b82dbb542761c712612a2f05;hb=fd0f9361c6833ff1266ff2590797f170af0be090;hpb=325bc216726ed42c137901b4903f99f298a3edbb diff --git a/dgit-repos-server b/dgit-repos-server index 6acd6894..6170b69b 100755 --- a/dgit-repos-server +++ b/dgit-repos-server @@ -153,6 +153,7 @@ sub recorderror ($) { my ($why) = @_; my $w = $ENV{'DGIT_DRS_WORK'}; # we are in stunthook if (defined $w) { + chomp $why; open ERR, ">", "$w/drs-error" or die $!; print ERR $why, "\n" or die $!; close ERR or die $!; @@ -329,7 +330,7 @@ sub parsetag () { for (;;) { print PT or die $!; - $!=0; $_=; defined or die $!; + $!=0; $_=; defined or die "missing signature? $!"; last if m/^-----BEGIN PGP/; } for (;;) { @@ -450,6 +451,14 @@ sub checksuite () { reject "unknown suite"; } +sub tagh1 ($) { + my ($tag) = @_; + my $vals = $tagh{$tag}; + reject "missing tag $tag in signed tag object" unless $vals; + reject "multiple tags $tag in signed tag object" unless @$vals == 1; + return $vals->[0]; +} + sub checks () { debug "checks"; checksuite(); @@ -484,7 +493,6 @@ sub onwardpush () { sub stunthook () { debug "stunthook"; - print Dumper(\$ENV{GIT_DIR}); chdir $workrepo or die "chdir $workrepo: $!"; mkdir "dgit-tmp" or $!==EEXIST or die $!; readupdates(); @@ -544,7 +552,13 @@ sub parseargsdispatch () { defined($destrepo = $ENV{'DGIT_DRS_DEST'}) or die; defined($keyrings = $ENV{'DGIT_DRS_KEYRINGS'}) or die $!; open STDOUT, ">&STDERR" or die $!; - stunthook(); + eval { + stunthook(); + }; + if ($@) { + recorderror "$@" or die; + die $@; + } exit 0; }