[2620] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[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


home help back first fref pref prev next nref lref last post