summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Scaria <arunscaria91@gmail.com>2011-06-28 21:10:36 +0530
committerArun Scaria <arunscaria91@gmail.com>2011-06-28 21:10:36 +0530
commit5dde75056bbb42fec73223122a6fe27a47395dec (patch)
tree467d7c0bf744906e0807bde5186570827931d0df
parent1cae5b93f3be2ab2bad5dd63128917538e24aa29 (diff)
downloadsssd_unused-5dde75056bbb42fec73223122a6fe27a47395dec.tar.gz
sssd_unused-5dde75056bbb42fec73223122a6fe27a47395dec.tar.xz
sssd_unused-5dde75056bbb42fec73223122a6fe27a47395dec.zip
fixed sbus-plugin sample communication
-rw-r--r--src/responder/sudo/sudosrv.c10
-rw-r--r--src/sss_client/sudo_plugin/sss_sudo_cli.h6
-rw-r--r--src/sss_client/sudo_plugin/sss_sudoplugin.c74
3 files changed, 41 insertions, 49 deletions
diff --git a/src/responder/sudo/sudosrv.c b/src/responder/sudo/sudosrv.c
index 250adf44..35ad4939 100644
--- a/src/responder/sudo/sudosrv.c
+++ b/src/responder/sudo/sudosrv.c
@@ -83,7 +83,7 @@ static int sudo_query_validation(DBusMessage *message, struct sbus_connection *c
return EIO;
}
- printf(" The string messahe is : %s ",str);
+ fprintf(stderr," The string message is : %s\n ",str);
talloc_set_destructor((TALLOC_CTX *)sudocli, sudo_client_destructor);
DEBUG(4, ("Got string [%s]\n", str));
@@ -150,13 +150,7 @@ static int sudo_client_init(struct sbus_connection *conn, void *data)
sudocli->conn = conn;
sudocli->initialized = false;
- /*
- * 5 seconds should be plenty
- *
- * FIXME: Call to this tevent_timeval_current_ofs()
- * hangs and the goes in waiting forever.
- * Pls comment if you know why.
- */
+ /* 5 seconds should be plenty */
tv = tevent_timeval_current_ofs(5, 0);
sudocli->timeout = tevent_add_timer(sudoctx->ev, sudocli, tv, init_timeout, sudocli);
diff --git a/src/sss_client/sudo_plugin/sss_sudo_cli.h b/src/sss_client/sudo_plugin/sss_sudo_cli.h
index 5bfa183f..799fa632 100644
--- a/src/sss_client/sudo_plugin/sss_sudo_cli.h
+++ b/src/sss_client/sudo_plugin/sss_sudo_cli.h
@@ -32,10 +32,14 @@
#undef SSS_START_OF_SUDO_REQUEST
#define SSS_START_OF_SUDO_REQUEST 0x436789
+#undef SSS_SUDO_SERVER_ADDRESS
+#define SSS_SUDO_SERVER_ADDRESS "unix:path=/tmp/sssd/sudo"
+#undef SSS_SUDO_TIMEOUT
+#define SSS_SUDO_TIMEOUT 60
#ifndef _SSSCLI_H
- /* If sss_cli.h is not imported */
+ /* If sss_cli.h is not included */
struct sss_cli_req_data {
size_t len;
const void *data;
diff --git a/src/sss_client/sudo_plugin/sss_sudoplugin.c b/src/sss_client/sudo_plugin/sss_sudoplugin.c
index 46ed72a2..616d4bc0 100644
--- a/src/sss_client/sudo_plugin/sss_sudoplugin.c
+++ b/src/sss_client/sudo_plugin/sss_sudoplugin.c
@@ -689,23 +689,24 @@ int sss_sudo_make_request(struct sss_cli_req_data *rd,
int *errnop)
{
- const char * param ="Hello, World!";
- DBusMessage* dbus_msg;
- DBusMessageIter args;
+ const char * param ="Hello, World!";
+
DBusConnection* conn;
DBusError err;
- DBusPendingCall* pending;
- int ret;
- int status;
- dbus_uint32_t level;
+
+ DBusMessage* dbus_msg;
+ DBusMessage* dbus_reply;
+ DBusMessageIter args;
+
+ dbus_uint32_t status=0;
- printf("Calling remote method wit %s\n", param);
+ fprintf(stdout,"Calling remote method wit %s\n", param);
/* initialise the errors */
dbus_error_init(&err);
/* connect to the system bus and check for errors */
- conn = dbus_connection_open_private("unix:path=/tmp/sssd/sudo", &err);
+ conn = dbus_connection_open_private(SSS_SUDO_SERVER_ADDRESS, &err);
if (dbus_error_is_set(&err)) {
fprintf(stderr, "Connection Error (%s)\n", err.message);
dbus_error_free(&err);
@@ -733,47 +734,45 @@ int sss_sudo_make_request(struct sss_cli_req_data *rd,
}
/* send message and get a handle for a reply */
- if (!dbus_connection_send (conn,dbus_msg, &pending)) {
- fprintf(stderr, "Out Of Memory!\n");
+ dbus_reply = dbus_connection_send_with_reply_and_block (conn,dbus_msg,
+ SSS_SUDO_TIMEOUT,
+ &err);
+ if (dbus_error_is_set(&err)) {
+ fprintf(stderr, "Connection send-reply Error (%s)\n", err.message);
+ dbus_error_free(&err);
exit(1);
}
- if (NULL == pending) {
- fprintf(stderr, "Pending Call Null\n");
+ if (NULL == dbus_reply) {
+ fprintf(stderr, "reply failed\n");
exit(1);
}
- dbus_connection_flush(conn);
- printf("Request Sent\n");
- /* free message */
- dbus_message_unref(dbus_msg);
-
- /* block until we recieve a reply */
- dbus_pending_call_block(pending);
-
- /* get the reply message */
- dbus_msg = dbus_pending_call_steal_reply(pending);
- if (NULL == dbus_msg) {
- fprintf(stderr, "Reply Null\n");
- exit(1);
- }
- /* free the pending message handle */
- dbus_pending_call_unref(pending);
+ fprintf(stdout,"Request Sent\n");
+
/* read the parameters */
- if (!dbus_message_iter_init(dbus_msg, &args))
+ if (!dbus_message_iter_init(dbus_reply, &args)) {
fprintf(stderr, "Message has no arguments!\n");
- else if (DBUS_TYPE_UINT16 != dbus_message_iter_get_arg_type(&args))
+
+ }
+ else if (DBUS_TYPE_UINT16 != dbus_message_iter_get_arg_type(&args)) {
fprintf(stderr, "Argument is not DBUS_TYPE_UINT16!\n");
- else
+
+ }
+ else {
dbus_message_iter_get_basic(&args, &status);
+
+ }
- printf("Got Reply: %d, %d\n", status, level);
+ fprintf(stdout,"Got Reply: %d\n", status);
// free reply and close connection
- dbus_message_unref(dbus_msg);
- //dbus_connection_close(conn);
+ /* free message */
+ dbus_message_unref(dbus_msg);
+ dbus_message_unref(dbus_reply);
+ dbus_connection_close(conn);
@@ -783,11 +782,6 @@ return SSS_STATUS_SUCCESS;
-
-
-
-
-
static int send_and_receive()
{
int ret;