The branch, master has been updated via 2d1bd87... s4:torture/raw/lock - Fix "discard const" warnings by introducing "discard_const_p"s via 262d26d... s4:torture/nbt/wins - Add more casts via 58a5e76... s4:torture/nbench/nbench - Add a cast before "str_list_make_shell" via 8b44999... s4:torture/ldap/ldap_sort - Add some casts to suppress warnings via 7be99d3... s4:schema - Make some more (result) variables const and fix up warnings with "discard_const_p" via 012494b... util/util_strlist - add a call "const_str_list" for making "unconst" lists "const" via 9ce7e9a... s4:kdc - Merged kdc_tcp_accept() and kpasswdd_tcp_accept(). via 0c89a6f... s4:kdc - Merged kdc_add_kdc_socket() and kdc_add_kpasswd_socket(). via bd17df7... s4 - Create default modules directory. via c93fc3a... s4:kdc - Disable KDC port when it's set to 0. from 183ea82... Merge commit 'origin/master' into abartlet-devel
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 2d1bd87f732e37323bd382ac66f41bfc52a23dac Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de> Date: Fri Nov 20 11:35:13 2009 +0100 s4:torture/raw/lock - Fix "discard const" warnings by introducing "discard_const_p"s commit 262d26d05a6b1f6b074408ba8be352324d1b0d47 Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de> Date: Sat Oct 17 22:36:00 2009 +0200 s4:torture/nbt/wins - Add more casts commit 58a5e764a9c96229cb4daa99d3d8ef18c188b4fe Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de> Date: Sat Oct 17 22:35:21 2009 +0200 s4:torture/nbench/nbench - Add a cast before "str_list_make_shell" commit 8b4499942eff7bc6ea1b64cdc6ab6958b8f5d1a8 Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de> Date: Sat Oct 17 22:34:00 2009 +0200 s4:torture/ldap/ldap_sort - Add some casts to suppress warnings commit 7be99d373578f42ac47e67ef1b95a2409cecc184 Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de> Date: Sat Oct 17 22:25:12 2009 +0200 s4:schema - Make some more (result) variables const and fix up warnings with "discard_const_p" commit 012494b8005b621642ec98d51d067378f8e10421 Author: Matthias Dieter Wallnöfer <mwallnoe...@yahoo.de> Date: Wed Nov 25 09:15:39 2009 +0100 util/util_strlist - add a call "const_str_list" for making "unconst" lists "const" commit 9ce7e9ab8401e038b36d53e477fcb658d1c54f80 Author: Endi S. Dewata <edew...@redhat.com> Date: Tue Nov 24 01:00:45 2009 -0600 s4:kdc - Merged kdc_tcp_accept() and kpasswdd_tcp_accept(). Signed-off-by: Andrew Bartlett <abart...@samba.org> commit 0c89a6f2aa433e54d7af99d9214ddc186784af97 Author: Endi S. Dewata <edew...@redhat.com> Date: Mon Nov 23 22:28:11 2009 -0600 s4:kdc - Merged kdc_add_kdc_socket() and kdc_add_kpasswd_socket(). Signed-off-by: Andrew Bartlett <abart...@samba.org> commit bd17df71b59ba54c7845ddc000e8cb17b6a23928 Author: Endi S. Dewata <edew...@redhat.com> Date: Fri Nov 20 14:57:11 2009 -0600 s4 - Create default modules directory. Signed-off-by: Andrew Bartlett <abart...@samba.org> commit c93fc3a10a8839752eb4c1d1e91c1b455c974eef Author: Endi S. Dewata <edew...@redhat.com> Date: Fri Nov 20 08:47:40 2009 -0600 s4:kdc - Disable KDC port when it's set to 0. Signed-off-by: Andrew Bartlett <abart...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/util/util.h | 5 + lib/util/util_strlist.c | 9 ++ source4/Makefile | 1 + source4/dsdb/schema/schema.h | 8 +- source4/dsdb/schema/schema_inferiors.c | 117 +++++++++++++++----------- source4/kdc/kdc.c | 147 +++++++++++--------------------- source4/torture/ldap/ldap_sort.c | 14 ++-- source4/torture/nbench/nbench.c | 5 +- source4/torture/nbt/wins.c | 18 +++-- source4/torture/raw/lock.c | 9 ++- 10 files changed, 165 insertions(+), 168 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/util/util.h b/lib/util/util.h index e7ea0ba..729190a 100644 --- a/lib/util/util.h +++ b/lib/util/util.h @@ -535,6 +535,11 @@ _PUBLIC_ const char **str_list_add_const(const char **list, const char *s); _PUBLIC_ const char **str_list_copy_const(TALLOC_CTX *mem_ctx, const char **list); +/** + * Needed for making an "unconst" list "const" + */ +_PUBLIC_ const char **const_str_list(char **list); + /* The following definitions come from lib/util/util_file.c */ diff --git a/lib/util/util_strlist.c b/lib/util/util_strlist.c index 71998b9..6d1a695 100644 --- a/lib/util/util_strlist.c +++ b/lib/util/util_strlist.c @@ -486,3 +486,12 @@ _PUBLIC_ const char **str_list_copy_const(TALLOC_CTX *mem_ctx, ret[i] = NULL; return ret; } + +/** + * Needed for making an "unconst" list "const" + */ +_PUBLIC_ const char **const_str_list(char **list) +{ + return (const char **)list; +} + diff --git a/source4/Makefile b/source4/Makefile index 8f23da5..8e4895b 100644 --- a/source4/Makefile +++ b/source4/Makefile @@ -213,6 +213,7 @@ installdirs:: $(DESTDIR)$(torturedir) \ $(DESTDIR)$(libdir) \ $(DESTDIR)$(modulesdir) \ + $(DESTDIR)$(modulesdir)/ldb \ $(DESTDIR)$(mandir) \ $(DESTDIR)$(localstatedir) \ $(DESTDIR)$(localstatedir)/lib \ diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h index fa687d0..186f5d5 100644 --- a/source4/dsdb/schema/schema.h +++ b/source4/dsdb/schema/schema.h @@ -138,10 +138,10 @@ struct dsdb_class { bool isDefunct; bool systemOnly; - char **supclasses; - char **subclasses; - char **subclasses_direct; - char **posssuperiors; + const char **supclasses; + const char **subclasses; + const char **subclasses_direct; + const char **posssuperiors; uint32_t subClassOf_id; uint32_t *systemAuxiliaryClass_ids; uint32_t *auxiliaryClass_ids; diff --git a/source4/dsdb/schema/schema_inferiors.c b/source4/dsdb/schema/schema_inferiors.c index 23cd43d..d6fc1cf 100644 --- a/source4/dsdb/schema/schema_inferiors.c +++ b/source4/dsdb/schema/schema_inferiors.c @@ -34,15 +34,16 @@ /* create the SUPCLASSES() list */ -static char **schema_supclasses(struct dsdb_schema *schema, struct dsdb_class *schema_class) +static const char **schema_supclasses(const struct dsdb_schema *schema, + struct dsdb_class *schema_class) { - char **list; + const char **list; if (schema_class->supclasses) { return schema_class->supclasses; } - list = str_list_make_empty(schema_class); + list = const_str_list(str_list_make_empty(schema_class)); if (list == NULL) { DEBUG(0,(__location__ " out of memory\n")); return NULL; @@ -56,13 +57,11 @@ static char **schema_supclasses(struct dsdb_schema *schema, struct dsdb_class *s } if (schema_class->subClassOf) { + const struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, schema_class->subClassOf); const char **list2; - list = str_list_add_const(list, schema_class->subClassOf); + list = str_list_add_const(list, schema_class->subClassOf); - list2 = schema_supclasses(schema, - discard_const_p(struct dsdb_class, - dsdb_class_by_lDAPDisplayName(schema, - schema_class->subClassOf))); + list2 = schema_supclasses(schema, discard_const_p(struct dsdb_class, schema_class2)); list = str_list_append_const(list, list2); } @@ -75,13 +74,15 @@ static char **schema_supclasses(struct dsdb_schema *schema, struct dsdb_class *s this one is used internally matches SUBCLASSES() python function */ -static char **schema_subclasses(struct dsdb_schema *schema, TALLOC_CTX *mem_ctx, char **oclist) +static const char **schema_subclasses(const struct dsdb_schema *schema, + TALLOC_CTX *mem_ctx, + const char **oclist) { - char **list = str_list_make_empty(mem_ctx); + const char **list = const_str_list(str_list_make_empty(mem_ctx)); int i; for (i=0; oclist && oclist[i]; i++) { - struct dsdb_class *schema_class = dsdb_class_by_lDAPDisplayName(schema, oclist[i]); + const struct dsdb_class *schema_class = dsdb_class_by_lDAPDisplayName(schema, oclist[i]); if (!schema_class) { DEBUG(0, ("ERROR: Unable to locate subClass: '%s'\n", oclist[i])); continue; @@ -95,24 +96,25 @@ static char **schema_subclasses(struct dsdb_schema *schema, TALLOC_CTX *mem_ctx, /* equivalent of the POSSSUPERIORS() python function */ -static char **schema_posssuperiors(struct dsdb_schema *schema, - struct dsdb_class *schema_class) +static const char **schema_posssuperiors(const struct dsdb_schema *schema, + struct dsdb_class *schema_class) { if (schema_class->posssuperiors == NULL) { - char **list2 = str_list_make_empty(schema_class); - char **list3; + const char **list2 = const_str_list(str_list_make_empty(schema_class)); + const char **list3; int i; list2 = str_list_append_const(list2, schema_class->systemPossSuperiors); list2 = str_list_append_const(list2, schema_class->possSuperiors); list3 = schema_supclasses(schema, schema_class); for (i=0; list3 && list3[i]; i++) { - struct dsdb_class *class2 = dsdb_class_by_lDAPDisplayName(schema, list3[i]); + const struct dsdb_class *class2 = dsdb_class_by_lDAPDisplayName(schema, list3[i]); if (!class2) { DEBUG(0, ("ERROR: Unable to locate supClass: '%s'\n", list3[i])); continue; } - list2 = str_list_append_const(list2, schema_posssuperiors(schema, class2)); + list2 = str_list_append_const(list2, schema_posssuperiors(schema, + discard_const_p(struct dsdb_class, class2))); } list2 = str_list_append_const(list2, schema_subclasses(schema, list2, list2)); @@ -122,14 +124,16 @@ static char **schema_posssuperiors(struct dsdb_schema *schema, return schema_class->posssuperiors; } -static char **schema_subclasses_recurse(struct dsdb_schema *schema, struct dsdb_class *schema_class) +static const char **schema_subclasses_recurse(const struct dsdb_schema *schema, + struct dsdb_class *schema_class) { - char **list = str_list_copy_const(schema_class, schema_class->subclasses_direct); + const char **list = str_list_copy_const(schema_class, schema_class->subclasses_direct); int i; for (i=0;list && list[i]; i++) { - struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, list[i]); + const struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, list[i]); if (schema_class != schema_class2) { - list = str_list_append_const(list, schema_subclasses_recurse(schema, schema_class2)); + list = str_list_append_const(list, schema_subclasses_recurse(schema, + discard_const_p(struct dsdb_class, schema_class2))); } } return list; @@ -137,37 +141,40 @@ static char **schema_subclasses_recurse(struct dsdb_schema *schema, struct dsdb_ /* Walk down the subClass tree, setting a higher index as we go down * each level. top is 1, subclasses of top are 2, etc */ -void schema_subclasses_order_recurse(struct dsdb_schema *schema, struct dsdb_class *schema_class, int order) +void schema_subclasses_order_recurse(const struct dsdb_schema *schema, + struct dsdb_class *schema_class, + const int order) { const char **list = schema_class->subclasses_direct; int i; schema_class->subClass_order = order; for (i=0;list && list[i]; i++) { - struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, list[i]); - schema_subclasses_order_recurse(schema, schema_class2, order+1); + const struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, list[i]); + schema_subclasses_order_recurse(schema, discard_const_p(struct dsdb_class, schema_class2), order+1); } return; } -static int schema_create_subclasses(struct dsdb_schema *schema) +static int schema_create_subclasses(const struct dsdb_schema *schema) { struct dsdb_class *schema_class, *top; for (schema_class=schema->classes; schema_class; schema_class=schema_class->next) { - struct dsdb_class *schema_class2 = dsdb_class_by_lDAPDisplayName(schema, schema_class->subClassOf); + struct dsdb_class *schema_class2 = discard_const_p(struct dsdb_class, + dsdb_class_by_lDAPDisplayName(schema, schema_class->subClassOf)); if (schema_class2 == NULL) { DEBUG(0,("ERROR: no subClassOf for '%s'\n", schema_class->lDAPDisplayName)); return LDB_ERR_OPERATIONS_ERROR; } if (schema_class2 && schema_class != schema_class2) { if (schema_class2->subclasses_direct == NULL) { - schema_class2->subclasses_direct = str_list_make_empty(schema_class2); + schema_class2->subclasses_direct = const_str_list(str_list_make_empty(schema_class2)); if (!schema_class2->subclasses_direct) { return LDB_ERR_OPERATIONS_ERROR; } } - schema_class2->subclasses_direct = str_list_add_const(schema_class2->subclasses_direct, - schema_class->lDAPDisplayName); + schema_class2->subclasses_direct = str_list_add_const(schema_class2->subclasses_direct, + schema_class->lDAPDisplayName); } } @@ -178,7 +185,7 @@ static int schema_create_subclasses(struct dsdb_schema *schema) schema_class->subClass_order = 0; } - top = dsdb_class_by_lDAPDisplayName(schema, "top"); + top = discard_const_p(struct dsdb_class, dsdb_class_by_lDAPDisplayName(schema, "top")); if (!top) { DEBUG(0,("ERROR: no 'top' class in loaded schema\n")); return LDB_ERR_OPERATIONS_ERROR; @@ -188,40 +195,42 @@ static int schema_create_subclasses(struct dsdb_schema *schema) return LDB_SUCCESS; } -static void schema_fill_possible_inferiors(struct dsdb_schema *schema, struct dsdb_class *schema_class) +static void schema_fill_possible_inferiors(const struct dsdb_schema *schema, + struct dsdb_class *schema_class) { struct dsdb_class *c2; for (c2=schema->classes; c2; c2=c2->next) { - char **superiors = schema_posssuperiors(schema, c2); + const char **superiors = schema_posssuperiors(schema, c2); if (c2->systemOnly == false && c2->objectClassCategory != 2 && c2->objectClassCategory != 3 && str_list_check(superiors, schema_class->lDAPDisplayName)) { if (schema_class->possibleInferiors == NULL) { - schema_class->possibleInferiors = str_list_make_empty(schema_class); + schema_class->possibleInferiors = const_str_list(str_list_make_empty(schema_class)); } schema_class->possibleInferiors = str_list_add_const(schema_class->possibleInferiors, - c2->lDAPDisplayName); + c2->lDAPDisplayName); } } schema_class->possibleInferiors = str_list_unique(schema_class->possibleInferiors); } -static void schema_fill_system_possible_inferiors(struct dsdb_schema *schema, struct dsdb_class *schema_class) +static void schema_fill_system_possible_inferiors(const struct dsdb_schema *schema, + struct dsdb_class *schema_class) { struct dsdb_class *c2; for (c2=schema->classes; c2; c2=c2->next) { - char **superiors = schema_posssuperiors(schema, c2); + const char **superiors = schema_posssuperiors(schema, c2); if (c2->objectClassCategory != 2 && c2->objectClassCategory != 3 && str_list_check(superiors, schema_class->lDAPDisplayName)) { if (schema_class->systemPossibleInferiors == NULL) { - schema_class->systemPossibleInferiors = str_list_make_empty(schema_class); + schema_class->systemPossibleInferiors = const_str_list(str_list_make_empty(schema_class)); } schema_class->systemPossibleInferiors = str_list_add_const(schema_class->systemPossibleInferiors, - c2->lDAPDisplayName); + c2->lDAPDisplayName); } } schema_class->systemPossibleInferiors = str_list_unique(schema_class->systemPossibleInferiors); @@ -230,11 +239,14 @@ static void schema_fill_system_possible_inferiors(struct dsdb_schema *schema, st /* fill in a string class name from a governs_ID */ -static void schema_fill_from_class_one(struct dsdb_schema *schema, struct dsdb_class *c, - const char **s, uint32_t id) +static void schema_fill_from_class_one(const struct dsdb_schema *schema, + const struct dsdb_class *c, + const char **s, + const uint32_t id) { if (*s == NULL && id != 0) { - struct dsdb_class *c2 = dsdb_class_by_governsID_id(schema, id); + const struct dsdb_class *c2 = + dsdb_class_by_governsID_id(schema, id); if (c2) { *s = c2->lDAPDisplayName; } @@ -244,15 +256,18 @@ static void schema_fill_from_class_one(struct dsdb_schema *schema, struct dsdb_c /* fill in a list of string class names from a governs_ID list */ -static void schema_fill_from_class_list(struct dsdb_schema *schema, struct dsdb_class *c, - const char ***s, uint32_t *ids) +static void schema_fill_from_class_list(const struct dsdb_schema *schema, + const struct dsdb_class *c, + const char ***s, + const uint32_t *ids) { if (*s == NULL && ids != NULL) { int i; for (i=0;ids[i];i++) ; *s = talloc_array(c, const char *, i+1); for (i=0;ids[i];i++) { - struct dsdb_class *c2 = dsdb_class_by_governsID_id(schema, ids[i]); + const struct dsdb_class *c2 = + dsdb_class_by_governsID_id(schema, ids[i]); if (c2) { (*s)[i] = c2->lDAPDisplayName; } else { @@ -266,15 +281,18 @@ static void schema_fill_from_class_list(struct dsdb_schema *schema, struct dsdb_ /* fill in a list of string attribute names from a attributeID list */ -static void schema_fill_from_attribute_list(struct dsdb_schema *schema, struct dsdb_class *c, - const char ***s, uint32_t *ids) +static void schema_fill_from_attribute_list(const struct dsdb_schema *schema, + const struct dsdb_class *c, + const char ***s, + const uint32_t *ids) { if (*s == NULL && ids != NULL) { int i; for (i=0;ids[i];i++) ; *s = talloc_array(c, const char *, i+1); for (i=0;ids[i];i++) { - struct dsdb_attribute *a = dsdb_attribute_by_attributeID_id(schema, ids[i]); + const struct dsdb_attribute *a = + dsdb_attribute_by_attributeID_id(schema, ids[i]); if (a) { (*s)[i] = a->lDAPDisplayName; } else { @@ -288,7 +306,7 @@ static void schema_fill_from_attribute_list(struct dsdb_schema *schema, struct d /* if the schema came from DRS then some attributes will be setup as IDs */ -static void schema_fill_from_ids(struct dsdb_schema *schema) +static void schema_fill_from_ids(const struct dsdb_schema *schema) { struct dsdb_class *c; for (c=schema->classes; c; c=c->next) { @@ -304,7 +322,7 @@ static void schema_fill_from_ids(struct dsdb_schema *schema) } } -int schema_fill_constructed(struct dsdb_schema *schema) +int schema_fill_constructed(const struct dsdb_schema *schema) { int ret; struct dsdb_class *schema_class; @@ -332,5 +350,6 @@ int schema_fill_constructed(struct dsdb_schema *schema) schema_class->subclasses = NULL; schema_class->posssuperiors = NULL; } + return LDB_SUCCESS; } diff --git a/source4/kdc/kdc.c b/source4/kdc/kdc.c index 1260e90..92dd5b6 100644 --- a/source4/kdc/kdc.c +++ b/source4/kdc/kdc.c @@ -355,9 +355,9 @@ static bool kdc_process(struct kdc_server *kdc, /* called when we get a new connection */ -static void kdc_tcp_generic_accept(struct stream_connection *conn, kdc_process_fn_t process_fn) +static void kdc_tcp_accept(struct stream_connection *conn) { - struct kdc_server *kdc = talloc_get_type(conn->private_data, struct kdc_server); + struct kdc_socket *kdc_socket = talloc_get_type(conn->private_data, struct kdc_socket); struct kdc_tcp_connection *kdcconn; kdcconn = talloc_zero(conn, struct kdc_tcp_connection); @@ -366,8 +366,8 @@ static void kdc_tcp_generic_accept(struct stream_connection *conn, kdc_process_f return; } kdcconn->conn = conn; - kdcconn->kdc = kdc; - kdcconn->process = process_fn; + kdcconn->kdc = kdc_socket->kdc; + kdcconn->process = kdc_socket->process; conn->private_data = kdcconn; kdcconn->packet = packet_init(kdcconn); @@ -385,11 +385,6 @@ static void kdc_tcp_generic_accept(struct stream_connection *conn, kdc_process_f packet_set_serialise(kdcconn->packet); } -static void kdc_tcp_accept(struct stream_connection *conn) -{ - kdc_tcp_generic_accept(conn, kdc_process); -} - static const struct stream_server_ops kdc_tcp_stream_ops = { .name = "kdc_tcp", .accept_connection = kdc_tcp_accept, @@ -397,112 +392,47 @@ static const struct stream_server_ops kdc_tcp_stream_ops = { .send_handler = kdc_tcp_send }; -static void kpasswdd_tcp_accept(struct stream_connection *conn) -{ - kdc_tcp_generic_accept(conn, kpasswdd_process); -} - -static const struct stream_server_ops kpasswdd_tcp_stream_ops = { - .name = "kpasswdd_tcp", - .accept_connection = kpasswdd_tcp_accept, - .recv_handler = kdc_tcp_recv_handler, - .send_handler = kdc_tcp_send -}; - /* start listening on the given address */ -static NTSTATUS kdc_add_socket(struct kdc_server *kdc, const char *address, - uint16_t kdc_port, uint16_t kpasswd_port) +static NTSTATUS kdc_add_socket(struct kdc_server *kdc, + const struct model_ops *model_ops, + const char *name, + const char *address, + uint16_t port, + kdc_process_fn_t process) { - const struct model_ops *model_ops; struct kdc_socket *kdc_socket; - struct kdc_socket *kpasswd_socket; - struct socket_address *kdc_address, *kpasswd_address; + struct socket_address *socket_address; NTSTATUS status; kdc_socket = talloc(kdc, struct kdc_socket); NT_STATUS_HAVE_NO_MEMORY(kdc_socket); - kpasswd_socket = talloc(kdc, struct kdc_socket); - NT_STATUS_HAVE_NO_MEMORY(kpasswd_socket); - status = socket_create("ip", SOCKET_TYPE_DGRAM, &kdc_socket->sock, 0); if (!NT_STATUS_IS_OK(status)) { talloc_free(kdc_socket); return status; } - status = socket_create("ip", SOCKET_TYPE_DGRAM, &kpasswd_socket->sock, 0); - if (!NT_STATUS_IS_OK(status)) { - talloc_free(kpasswd_socket); - return status; - } - kdc_socket->kdc = kdc; kdc_socket->send_queue = NULL; - kdc_socket->process = kdc_process; + kdc_socket->process = process; talloc_steal(kdc_socket, kdc_socket->sock); kdc_socket->fde = event_add_fd(kdc->task->event_ctx, kdc, - socket_get_fd(kdc_socket->sock), EVENT_FD_READ, - kdc_socket_handler, kdc_socket); - - kdc_address = socket_address_from_strings(kdc_socket, kdc_socket->sock->backend_name, - address, kdc_port); - NT_STATUS_HAVE_NO_MEMORY(kdc_address); - - status = socket_listen(kdc_socket->sock, kdc_address, 0, 0); - if (!NT_STATUS_IS_OK(status)) { - DEBUG(0,("Failed to bind to %s:%d UDP for kdc - %s\n", - address, kdc_port, nt_errstr(status))); - talloc_free(kdc_socket); - return status; - } - - kpasswd_socket->kdc = kdc; - kpasswd_socket->send_queue = NULL; - kpasswd_socket->process = kpasswdd_process; - - talloc_steal(kpasswd_socket, kpasswd_socket->sock); - - kpasswd_socket->fde = event_add_fd(kdc->task->event_ctx, kdc, - socket_get_fd(kpasswd_socket->sock), EVENT_FD_READ, - kdc_socket_handler, kpasswd_socket); + socket_get_fd(kdc_socket->sock), EVENT_FD_READ, + kdc_socket_handler, kdc_socket); -- Samba Shared Repository