fix: use unixgram (DGRAM) instead of unix (STREAM) for socket output
Some checks failed
Build RPM Package / Build RPM Packages (CentOS 7, Rocky 8/9/10) (push) Has been cancelled
Some checks failed
Build RPM Package / Build RPM Packages (CentOS 7, Rocky 8/9/10) (push) Has been cancelled
- Change net.DialTimeout from "unix" to "unixgram" - Fixes "protocol wrong type for socket" error - DGRAM sockets are connectionless, better suited for log shipping - Update test to use net.ListenUnixgram instead of net.Listen Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
@ -657,31 +657,29 @@ func TestUnixSocketWriter_CallbackResetOnSuccess(t *testing.T) {
|
||||
tmpDir := t.TempDir()
|
||||
socketPath := filepath.Join(tmpDir, "test.sock")
|
||||
|
||||
// Create a real socket
|
||||
listener, err := net.Listen("unix", socketPath)
|
||||
// Create a real DGRAM (unixgram) socket
|
||||
addr, err := net.ResolveUnixAddr("unixgram", socketPath)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create socket: %v", err)
|
||||
t.Fatalf("Failed to resolve unixgram address: %v", err)
|
||||
}
|
||||
listener, err := net.ListenUnixgram("unixgram", addr)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create unixgram socket: %v", err)
|
||||
}
|
||||
defer listener.Close()
|
||||
|
||||
// Start a goroutine to accept and read connections
|
||||
// Start a goroutine to read datagrams
|
||||
done := make(chan struct{})
|
||||
go func() {
|
||||
buf := make([]byte, 65536)
|
||||
for {
|
||||
conn, err := listener.Accept()
|
||||
if err != nil {
|
||||
select {
|
||||
case <-done:
|
||||
return
|
||||
default:
|
||||
}
|
||||
continue
|
||||
select {
|
||||
case <-done:
|
||||
return
|
||||
default:
|
||||
}
|
||||
// Read and discard data
|
||||
buf := make([]byte, 1024)
|
||||
conn.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
|
||||
conn.Read(buf)
|
||||
conn.Close()
|
||||
listener.SetReadDeadline(time.Now().Add(100 * time.Millisecond))
|
||||
_, _, _ = listener.ReadFrom(buf)
|
||||
}
|
||||
}()
|
||||
defer close(done)
|
||||
|
||||
Reference in New Issue
Block a user