[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha7-1481-gb475a1e

Volker Lendecke vlendec at samba.org
Thu May 7 20:53:08 GMT 2009


The branch, master has been updated
       via  b475a1e7ebfcc1e1e11800bf93893eae11966d05 (commit)
       via  6f320d0208be9e460af1bd10c0e42e78e17d53dc (commit)
      from  2d5e0eadb858d9717b68a770c8789a9432bbb3f7 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit b475a1e7ebfcc1e1e11800bf93893eae11966d05
Author: Volker Lendecke <vl at samba.org>
Date:   Wed May 6 15:10:00 2009 +0200

    Convert lib/wb_reqtrans.c to unix calling conventions

commit 6f320d0208be9e460af1bd10c0e42e78e17d53dc
Author: Volker Lendecke <vl at samba.org>
Date:   Wed May 6 14:52:17 2009 +0200

    Adapt wb_reqtrans to "recent" coding conventions

-----------------------------------------------------------------------

Summary of changes:
 source3/include/wbc_async.h |   12 ++--
 source3/lib/wb_reqtrans.c   |  201 ++++++++++++++++---------------------------
 source3/lib/wbclient.c      |   69 +++++++++++++--
 3 files changed, 141 insertions(+), 141 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/wbc_async.h b/source3/include/wbc_async.h
index eaec0d1..57b0cb8 100644
--- a/source3/include/wbc_async.h
+++ b/source3/include/wbc_async.h
@@ -41,24 +41,24 @@ wbcErr tevent_req_simple_recv_wbcerr(struct tevent_req *req);
 struct tevent_req *wb_req_read_send(TALLOC_CTX *mem_ctx,
 				    struct tevent_context *ev,
 				    int fd, size_t max_extra_data);
-wbcErr wb_req_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
-			struct winbindd_request **preq);
+ssize_t wb_req_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+			 struct winbindd_request **preq, int *err);
 
 struct tevent_req *wb_req_write_send(TALLOC_CTX *mem_ctx,
 				     struct tevent_context *ev,
 				     struct tevent_queue *queue, int fd,
 				     struct winbindd_request *wb_req);
-wbcErr wb_req_write_recv(struct tevent_req *req);
+ssize_t wb_req_write_recv(struct tevent_req *req, int *err);
 
 struct tevent_req *wb_resp_read_send(TALLOC_CTX *mem_ctx,
 				     struct tevent_context *ev, int fd);
-wbcErr wb_resp_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
-			 struct winbindd_response **presp);
+ssize_t wb_resp_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+			  struct winbindd_response **presp, int *err);
 
 struct tevent_req *wb_resp_write_send(TALLOC_CTX *mem_ctx,
 				      struct tevent_context *ev,
 				      struct tevent_queue *queue, int fd,
 				      struct winbindd_response *wb_resp);
-wbcErr wb_resp_write_recv(struct tevent_req *req);
+ssize_t wb_resp_write_recv(struct tevent_req *req, int *err);
 
 #endif /*_WBC_ASYNC_H_*/
diff --git a/source3/lib/wb_reqtrans.c b/source3/lib/wb_reqtrans.c
index dbea8b6..d7ec17b 100644
--- a/source3/lib/wb_reqtrans.c
+++ b/source3/lib/wb_reqtrans.c
@@ -25,60 +25,10 @@
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
 
