summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--integrationtests/commandutils.go5
-rw-r--r--internal/clients/handlers/basehandler.go12
-rw-r--r--internal/server/handlers/readcommand.go2
3 files changed, 10 insertions, 9 deletions
diff --git a/integrationtests/commandutils.go b/integrationtests/commandutils.go
index 763e76f..fd63b5d 100644
--- a/integrationtests/commandutils.go
+++ b/integrationtests/commandutils.go
@@ -77,9 +77,10 @@ func startCommandWithEnv(ctx context.Context, t *testing.T, inPipeFile,
t.Log(cmdStr, strings.Join(args, " "))
cmd := exec.CommandContext(ctx, cmdStr, args...)
- // Set environment variables if provided
+ // Always inherit environment variables
+ cmd.Env = os.Environ()
+ // Add any additional environment variables if provided
if env != nil {
- cmd.Env = os.Environ()
for k, v := range env {
cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", k, v))
}
diff --git a/internal/clients/handlers/basehandler.go b/internal/clients/handlers/basehandler.go
index d1f0bb5..1a500dc 100644
--- a/internal/clients/handlers/basehandler.go
+++ b/internal/clients/handlers/basehandler.go
@@ -61,10 +61,8 @@ func (h *baseHandler) Write(p []byte) (n int, err error) {
for _, b := range p {
switch b {
case '\n':
- // Backwards compatible with DTail 3 (e.g. get error message from server
- // about protocol missmatch.
+ // Just add the newline to the buffer, don't treat as message delimiter
h.receiveBuf.WriteByte(b)
- fallthrough
case protocol.MessageDelimiter:
message := h.receiveBuf.String()
h.handleMessage(message)
@@ -93,11 +91,11 @@ func (h *baseHandler) handleMessage(message string) {
return
}
- // Only add newline if message doesn't already end with one
- if len(message) > 0 && message[len(message)-1] != '\n' {
- dlog.Client.Raw(message + "\n")
- } else {
+ // Add newline only if the message doesn't already end with one
+ if len(message) > 0 && message[len(message)-1] == '\n' {
dlog.Client.Raw(message)
+ } else {
+ dlog.Client.Raw(message + "\n")
}
}
diff --git a/internal/server/handlers/readcommand.go b/internal/server/handlers/readcommand.go
index abdbe9c..23c3175 100644
--- a/internal/server/handlers/readcommand.go
+++ b/internal/server/handlers/readcommand.go
@@ -53,6 +53,7 @@ func (r *readCommand) Start(ctx context.Context, ltx lcontext.LContext,
// e.g.: grep foo bar.log | dmap 'from STATS select ...'
// Only read from pipe if no file argument is provided
isPipe := r.isInputFromPipe() && (argc < 2 || args[1] == "" || args[1] == "-")
+
if isPipe {
dlog.Server.Debug("Reading data from stdin pipe")
// Empty file path and globID "-" represents reading from the stdin pipe.
@@ -212,6 +213,7 @@ func (r *readCommand) readWithProcessor(ctx context.Context, ltx lcontext.LConte
path, globID string, re regex.Regex, reader fs.FileReader) {
dlog.Server.Info(r.server.user, "Using channel-less grep implementation", path, globID)
+
// Use the existing lines channel but with the processor-based reader
lines := r.server.lines