Since --stdin could be waiting on user keyboard input or
something else slow, we handle it in the event loop. That
means other commands can change the working directory of
lei-daemon while a query is being trickled to us via stdin.
Rearranging query handling internals to delay opening the
--output destination in commit 26e0fe73de93f451 meant
another command could throw off our --output pathname if
it is relative.
Fixes: 26e0fe73de93f451 ("lei_query: rearrange internals to capture query
early")
---
lib/PublicInbox/LeiQuery.pm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/lib/PublicInbox/LeiQuery.pm b/lib/PublicInbox/LeiQuery.pm
index 7ddba4cf..385ba0a9 100644
--- a/lib/PublicInbox/LeiQuery.pm
+++ b/lib/PublicInbox/LeiQuery.pm
@@ -53,6 +53,9 @@ sub qstr_add { # PublicInbox::InputPipe::consume callback for
--stdin
my ($self) = @_; # $_[1] = $rbuf
if (defined($_[1])) {
$_[1] eq '' and return eval {
+ if (my $dfd = $self->{3}) {
+ chdir($dfd) or return $self->fail("fchdir: $!");
+ }
$self->{mset_opt}->{q_raw} = $self->{mset_opt}->{qstr};
$self->{lse}->query_approxidate($self->{lse}->git,
$self->{mset_opt}->{qstr});
--
unsubscribe: one-click, see List-Unsubscribe header
archive: https://public-inbox.org/meta/