pthreadpool: we need to use pthreadpool_tevent_per_thread_cwd() on the callers pool
authorStefan Metzmacher <metze@samba.org>
Thu, 26 Jul 2018 07:41:22 +0000 (09:41 +0200)
committerRalph Boehme <slow@samba.org>
Fri, 27 Jul 2018 11:07:14 +0000 (13:07 +0200)
In pthreadpool_tevent_job_send() we remember if the job will be chdir
safe. It means we means we need to ask the callers pool when calling
pthreadpool_tevent_per_thread_cwd(), as the callers pool might
be a wrapper using pthreadpool_tevent_force_per_thread_cwd().

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
lib/pthreadpool/pthreadpool_tevent.c

index f88f82d..b4a9786 100644 (file)
@@ -992,6 +992,7 @@ struct tevent_req *pthreadpool_tevent_job_send(
        struct pthreadpool_tevent_job_state *state = NULL;
        struct pthreadpool_tevent_job *job = NULL;
        int ret;
+       struct pthreadpool_tevent *caller_pool = pool;
        struct pthreadpool_tevent_wrapper *wrapper = pool->wrapper.ctx;
 
        pthreadpool_tevent_cleanup_orphaned_jobs();
@@ -1037,7 +1038,7 @@ struct tevent_req *pthreadpool_tevent_job_send(
                return tevent_req_post(req, ev);
        }
        PTHREAD_TEVENT_JOB_THREAD_FENCE_INIT(job);
-       job->per_thread_cwd = pthreadpool_tevent_per_thread_cwd(pool);
+       job->per_thread_cwd = pthreadpool_tevent_per_thread_cwd(caller_pool);
        talloc_set_destructor(job, pthreadpool_tevent_job_destructor);
        DLIST_ADD_END(job->pool->jobs, job);
        job->state = state;