+
+static afp_child_t *dsi_start(AFPObj *obj, DSI *dsi, server_child *server_children)
+{
+ afp_child_t *child = NULL;
+
+ if (!(child = dsi_getsession(dsi,
+ server_children,
+ obj->options.tickleval))) {
+ LOG(log_error, logtype_afpd, "dsi_start: session error: %s", strerror(errno));
+ return NULL;
+ }
+
+ /* we've forked. */
+ if (child->ipc_fds[0] == -1) {
+ configfree(obj, dsi);
+ obj->ipc_fd = child->ipc_fds[1];
+ free(child);
+ afp_over_dsi(obj); /* start a session */
+ exit (0);
+ }
+
+ return child;
+}