/*
startup the winbind task
*/
-void winbind_prepare_task(struct task_server *task, const struct model_ops *model_ops)
+struct wbsrv_service *winbind_prepare_task(struct task_server *task, const struct model_ops *model_ops)
{
uint16_t port = 1;
NTSTATUS status;
if (!directory_create_or_exist(lp_winbindd_socket_directory(task->lp_ctx), geteuid(), 0755)) {
task_server_terminate(task,
"Cannot create winbindd pipe directory", true);
- return;
+ return NULL;
}
/* Make sure the directory for the Samba3 socket exists, and is of the correct permissions */
if (!directory_create_or_exist(lp_winbindd_privileged_socket_directory(task->lp_ctx), geteuid(), 0750)) {
task_server_terminate(task,
"Cannot create winbindd privileged pipe directory", true);
- return;
+ return NULL;
}
service = talloc_zero(task, struct wbsrv_service);
"Have you provisioned this server (%s) or changed it's name?",
errstring, lp_netbios_name(service->task->lp_ctx));
task_server_terminate(task, message, true);
- return;
+ return NULL;
}
break;
case ROLE_DOMAIN_MEMBER:
"Have you joined the %s domain?",
errstring, lp_workgroup(service->task->lp_ctx));
task_server_terminate(task, message, true);
- return;
+ return NULL;
}
break;
case ROLE_DOMAIN_CONTROLLER:
"Have you provisioned the %s domain?",
errstring, lp_workgroup(service->task->lp_ctx));
task_server_terminate(task, message, true);
- return;
+ return NULL;
}
break;
}
service->idmap_ctx = idmap_init(service, task->event_ctx, task->lp_ctx);
if (service->idmap_ctx == NULL) {
task_server_terminate(task, "Failed to load idmap database", true);
- return;
+ return NULL;
}
service->priv_pipe_dir = lp_winbindd_privileged_socket_directory(task->lp_ctx);
status = wbsrv_init_irpc(service);
if (!NT_STATUS_IS_OK(status)) goto irpc_failed;
- return;
+ return service;
listen_failed:
DEBUG(0,("stream_setup_socket(path=%s) failed - %s\n",
listen_socket->socket_path, nt_errstr(status)));
task_server_terminate(task, nt_errstr(status), true);
- return;
+ return NULL;
irpc_failed:
DEBUG(0,("wbsrv_init_irpc() failed - %s\n",
nt_errstr(status)));
task_server_terminate(task, nt_errstr(status), true);
- return;
+ return NULL;
nomem:
task_server_terminate(task, nt_errstr(NT_STATUS_NO_MEMORY), true);
- return;
+ return NULL;
}
/*