client: Consolidate cancelation replies
PATCH 1/5 client: Consolidate cancelation replies
--- client/agent.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)
client/agent.c +13 -6
@@ -50,6 +50,15 @@ static struct pending_op {struct l_queue *saved_input; } pending_op; +static struct l_dbus_message *agent_reply_canceled ( +struct l_dbus_message *message, +const char *text) +{ +return l_dbus_message_new_error (message, +IWD_AGENT_INTERFACE ".Error.Canceled" , +"Error: %s" , text); +} +static struct l_dbus_message *agent_error (const char *text) {display_error (text);
@@ -342,9 +351,8 @@ static void process_input_username_password(const char *prompt)if (l_queue_isempty (pending_op.saved_input)) {/* received username */ if (!strlen (prompt)) { - reply =l_dbus_message_new_error (pending_message, -IWD_AGENT_INTERFACE ".Error.Canceled" , -"Canceled by user" ); + reply =agent_reply_canceled (pending_message, +"Canceled by user" ); goto send_reply; }
@@ -372,9 +380,8 @@ static void process_input_passphrase(const char *prompt)struct l_dbus_message *reply;if (!strlen (prompt)) { - reply =l_dbus_message_new_error (pending_message, -IWD_AGENT_INTERFACE ".Error.Canceled" , -"Canceled by user" ); + reply =agent_reply_canceled (pending_message, +"Canceled by user" ); goto send_reply; }
Signature · 1 line
2.13.6
PATCH 2/5 client: Modify error handler to return cancelation msg
This allows to send cancelation error back to iwd, instead of returning NULL and waiting for iwd to timeout on agent request.
--- client/agent.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
client/agent.c +8 -6
@@ -59,7 +59,8 @@ static struct l_dbus_message *agent_reply_canceled( "Error: %s", text); } -static struct l_dbus_message *agent_error (const char *text) +static struct l_dbus_message *agent_error (struct l_dbus_message *message, +const char *text) {display_error (text);
@@ -69,7 +70,7 @@ static struct l_dbus_message *agent_error(const char *text)l_main_quit (); } -return NULL ; +return agent_reply_canceled (message, text); } static struct l_dbus_message *release_method_call(struct l_dbus *dbus,
@@ -114,7 +115,7 @@ static struct l_dbus_message *request_passphrase_method_call(return reply;if (command_option_get (COMMAND_OPTION_DONTASK ,NULL )) -return agent_error ("No passphrase is provided as " +return agent_error (message,"No passphrase is provided as " "'--" COMMAND_OPTION_PASSPHRASE "' " "command-line option.\n" );
@@ -152,7 +153,7 @@ static struct l_dbus_message *request_private_key_passphrase_method_call(return reply;if (command_option_get (COMMAND_OPTION_DONTASK ,NULL )) -return agent_error ("No passphrase is provided as " +return agent_error (message,"No passphrase is provided as " "'--" COMMAND_OPTION_PASSPHRASE "' " "command-line option.\n" );
@@ -211,7 +212,8 @@ static struct l_dbus_message *request_username_and_password_method_call(return reply;if (command_option_get (COMMAND_OPTION_DONTASK ,NULL )) -return agent_error ("No username or password is provided as " +return agent_error (message,"No username or password is " +"provided as " "'--" COMMAND_OPTION_USERNAME "' or " "'--" COMMAND_OPTION_PASSWORD "' " "command-line option.\n" );
@@ -268,7 +270,7 @@ static struct l_dbus_message *request_user_password_method_call(return reply;if (command_option_get (COMMAND_OPTION_DONTASK ,NULL )) -return agent_error ("No password is provided as " +return agent_error (message,"No password is provided as " "'--" COMMAND_OPTION_PASSWORD "' " "command-line option.\n" );
Signature · 1 line
2.13.6
PATCH 3/5 client: Respond to invalid agent requests
In reply to Tim KourtThis allows to send an error back to iwd, instead of returning NULL and waiting for iwd to timeout on agent request.
--- client/agent.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-)
client/agent.c +16 -8
@@ -59,6 +59,14 @@ static struct l_dbus_message *agent_reply_canceled( "Error: %s", text); } +static struct l_dbus_message *agent_reply_failed (struct l_dbus_message *message, +const char *text) +{ +return l_dbus_message_new_error (message, +IWD_AGENT_INTERFACE ".Error.Failed" , +"Error: %s" , text); +} +static struct l_dbus_message *agent_error (struct l_dbus_message *message,const char *text) {
@@ -121,11 +129,11 @@ static struct l_dbus_message *request_passphrase_method_call(l_dbus_message_get_arguments (message,"o" , &path);if (!path) -return NULL ; +return agent_reply_failed (message,"Invalid argument" ); proxy =proxy_interface_find (IWD_NETWORK_INTERFACE , path);if (!proxy) -return NULL ; +return agent_reply_failed (message,"Invalid network object" );display ("Type the network passphrase for %s.\n" ,proxy_interface_get_identity_str (proxy));
@@ -159,11 +167,11 @@ static struct l_dbus_message *request_private_key_passphrase_method_call(l_dbus_message_get_arguments (message,"o" , &path);if (!path) -return NULL ; +return agent_reply_failed (message,"Invalid argument" ); proxy =proxy_interface_find (IWD_NETWORK_INTERFACE , path);if (!proxy) -return NULL ; +return agent_reply_failed (message,"Invalid network object" );display ("Type the passphrase for the network encrypted private key for " "%s.\n" ,proxy_interface_get_identity_str (proxy));
@@ -220,11 +228,11 @@ static struct l_dbus_message *request_username_and_password_method_call(l_dbus_message_get_arguments (message,"o" , &path);if (!path) -return NULL ; +return agent_reply_failed (message,"Invalid argument" ); proxy =proxy_interface_find (IWD_NETWORK_INTERFACE , path);if (!proxy) -return NULL ; +return agent_reply_failed (message,"Invalid network object" );display ("Type the network credentials for %s.\n" ,proxy_interface_get_identity_str (proxy));
@@ -276,11 +284,11 @@ static struct l_dbus_message *request_user_password_method_call(l_dbus_message_get_arguments (message,"os" , &path, &username);if (!path || !username) -return NULL ; +return agent_reply_failed (message,"Invalid argument" ); proxy =proxy_interface_find (IWD_NETWORK_INTERFACE , path);if (!proxy) -return NULL ; +return agent_reply_failed (message,"Invalid network object" );display ("Type the network password for %s.\n" ,proxy_interface_get_identity_str (proxy));
Signature · 1 line
2.13.6
PATCH 4/5 client: Fail on requests with invalid arguments
In reply to Tim Kourt--- client/agent.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
client/agent.c +12 -4
@@ -127,7 +127,9 @@ static struct l_dbus_message *request_passphrase_method_call("'--" COMMAND_OPTION_PASSPHRASE "' " "command-line option.\n"); -l_dbus_message_get_arguments (message,"o" , &path); +if (!l_dbus_message_get_arguments (message,"o" , &path)) +return agent_reply_failed (message,"Invalid argument" ); +if (!path)return agent_reply_failed (message,"Invalid argument" );
@@ -165,7 +167,9 @@ static struct l_dbus_message *request_private_key_passphrase_method_call("'--" COMMAND_OPTION_PASSPHRASE "' " "command-line option.\n"); -l_dbus_message_get_arguments (message,"o" , &path); +if (!l_dbus_message_get_arguments (message,"o" , &path)) +return agent_reply_failed (message,"Invalid argument" ); +if (!path)return agent_reply_failed (message,"Invalid argument" );
@@ -226,7 +230,9 @@ static struct l_dbus_message *request_username_and_password_method_call("'--" COMMAND_OPTION_PASSWORD "' " "command-line option.\n"); -l_dbus_message_get_arguments (message,"o" , &path); +if (!l_dbus_message_get_arguments (message,"o" , &path)) +return agent_reply_failed (message,"Invalid argument" ); +if (!path)return agent_reply_failed (message,"Invalid argument" );
@@ -282,7 +288,9 @@ static struct l_dbus_message *request_user_password_method_call("'--" COMMAND_OPTION_PASSWORD "' " "command-line option.\n"); -l_dbus_message_get_arguments (message,"os" , &path, &username); +if (!l_dbus_message_get_arguments (message,"os" , &path, &username)) +return agent_reply_failed (message,"Invalid arguments" ); +if (!path || !username)return agent_reply_failed (message,"Invalid argument" );
Signature · 1 line
2.13.6
PATCH 5/5 doc: Update agent API with possible errors
In reply to Tim Kourt--- doc/agent-api.txt | 4 ++++ 1 file changed, 4 insertions(+)
doc/agent-api.txt +4 -0
@@ -43,6 +43,7 @@ Methods void Release() a network and passphrase is required. Possible Errors: net.connman.iwd.Agent.Error.Canceled + net.connman.iwd.Agent.Error.Failed string RequestPrivateKeyPassphrase(object network)
@@ -52,6 +53,7 @@ Methods void Release() obtain that private key's encryption passphrase. Possible Errors: net.connman.iwd.Agent.Error.Canceled + net.connman.iwd.Agent.Error.Failed (string, string) RequestUserNameAndPassword(object network)
@@ -60,6 +62,7 @@ Methods void Release() user name and password. Possible Errors: net.connman.iwd.Agent.Error.Canceled + net.connman.iwd.Agent.Error.Failed string RequestUserPassword(object network, string user)
@@ -69,6 +72,7 @@ Methods void Release() in the parameter. Possible Errors: net.connman.iwd.Agent.Error.Canceled + net.connman.iwd.Agent.Error.Failed void Cancel(string reason)
Signature · 1 line
2.13.6
Hi Tim,
Quoted 4 lines · Tim Kourt
--- client/agent.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)
Patches 1-4 applied, thanks
Regards,
-Denis