aboutsummaryrefslogtreecommitdiff
path: root/src/socket.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/socket.c')
-rw-r--r--src/socket.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/socket.c b/src/socket.c
index 6f1bb87..8b25073 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -49,7 +49,8 @@ switch_eids (uid_t *puid, gid_t *pgid, mode_t *pumask)
}
int
-create_socket (struct pies_url *url, const char *user, mode_t umaskval)
+create_socket (struct pies_url *url, int socket_type,
+ const char *user, mode_t umaskval)
{
int rc;
int fd;
@@ -64,9 +65,9 @@ create_socket (struct pies_url *url, const char *user, mode_t umaskval)
gid_t gid = 0;
int switch_back;
- if (strcmp (url->proto, "unix") == 0
- || strcmp (url->proto, "file") == 0
- || strcmp (url->proto, "socket") == 0)
+ if (strcmp (url->scheme, "unix") == 0
+ || strcmp (url->scheme, "file") == 0
+ || strcmp (url->scheme, "socket") == 0)
{
struct stat st;
const char *group = NULL;
@@ -169,7 +170,7 @@ create_socket (struct pies_url *url, const char *user, mode_t umaskval)
}
}
}
- else if (strcmp (url->proto, "inet") == 0)
+ else if (strcmp (url->scheme, "inet") == 0)
{
const char *host = url->host;
short port = url->port;
@@ -209,7 +210,7 @@ create_socket (struct pies_url *url, const char *user, mode_t umaskval)
return -1;
}
- fd = socket (addr.sa.sa_family, SOCK_STREAM, 0);
+ fd = socket (addr.sa.sa_family, socket_type, url->proto);
if (fd == -1)
{
logmsg (LOG_ERR, _("%s: cannot create socket: %s"),
@@ -409,9 +410,9 @@ fd_set listenset;
int fd_max;
int
-register_listener (int fd)
+register_socket (int socktype, int fd)
{
- if (listen (fd, 8) == -1)
+ if (socktype == SOCK_STREAM && listen (fd, 8) == -1)
{
logmsg (LOG_ERR, "listen: %s", strerror (errno));
return 1;
@@ -422,6 +423,20 @@ register_listener (int fd)
return 0;
}
+int
+disable_socket (int fd)
+{
+ debug (2, (_("disabling fd %d"), fd));
+ FD_CLR (fd, &listenset);
+}
+
+int
+enable_socket (int fd)
+{
+ debug (2, (_("enabling fd %d"), fd));
+ FD_SET (fd, &listenset);
+}
+
void
pies_pause ()
{
@@ -437,6 +452,7 @@ pies_pause ()
if (FD_ISSET (i, &rdset))
progman_accept (i);
}
+ break;
}
else if (rc < 0)
{

Return to:

Send suggestions and report system problems to the System administrator.