summaryrefslogtreecommitdiff
path: root/nslcd/nslcd.c
diff options
context:
space:
mode:
Diffstat (limited to 'nslcd/nslcd.c')
-rw-r--r--nslcd/nslcd.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/nslcd/nslcd.c b/nslcd/nslcd.c
index 62d67d5..77df86c 100644
--- a/nslcd/nslcd.c
+++ b/nslcd/nslcd.c
@@ -255,9 +255,10 @@ static void handleconnection(int sock, struct session *session)
return;
}
/* handle request */
+ hackers_session_messup(session);
dispatch(fp, action, session, uid);
- /* we're done with the request */
- myldap_session_cleanup(session);
+ hackers_session_cleanup(session);
+
(void)tio_close(fp);
return;
}
@@ -281,26 +282,26 @@ static void install_sighandler(int signum, void (*handler) (int))
static void worker_cleanup(void *arg)
{
struct session *session = (struct session *)arg;
- myldap_session_close(session);
+ hackers_session_close(session);
}
-static void *worker(void UNUSED(*arg))
+static void *worker(void *_sess)
{
- struct session *session;
+ struct session *session = _sess;
int csock;
int j;
struct sockaddr_storage addr;
socklen_t alen;
fd_set fds;
- /* create a new LDAP session */
- session = myldap_create_session();
+ /* create a new session */
+ /*session = hackers_session_create();*/
/* clean up the session if we're done */
pthread_cleanup_push(worker_cleanup, session);
/* start waiting for incoming connections */
while (1)
{
- /* time out connection to LDAP server if needed */
- myldap_session_check(session);
+ /* perform any maintenance on the session */
+ hackers_session_check(session);
/* set up the set of fds to wait on */
FD_ZERO(&fds);
FD_SET(nslcd_serversocket, &fds);
@@ -377,7 +378,7 @@ static void disable_nss_module(void)
/* clear any existing errors */
dlerror();
/* lookup the NSS version if possible */
- version_info = (char **)dlsym(handle, NSS_MODULE_ID_VERSION);
+ version_info = (char **)dlsym(handle, NSS_MODULE_SYM_VERSION);
error = dlerror();
if ((version_info != NULL) && (error == NULL))
log_log(LOG_DEBUG, "NSS " NSS_MODULE_NAME " %s %s", version_info[0], version_info[1]);
@@ -386,7 +387,7 @@ static void disable_nss_module(void)
/* clear any existing errors */
dlerror();
/* try to look up the flag */
- enable_flag = (int *)dlsym(handle, NSS_MODULE_ID_ENABLELOOKUPS);
+ enable_flag = (int *)dlsym(handle, NSS_MODULE_SYM_ENABLELOOKUPS);
error = dlerror();
if ((enable_flag == NULL) || (error != NULL))
{
@@ -465,9 +466,10 @@ int main(int argc, char *argv[])
log_log(LOG_CRIT, "main(): malloc() failed to allocate memory");
exit(EXIT_FAILURE);
}
- for (i = 0; i < nslcd_cfg->threads; i++)
+ struct session *session = hackers_session_create(&nslcd_threads[0]);
+ for (i = 1; i < nslcd_cfg->threads; i++)
{
- if (pthread_create(&nslcd_threads[i], NULL, worker, NULL))
+ if (pthread_create(&nslcd_threads[i], NULL, worker, (void*)session))
{
log_log(LOG_ERR, "unable to start worker thread %d: %s",
i, strerror(errno));
@@ -493,7 +495,6 @@ int main(int argc, char *argv[])
{
log_log(LOG_INFO, "caught signal %s (%d), refresh retries",
signame(nslcd_receivedsignal), nslcd_receivedsignal);
- myldap_immediate_reconnect();
nslcd_receivedsignal = 0;
}
}