From: Volker Lendecke Date: Tue, 14 Jun 2016 12:54:32 +0000 (+0200) Subject: smbd: Pass "sconn" via notify to notify_callback() X-Git-Tag: tdb-1.3.10~322 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3caa8a1bf1e55d09399c4d54c69b638955ed3b36;p=thirdparty%2Fsamba.git smbd: Pass "sconn" via notify to notify_callback() Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison --- diff --git a/source3/smbd/notify.c b/source3/smbd/notify.c index f493f11aa69..7a436a9f56e 100644 --- a/source3/smbd/notify.c +++ b/source3/smbd/notify.c @@ -240,7 +240,8 @@ void change_notify_reply(struct smb_request *req, notify_buf->num_changes = 0; } -void notify_callback(void *private_data, struct timespec when, +void notify_callback(struct smbd_server_connection *sconn, + void *private_data, struct timespec when, const struct notify_event *e) { files_struct *fsp = (files_struct *)private_data; diff --git a/source3/smbd/notify_msg.c b/source3/smbd/notify_msg.c index e9f91995a11..cd9a0fb1e92 100644 --- a/source3/smbd/notify_msg.c +++ b/source3/smbd/notify_msg.c @@ -39,7 +39,10 @@ struct notify_context { struct server_id notifyd; struct messaging_context *msg_ctx; struct notify_list *list; - void (*callback)(void *private_data, struct timespec when, + + struct smbd_server_connection *sconn; + void (*callback)(struct smbd_server_connection *sconn, + void *private_data, struct timespec when, const struct notify_event *ctx); }; @@ -50,7 +53,9 @@ static void notify_handler(struct messaging_context *msg, void *private_data, struct notify_context *notify_init( TALLOC_CTX *mem_ctx, struct messaging_context *msg, struct tevent_context *ev, - void (*callback)(void *, struct timespec, + struct smbd_server_connection *sconn, + void (*callback)(struct smbd_server_connection *sconn, + void *, struct timespec, const struct notify_event *)) { struct server_id_db *names_db; @@ -63,6 +68,8 @@ struct notify_context *notify_init( } ctx->msg_ctx = msg; ctx->list = NULL; + + ctx->sconn = sconn; ctx->callback = callback; names_db = messaging_names_db(msg); @@ -118,8 +125,8 @@ static void notify_handler(struct messaging_context *msg, void *private_data, for (listel = ctx->list; listel != NULL; listel = listel->next) { if (listel->private_data == event.private_data) { - ctx->callback(listel->private_data, event_msg->when, - &event); + ctx->callback(ctx->sconn, listel->private_data, + event_msg->when, &event); break; } } diff --git a/source3/smbd/proto.h b/source3/smbd/proto.h index b677748c2e6..97d738c40e6 100644 --- a/source3/smbd/proto.h +++ b/source3/smbd/proto.h @@ -530,7 +530,8 @@ void change_notify_reply(struct smb_request *req, void (*reply_fn)(struct smb_request *req, NTSTATUS error_code, uint8_t *buf, size_t len)); -void notify_callback(void *private_data, struct timespec when, +void notify_callback(struct smbd_server_connection *sconn, + void *private_data, struct timespec when, const struct notify_event *e); NTSTATUS change_notify_create(struct files_struct *fsp, uint32_t filter, bool recursive); @@ -586,7 +587,9 @@ int fam_watch(TALLOC_CTX *mem_ctx, struct notify_context *notify_init( TALLOC_CTX *mem_ctx, struct messaging_context *msg, struct tevent_context *ev, - void (*callback)(void *, struct timespec, + struct smbd_server_connection *sconn, + void (*callback)(struct smbd_server_connection *sconn, + void *, struct timespec, const struct notify_event *)); NTSTATUS notify_add(struct notify_context *ctx, const char *path, uint32_t filter, uint32_t subdir_filter, diff --git a/source3/smbd/service.c b/source3/smbd/service.c index 4b16dbad5e9..ef434f9f368 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -529,7 +529,7 @@ static NTSTATUS notify_init_sconn(struct smbd_server_connection *sconn) } sconn->notify_ctx = notify_init(sconn, sconn->msg_ctx, sconn->ev_ctx, - notify_callback); + sconn, notify_callback); if (sconn->notify_ctx == NULL) { return NT_STATUS_NO_MEMORY; } diff --git a/source3/utils/status.c b/source3/utils/status.c index 7bff1023853..f185663ec17 100644 --- a/source3/utils/status.c +++ b/source3/utils/status.c @@ -708,7 +708,8 @@ int main(int argc, const char *argv[]) struct notify_context *n; n = notify_init(talloc_tos(), msg_ctx, - messaging_tevent_context(msg_ctx), NULL); + messaging_tevent_context(msg_ctx), + NULL, NULL); if (n == NULL) { goto done; }