]> code.citadel.org Git - citadel.git/blobdiff - citadel/modules/extnotify/funambol65.c
* this include is needed on *bsd
[citadel.git] / citadel / modules / extnotify / funambol65.c
index 1ea5117ffe56ad0a822a39a0f8e7c73c7e284678..cebed9a05d2fda83a06d8c11ad2e893b9163bfea 100644 (file)
 #include <sys/socket.h>
 #include <time.h>
 #include <libcitadel.h>
+#include <errno.h>
+#include <unistd.h>
 
+#include "citadel.h"
 #include "citadel_dirs.h"
 #include "clientsocket.h"
 #include "sysdep.h"
-#include "sysconfig.h"
 #include "config.h"
 #include "sysdep_decls.h"
+#include "msgbase.h"
+#include "ctdl_module.h"
 
 /*
 * \brief Sends a message to the Funambol server notifying 
 int notify_funambol_server(char *user) {
        char port[1024];
        int sock = -1;
-       char *buf;
-       char *SOAPMessage;
-       char *SOAPHeader;
-       char *funambolCreds;
-       FILE *template;
-       FILE *fnblConf;
+       char *buf = NULL;
+       char *SOAPMessage = NULL;
+       char *SOAPHeader = NULL;
+       char *funambolCreds = NULL;
+       FILE *template = NULL;
        
        sprintf(port, "%d", config.c_funambol_port);
        sock = sock_connect(config.c_funambol_host, port, "tcp");
        if (sock >= 0) 
-               lprintf(CTDL_DEBUG, "Connected to Funambol!\n");
-       else 
+               CtdlLogPrintf(CTDL_DEBUG, "Connected to Funambol!\n");
+       else {
+               char buf[SIZ];
+
+               snprintf(buf, SIZ, 
+                        "Unable to connect to %s:%d [%s]; won't send notification\r\n", 
+                        config.c_funambol_host, 
+                        config.c_funambol_port, 
+                        strerror(errno));
+               CtdlLogPrintf(CTDL_ERR, buf);
+
+               aide_message(buf, "External notifier unable to connect remote host!");
                goto bail;
+       }
        // Load the template SOAP message. Get mallocs done too
        template = fopen(file_funambol_msg, "r");
+
+       if (template == NULL) {
+               char buf[SIZ];
+
+               snprintf(buf, SIZ, 
+                        "Cannot load template file %s [%s]won't send notification\r\n", 
+                        file_funambol_msg, strerror(errno));
+               CtdlLogPrintf(CTDL_ERR, buf);
+
+               aide_message(buf, "External notifier unable to find message template!");
+               goto free;
+       }
+
+
        buf = malloc(SIZ);
        memset(buf, 0, SIZ);
        SOAPMessage = malloc(3072);
@@ -64,7 +92,14 @@ int notify_funambol_server(char *user) {
        fclose(template);
        
        if (strlen(SOAPMessage) < 0) {
-               printf("Cannot load template file\r\n");
+               char buf[SIZ];
+
+               snprintf(buf, SIZ, 
+                        "Cannot load template file %s; won't send notification\r\n", 
+                        file_funambol_msg);
+               CtdlLogPrintf(CTDL_ERR, buf);
+
+               aide_message(buf, "External notifier unable to load message template!");
                goto free;
        }
        // Do substitutions
@@ -98,21 +133,21 @@ int notify_funambol_server(char *user) {
                funambolCreds);
        strcat(SOAPHeader, buf);
        
-       int written_header = sock_write(sock, SOAPHeader, strlen(SOAPHeader));
-       int written_body = sock_write(sock, SOAPMessage, strlen(SOAPMessage));
+       sock_write(sock, SOAPHeader, strlen(SOAPHeader));
+       sock_write(sock, SOAPMessage, strlen(SOAPMessage));
        sock_shutdown(sock, SHUT_WR);
        
        /* Response */
-       lprintf(CTDL_DEBUG, "Awaiting response\n");
+       CtdlLogPrintf(CTDL_DEBUG, "Awaiting response\n");
         if (sock_getln(sock, buf, SIZ) < 0) {
                 goto free;
         }
-        lprintf(CTDL_DEBUG, "<%s\n", buf);
+        CtdlLogPrintf(CTDL_DEBUG, "<%s\n", buf);
        if (strncasecmp(buf, "HTTP/1.1 200 OK", strlen("HTTP/1.1 200 OK"))) {
                
                goto free;
        }
-       lprintf(CTDL_DEBUG, "Funambol notified\n");
+       CtdlLogPrintf(CTDL_DEBUG, "Funambol notified\n");
 free:
        if (funambolCreds != NULL) free(funambolCreds);
        if (SOAPMessage != NULL) free(SOAPMessage);