[2620] in BarnOwl Developers
[PATCH] Don't ignore the error code when doing a zwrite
daemon@ATHENA.MIT.EDU (David Benjamin)
Mon Sep 13 21:03:29 2010
From: David Benjamin <davidben@MIT.EDU>
To: barnowl-dev@mit.edu
Date: Mon, 13 Sep 2010 18:02:37 -0700
Display a com_err-supplied error message. It's about time we fix the
false "Waiting for ack..." messages.
---
functions.c | 7 ++++++-
zwrite.c | 12 ++++++++----
2 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/functions.c b/functions.c
index 0da494f..8d9d01f 100644
--- a/functions.c
+++ b/functions.c
@@ -344,6 +344,7 @@ void owl_callback_zwrite(owl_editwin *e) {
void owl_function_zwrite(owl_zwrite *z, const char *msg)
{
owl_message *m;
+ int ret;
if(strcmp(z->cmd, "zcrypt") == 0) {
owl_function_zcrypt(z, msg);
@@ -355,7 +356,11 @@ void owl_function_zwrite(owl_zwrite *z, const char *msg)
if (msg) {
owl_zwrite_set_message(z, msg);
}
- owl_zwrite_send_message(z);
+ ret = owl_zwrite_send_message(z);
+ if (ret != 0) {
+ owl_function_makemsg("Error sending zephyr: %s", error_message(ret));
+ return;
+ }
owl_function_makemsg("Waiting for ack...");
/* If it's personal */
diff --git a/zwrite.c b/zwrite.c
index a67864a..3d5fa45 100644
--- a/zwrite.c
+++ b/zwrite.c
@@ -253,7 +253,7 @@ int owl_zwrite_is_message_set(const owl_zwrite *z)
int owl_zwrite_send_message(const owl_zwrite *z)
{
- int i, j;
+ int i, j, ret = 0;
char *to = NULL;
if (z->message==NULL) return(-1);
@@ -261,21 +261,25 @@ int owl_zwrite_send_message(const owl_zwrite *z)
j=owl_list_get_size(&(z->recips));
if (j>0) {
for (i=0; i<j; i++) {
+ int ret2;
if (strcmp(z->realm, "")) {
to = owl_sprintf("%s@%s", (const char *) owl_list_get_element(&(z->recips), i), z->realm);
} else {
to = owl_strdup( owl_list_get_element(&(z->recips), i));
}
- send_zephyr(z->opcode, z->zsig, z->class, z->inst, to, z->message);
+ ret2 = send_zephyr(z->opcode, z->zsig, z->class, z->inst, to, z->message);
+ /* Try to send all of them, and return the first error code. */
+ if (ret == 0)
+ ret = ret2;
owl_free(to);
to = NULL;
}
} else {
to = owl_sprintf( "@%s", z->realm);
- send_zephyr(z->opcode, z->zsig, z->class, z->inst, to, z->message);
+ ret = send_zephyr(z->opcode, z->zsig, z->class, z->inst, to, z->message);
}
owl_free(to);
- return(0);
+ return ret;
}
int owl_zwrite_create_and_send_from_line(const char *cmd, const char *msg)
--
1.7.2.1.45.gb1c4