-wbcErr map_wbc_err_from_errno(int error)
-{
-	switch(error) {
-	case EPERM:
-	case EACCES:
-		return WBC_ERR_AUTH_ERROR;
-	case ENOMEM:
-		return WBC_ERR_NO_MEMORY;
-	case EIO:
-	default:
-		return WBC_ERR_UNKNOWN_FAILURE;
-	}
-}
-
-bool tevent_req_is_wbcerr(struct tevent_req *req, wbcErr *pwbc_err)
-{
-	enum tevent_req_state state;
-	uint64_t error;
-	if (!tevent_req_is_error(req, &state, &error)) {
-		*pwbc_err = WBC_ERR_SUCCESS;
-		return false;
-	}
-
-	switch (state) {
-	case TEVENT_REQ_USER_ERROR:
-		*pwbc_err = error;
-		break;
-	case TEVENT_REQ_TIMED_OUT:
-		*pwbc_err = WBC_ERR_UNKNOWN_FAILURE;
-		break;
-	case TEVENT_REQ_NO_MEMORY:
-		*pwbc_err = WBC_ERR_NO_MEMORY;
-		break;
-	default:
-		*pwbc_err = WBC_ERR_UNKNOWN_FAILURE;
-		break;
-	}
-	return true;
-}
-
-wbcErr tevent_req_simple_recv_wbcerr(struct tevent_req *req)
-{
-	wbcErr wbc_err;
-
-	if (tevent_req_is_wbcerr(req, &wbc_err)) {
-		return wbc_err;
-	}
-
-	return WBC_ERR_SUCCESS;
-}
-
 struct req_read_state {
 	struct winbindd_request *wb_req;
 	size_t max_extra_data;
+	ssize_t ret;
 };
 
 static ssize_t wb_req_more(uint8_t *buf, size_t buflen, void *private_data);
