aboutsummaryrefslogtreecommitdiffstats
path: root/src/listen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/listen.c')
-rw-r--r--src/listen.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/listen.c b/src/listen.c
index 78bb6ace1..423b54e9a 100644
--- a/src/listen.c
+++ b/src/listen.c
@@ -157,6 +157,22 @@ static void parseListenConfigParam(unsigned int port, ConfigParam * param)
#endif
BINDERROR();
}
+ } else if (param->value[0] == '/') {
+ size_t path_length;
+ struct sockaddr_un sun;
+
+ path_length = strlen(param->value);
+ if (path_length >= sizeof(sun.sun_path))
+ FATAL("unix socket path is too long\n");
+
+ sun.sun_family = AF_UNIX;
+ memcpy(sun.sun_path, param->value, path_length + 1);
+
+ addrp = (const struct sockaddr *)&sun;
+ addrlen = sizeof(sun);
+
+ if (establishListen(addrp, addrlen) < 0)
+ BINDERROR();
} else {
struct hostent *he;
DEBUG("binding to address for %s\n", param->value);