[SCM] Samba Shared Repository - branch master updated
Stefan Metzmacher
metze at samba.org
Fri Feb 4 07:53:02 MST 2011
The branch, master has been updated
via e9c45a3 s3:lib/addrchange: set ctx->sock to -1 after close
via d8d5a3f s3:lib/addrchange: remove unused pointer
via ff935dd s3:lib/addrchange: let addrchange_done() retry and ignore unknown message types
via 902fbd9 s3:winbindd: fix segfaults on addrchange errors and make DEBUG() statements more usefull
from 17c01a5 s3:rpc_server/netlogon: reject validation level 6 without ads support
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit e9c45a3973c85fbe40c017724c7909fefa05b656
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Feb 4 12:54:36 2011 +0100
s3:lib/addrchange: set ctx->sock to -1 after close
The makes the code more consistent with similar destructors.
metze
Autobuild-User: Stefan Metzmacher <metze at samba.org>
Autobuild-Date: Fri Feb 4 15:52:55 CET 2011 on sn-devel-104
commit d8d5a3fb3a7754a71ba78399ab0fdcd8b3854dfa
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Feb 4 12:53:38 2011 +0100
s3:lib/addrchange: remove unused pointer
metze
commit ff935ddf8b22be269abb730904d324efb1e3e8f2
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Feb 4 12:32:41 2011 +0100
s3:lib/addrchange: let addrchange_done() retry and ignore unknown message types
Messages like RTM_NEWLINK should be just ignored.
metze
commit 902fbd91a19c414b61bc18ef24d7d84b30d37b1b
Author: Stefan Metzmacher <metze at samba.org>
Date: Fri Feb 4 12:29:42 2011 +0100
s3:winbindd: fix segfaults on addrchange errors and make DEBUG() statements more usefull
metze
-----------------------------------------------------------------------
Summary of changes:
source3/lib/addrchange.c | 24 +++++++++++++++++-------
source3/winbindd/winbindd.c | 9 ++++++---
2 files changed, 23 insertions(+), 10 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/lib/addrchange.c b/source3/lib/addrchange.c
index f3606e2..8cd3c19 100644
--- a/source3/lib/addrchange.c
+++ b/source3/lib/addrchange.c
@@ -28,7 +28,6 @@
struct addrchange_context {
int sock;
- uint8_t *buf;
};
static int addrchange_context_destructor(struct addrchange_context *c);
@@ -77,12 +76,14 @@ static int addrchange_context_destructor(struct addrchange_context *c)
{
if (c->sock != -1) {
close(c->sock);
- c->sock = 0;
+ c->sock = -1;
}
return 0;
}
struct addrchange_state {
+ struct tevent_context *ev;
+ struct addrchange_context *ctx;
uint8_t buf[8192];
struct sockaddr_storage fromaddr;
socklen_t fromaddr_len;
@@ -104,14 +105,15 @@ struct tevent_req *addrchange_send(TALLOC_CTX *mem_ctx,
if (req == NULL) {
return NULL;
}
+ state->ev = ev;
+ state->ctx = ctx;
state->fromaddr_len = sizeof(state->fromaddr);
-
- subreq = recvfrom_send(state, ev, ctx->sock,
+ subreq = recvfrom_send(state, state->ev, state->ctx->sock,
state->buf, sizeof(state->buf), 0,
&state->fromaddr, &state->fromaddr_len);
if (tevent_req_nomem(subreq, req)) {
- return tevent_req_post(req, ev);
+ return tevent_req_post(req, state->ev);
}
tevent_req_set_callback(subreq, addrchange_done, req);
return req;
@@ -166,8 +168,16 @@ static void addrchange_done(struct tevent_req *subreq)
state->type = ADDRCHANGE_DEL;
break;
default:
- DEBUG(10, ("Got unexpected type %d\n", h->nlmsg_type));
- tevent_req_nterror(req, NT_STATUS_INVALID_ADDRESS);
+ DEBUG(10, ("Got unexpected type %d - ignoring\n", h->nlmsg_type));
+
+ state->fromaddr_len = sizeof(state->fromaddr);
+ subreq = recvfrom_send(state, state->ev, state->ctx->sock,
+ state->buf, sizeof(state->buf), 0,
+ &state->fromaddr, &state->fromaddr_len);
+ if (tevent_req_nomem(subreq, req)) {
+ return;
+ }
+ tevent_req_set_callback(subreq, addrchange_done, req);
return;
}
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 701f7a0..3a76231 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -1142,8 +1142,9 @@ static void winbindd_init_addrchange(TALLOC_CTX *mem_ctx,
}
req = addrchange_send(state, ev, state->ctx);
if (req == NULL) {
- DEBUG(10, ("addrchange_send failed\n"));
+ DEBUG(0, ("addrchange_send failed\n"));
TALLOC_FREE(state);
+ return;
}
tevent_req_set_callback(req, winbindd_addr_changed, state);
}
@@ -1162,6 +1163,7 @@ static void winbindd_addr_changed(struct tevent_req *req)
DEBUG(10, ("addrchange_recv failed: %s, stop listening\n",
nt_errstr(status)));
TALLOC_FREE(state);
+ return;
}
if (type == ADDRCHANGE_DEL) {
char addrstr[INET6_ADDRSTRLEN];
@@ -1178,14 +1180,15 @@ static void winbindd_addr_changed(struct tevent_req *req)
messaging_server_id(state->msg_ctx),
MSG_WINBIND_IP_DROPPED, &blob);
if (!NT_STATUS_IS_OK(status)) {
- DEBUG(10, ("messaging_send failed: %s\n",
+ DEBUG(10, ("messaging_send failed: %s - ignoring\n",
nt_errstr(status)));
}
}
req = addrchange_send(state, state->ev, state->ctx);
if (req == NULL) {
- DEBUG(10, ("addrchange_send failed\n"));
+ DEBUG(0, ("addrchange_send failed\n"));
TALLOC_FREE(state);
+ return;
}
tevent_req_set_callback(req, winbindd_addr_changed, state);
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list