@@ -88,25 +38,21 @@ struct tevent_req *wb_req_read_send(TALLOC_CTX *mem_ctx,
 				    struct tevent_context *ev,
 				    int fd, size_t max_extra_data)
 {
-	struct tevent_req *result, *subreq;
+	struct tevent_req *req, *subreq;
 	struct req_read_state *state;
 
-	result = tevent_req_create(mem_ctx, &state, struct req_read_state);
-	if (result == NULL) {
+	req = tevent_req_create(mem_ctx, &state, struct req_read_state);
+	if (req == NULL) {
 		return NULL;
 	}
 	state->max_extra_data = max_extra_data;
 
 	subreq = read_packet_send(state, ev, fd, 4, wb_req_more, state);
-	if (subreq == NULL) {
-		goto nomem;
+	if (tevent_req_nomem(subreq, req)) {
+		return tevent_req_post(req, ev);
 	}
-
-	tevent_req_set_callback(subreq, wb_req_read_done, result);
-	return result;
- nomem:
-	TALLOC_FREE(result);
-	return NULL;
+	tevent_req_set_callback(subreq, wb_req_read_done, req);
+	return req;
 }
 
 static ssize_t wb_req_more(uint8_t *buf, size_t buflen, void *private_data)
@@ -143,13 +89,12 @@ static void wb_req_read_done(struct tevent_req *subreq)
 	struct req_read_state *state = tevent_req_data(
 		req, struct req_read_state);
 	int err;
-	ssize_t ret;
 	uint8_t *buf;
 
-	ret = read_packet_recv(subreq, state, &buf, &err);
+	state->ret = read_packet_recv(subreq, state, &buf, &err);
 	TALLOC_FREE(subreq);
-	if (ret == -1) {
-		tevent_req_error(req, map_wbc_err_from_errno(err));
+	if (state->ret == -1) {
+		tevent_req_error(req, err);
 		return;
 	}
 
@@ -164,22 +109,22 @@ static void wb_req_read_done(struct tevent_req *subreq)
 	tevent_req_done(req);
 }
 
-wbcErr wb_req_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
-			struct winbindd_request **preq)
+ssize_t wb_req_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+			 struct winbindd_request **preq, int *err)
 {
 	struct req_read_state *state = tevent_req_data(
 		req, struct req_read_state);
-	wbcErr wbc_err;
 
-	if (tevent_req_is_wbcerr(req, &wbc_err)) {
-		return wbc_err;
+	if (tevent_req_is_unix_error(req, err)) {
+		return -1;
 	}
 	*preq = talloc_move(mem_ctx, &state->wb_req);
-	return WBC_ERR_SUCCESS;
+	return state->ret;
 }
 
 struct req_write_state {
 	struct iovec iov[2];
+	ssize_t ret;
 };
 
 static void wb_req_write_done(struct tevent_req *subreq);
@@ -189,12 +134,12 @@ struct tevent_req *wb_req_write_send(TALLOC_CTX *mem_ctx,
 				     struct tevent_queue *queue, int fd,
 				     struct winbindd_request *wb_req)
 {
-	struct tevent_req *result, *subreq;
+	struct tevent_req *req, *subreq;
 	struct req_write_state *state;
 	int count = 1;
 
-	result = tevent_req_create(mem_ctx, &state, struct req_write_state);
-	if (result == NULL) {
+	req = tevent_req_create(mem_ctx, &state, struct req_write_state);
+	if (req == NULL) {
 		return NULL;
 	}
 
@@ -208,40 +153,44 @@ struct tevent_req *wb_req_write_send(TALLOC_CTX *mem_ctx,
 	}
 
 	subreq = writev_send(state, ev, queue, fd, state->iov, count);
-	if (subreq == NULL) {
-		goto fail;
+	if (tevent_req_nomem(subreq, req)) {
+		return tevent_req_post(req, ev);
 	}
-	tevent_req_set_callback(subreq, wb_req_write_done, result);
-	return result;
-
- fail:
-	TALLOC_FREE(result);
-	return NULL;
+	tevent_req_set_callback(subreq, wb_req_write_done, req);
+	return req;
 }
 
 static void wb_req_write_done(struct tevent_req *subreq)
 {
 	struct tevent_req *req = tevent_req_callback_data(
 		subreq, struct tevent_req);
+	struct req_write_state *state = tevent_req_data(
+		req, struct req_write_state);
 	int err;
-	ssize_t ret;
 
-	ret = writev_recv(subreq, &err);
+	state->ret = writev_recv(subreq, &err);
 	TALLOC_FREE(subreq);
-	if (ret < 0) {
-		tevent_req_error(req, map_wbc_err_from_errno(err));
+	if (state->ret < 0) {
+		tevent_req_error(req, err);
 		return;
 	}
 	tevent_req_done(req);
 }
 
-wbcErr wb_req_write_recv(struct tevent_req *req)
+ssize_t wb_req_write_recv(struct tevent_req *req, int *err)
 {
-	return tevent_req_simple_recv_wbcerr(req);
+	struct req_write_state *state = tevent_req_data(
+		req, struct req_write_state);
+
+	if (tevent_req_is_unix_error(req, err)) {
+		return -1;
+	}
+	return state->ret;
 }
 
 struct resp_read_state {
 	struct winbindd_response *wb_resp;
+	ssize_t ret;
 };
 
 static ssize_t wb_resp_more(uint8_t *buf, size_t buflen, void *private_data);
@@ -250,24 +199,20 @@ static void wb_resp_read_done(struct tevent_req *subreq);
 struct tevent_req *wb_resp_read_send(TALLOC_CTX *mem_ctx,
 				     struct tevent_context *ev, int fd)
 {
-	struct tevent_req *result, *subreq;
+	struct tevent_req *req, *subreq;
 	struct resp_read_state *state;
 
-	result = tevent_req_create(mem_ctx, &state, struct resp_read_state);
-	if (result == NULL) {
+	req = tevent_req_create(mem_ctx, &state, struct resp_read_state);
+	if (req == NULL) {
 		return NULL;
 	}
 
 	subreq = read_packet_send(state, ev, fd, 4, wb_resp_more, state);
-	if (subreq == NULL) {
-		goto nomem;
+	if (tevent_req_nomem(subreq, req)) {
+		return tevent_req_post(req, ev);
 	}
-	tevent_req_set_callback(subreq, wb_resp_read_done, result);
-	return result;
-
- nomem:
-	TALLOC_FREE(result);
-	return NULL;
+	tevent_req_set_callback(subreq, wb_resp_read_done, req);
+	return req;
 }
 
 static ssize_t wb_resp_more(uint8_t *buf, size_t buflen, void *private_data)
@@ -294,12 +239,11 @@ static void wb_resp_read_done(struct tevent_req *subreq)
 		req, struct resp_read_state);
 	uint8_t *buf;
 	int err;
-	ssize_t ret;
 
-	ret = read_packet_recv(subreq, state, &buf, &err);
+	state->ret = read_packet_recv(subreq, state, &buf, &err);
 	TALLOC_FREE(subreq);
-	if (ret == -1) {
-		tevent_req_error(req, map_wbc_err_from_errno(err));
+	if (state->ret == -1) {
+		tevent_req_error(req, err);
 		return;
 	}
 
@@ -314,22 +258,22 @@ static void wb_resp_read_done(struct tevent_req *subreq)
 	tevent_req_done(req);
 }
 
-wbcErr wb_resp_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
-			 struct winbindd_response **presp)
+ssize_t wb_resp_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+			  struct winbindd_response **presp, int *err)
 {
 	struct resp_read_state *state = tevent_req_data(
 		req, struct resp_read_state);
-	wbcErr wbc_err;
 
-	if (tevent_req_is_wbcerr(req, &wbc_err)) {
-		return wbc_err;
+	if (tevent_req_is_unix_error(req, err)) {
+		return -1;
 	}
 	*presp = talloc_move(mem_ctx, &state->wb_resp);
-	return WBC_ERR_SUCCESS;
+	return state->ret;
 }
 
 struct resp_write_state {
 	struct iovec iov[2];
+	ssize_t ret;
 };
 
 static void wb_resp_write_done(struct tevent_req *subreq);
@@ -339,12 +283,12 @@ struct tevent_req *wb_resp_write_send(TALLOC_CTX *mem_ctx,
 				      struct tevent_queue *queue, int fd,
 				      struct winbindd_response *wb_resp)
 {
-	struct tevent_req *result, *subreq;
+	struct tevent_req *req, *subreq;
 	struct resp_write_state *state;
 	int count = 1;
 
-	result = tevent_req_create(mem_ctx, &state, struct resp_write_state);
-	if (result == NULL) {
+	req = tevent_req_create(mem_ctx, &state, struct resp_write_state);
+	if (req == NULL) {
 		return NULL;
 	}
 
@@ -359,34 +303,37 @@ struct tevent_req *wb_resp_write_send(TALLOC_CTX *mem_ctx,
 	}
 
 	subreq = writev_send(state, ev, queue, fd, state->iov, count);
-	if (subreq == NULL) {
-		goto fail;
+	if (tevent_req_nomem(subreq, req)) {
+		return tevent_req_post(req, ev);
 	}
-	tevent_req_set_callback(subreq, wb_resp_write_done, result);
-	return result;
-
- fail:
-	TALLOC_FREE(result);
-	return NULL;
+	tevent_req_set_callback(subreq, wb_resp_write_done, req);
+	return req;
 }
 
 static void wb_resp_write_done(struct tevent_req *subreq)
 {
 	struct tevent_req *req = tevent_req_callback_data(
 		subreq, struct tevent_req);
+	struct resp_write_state *state = tevent_req_data(
+		req, struct resp_write_state);
 	int err;
-	ssize_t ret;
 
-	ret = writev_recv(subreq, &err);
+	state->ret = writev_recv(subreq, &err);
 	TALLOC_FREE(subreq);
-	if (ret < 0) {
-		tevent_req_error(req, map_wbc_err_from_errno(err));
+	if (state->ret < 0) {
+		tevent_req_error(req, err);
 		return;
 	}
 	tevent_req_done(req);
 }
 
-wbcErr wb_resp_write_recv(struct tevent_req *req)
+ssize_t wb_resp_write_recv(struct tevent_req *req, int *err)
 {
-	return tevent_req_simple_recv_wbcerr(req);
+	struct resp_write_state *state = tevent_req_data(
+		req, struct resp_write_state);
+
+	if (tevent_req_is_unix_error(req, err)) {
+		return -1;
+	}
+	return state->ret;
 }
diff --git a/source3/lib/wbclient.c b/source3/lib/wbclient.c
index c22e168..abe5b50 100644
--- a/source3/lib/wbclient.c
+++ b/source3/lib/wbclient.c
@@ -20,6 +20,57 @@
 #include "includes.h"
 #include "wbc_async.h"
 
+wbcErr map_wbc_err_from_errno(int error)
+{
+	switch(error) {
+	case EPERM:
+	case EACCES:
+		return WBC_ERR_AUTH_ERROR;
+	case ENOMEM:
+		return WBC_ERR_NO_MEMORY;
+	case EIO:
+	default:
+		return WBC_ERR_UNKNOWN_FAILURE;
+	}
+}
+
+bool tevent_req_is_wbcerr(struct tevent_req *req, wbcErr *pwbc_err)
+{
+	enum tevent_req_state state;
+	uint64_t error;
+	if (!tevent_req_is_error(req, &state, &error)) {
+		*pwbc_err = WBC_ERR_SUCCESS;
+		return false;
+	}
+
+	switch (state) {
+	case TEVENT_REQ_USER_ERROR:
+		*pwbc_err = error;
+		break;
+	case TEVENT_REQ_TIMED_OUT:
+		*pwbc_err = WBC_ERR_UNKNOWN_FAILURE;
+		break;
+	case TEVENT_REQ_NO_MEMORY:
+		*pwbc_err = WBC_ERR_NO_MEMORY;
+		break;
+	default:
+		*pwbc_err = WBC_ERR_UNKNOWN_FAILURE;
+		break;
+	}
+	return true;
+}
+
+wbcErr tevent_req_simple_recv_wbcerr(struct tevent_req *req)
+{
+	wbcErr wbc_err;
+
+	if (tevent_req_is_wbcerr(req, &wbc_err)) {
+		return wbc_err;
+	}
+
+	return WBC_ERR_SUCCESS;
+}
+
 struct wb_context {
 	struct tevent_queue *queue;
 	int fd;
@@ -320,12 +371,13 @@ static void wb_int_trans_write_done(struct tevent_req *subreq)
 		subreq, struct tevent_req);
 	struct wb_int_trans_state *state = tevent_req_data(
 		req, struct wb_int_trans_state);
-	wbcErr wbc_err;
+	ssize_t ret;
+	int err;
 
-	wbc_err = wb_req_write_recv(subreq);
+	ret = wb_req_write_recv(subreq, &err);
 	TALLOC_FREE(subreq);
-	if (!WBC_ERROR_IS_OK(wbc_err)) {
-		tevent_req_error(req, wbc_err);
+	if (ret == -1) {
+		tevent_req_error(req, map_wbc_err_from_errno(err));
 		return;
 	}
 
@@ -342,12 +394,13 @@ static void wb_int_trans_read_done(struct tevent_req *subreq)
 		subreq, struct tevent_req);
 	struct wb_int_trans_state *state = tevent_req_data(
 		req, struct wb_int_trans_state);
-	wbcErr wbc_err;
+	ssize_t ret;
+	int err;
 
-	wbc_err = wb_resp_read_recv(subreq, state, &state->wb_resp);
+	ret = wb_resp_read_recv(subreq, state, &state->wb_resp, &err);
 	TALLOC_FREE(subreq);
-	if (!WBC_ERROR_IS_OK(wbc_err)) {
-		tevent_req_error(req, wbc_err);
+	if (ret == -1) {
+		tevent_req_error(req, map_wbc_err_from_errno(err));
 		return;
 	}
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list