rpc: Warn the user when the path name is too long for the Unix ipc endpoint (#18330)
This commit is contained in:
parent
9bfd0b60cc
commit
b025053ab0
@ -20,13 +20,31 @@ package rpc
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
#include <sys/un.h>
|
||||||
|
|
||||||
|
int max_socket_path_size() {
|
||||||
|
struct sockaddr_un s;
|
||||||
|
return sizeof(s.sun_path);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
import "C"
|
||||||
|
|
||||||
// ipcListen will create a Unix socket on the given endpoint.
|
// ipcListen will create a Unix socket on the given endpoint.
|
||||||
func ipcListen(endpoint string) (net.Listener, error) {
|
func ipcListen(endpoint string) (net.Listener, error) {
|
||||||
|
if len(endpoint) > int(C.max_socket_path_size()) {
|
||||||
|
log.Warn(fmt.Sprintf("The ipc endpoint is longer than %d characters. ", C.max_socket_path_size()),
|
||||||
|
"endpoint", endpoint)
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure the IPC path exists and remove any previous leftover
|
// Ensure the IPC path exists and remove any previous leftover
|
||||||
if err := os.MkdirAll(filepath.Dir(endpoint), 0751); err != nil {
|
if err := os.MkdirAll(filepath.Dir(endpoint), 0751); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
Loading…
Reference in New Issue
Block a user