#include <errno.h>
#include <syslog.h>
#include <fcntl.h>
+#include <libgen.h>
#include "glite/lb/lb_maildir.h"
-#include "glite/security/glite_gsplugin.h"
#include "jpps_H.h"
#include "jpps_.nsmap"
#include "jptype_map.h"
+#include "glite/security/glite_gsplugin.h"
+#include "glite/security/glite_gscompat.h"
#include "globus_ftp_client.h"
-#include "soap_version.h"
#if GSOAP_VERSION <= 20602
#define soap_call___jpsrv__RegisterJob soap_call___ns1__RegisterJob
#endif
#ifndef dprintf
-#define dprintf(x) { if (debug) printf x; }
+#define dprintf(FMT, ARGS...) { if (debug) printf(FMT, ##ARGS); }
#endif
+#define check_soap_fault(SOAP, ERR) glite_jp_clientCheckFault((SOAP), (ERR), name, 1)
+
#ifndef GLITE_JPIMPORTER_PIDFILE
#define GLITE_JPIMPORTER_PIDFILE "/var/run/glite-jpimporter.pid"
#endif
#define GLITE_DUMP_IMPORTER_MDIR "/tmp/jpdump"
#endif
+#ifndef GLITE_SANDBOX_IMPORTER_MDIR
+#define GLITE_SANDBOX_IMPORTER_MDIR "/tmp/jpsandbox"
+#endif
+
#ifndef GLITE_JPPS
#define GLITE_JPPS "http://localhost:8901"
#endif
#define MAX_REG_CONNS 500
-
-static int debug = 0;
-static int die = 0;
-static int child_died = 0;
-static int poll = 2;
-static char *name;
-static char *jpps = GLITE_JPPS;
-static char reg_mdir[PATH_MAX] = GLITE_REG_IMPORTER_MDIR;
-static char dump_mdir[PATH_MAX] = GLITE_DUMP_IMPORTER_MDIR;
-static struct soap *soap;
-
-static time_t cert_mtime;
-static char *server_cert = NULL,
- *server_key = NULL,
- *cadir;
+#define JPPS_NO_RESPONSE_TIMEOUT 120
+
+
+static int debug = 0;
+static int die = 0;
+static int child_died = 0;
+static int poll = 2;
+static char *name;
+static char *jpps = GLITE_JPPS;
+static char reg_mdir[PATH_MAX] = GLITE_REG_IMPORTER_MDIR;
+static char dump_mdir[PATH_MAX] = GLITE_DUMP_IMPORTER_MDIR;
+static char sandbox_mdir[PATH_MAX] = GLITE_SANDBOX_IMPORTER_MDIR;
+static char *store = NULL;
+static struct soap *soap;
+
+static time_t cert_mtime;
+static char *server_cert = NULL,
+ *server_key = NULL,
+ *cadir = NULL;
static gss_cred_id_t mycred = GSS_C_NO_CREDENTIAL;
-static char *mysubj;
+static char *mysubj;
+struct timeval to = {JPPS_NO_RESPONSE_TIMEOUT, 0};
static struct option opts[] = {
{ "jpps", 1, NULL, 'p'},
{ "reg-mdir", 1, NULL, 'r'},
{ "dump-mdir", 1, NULL, 'd'},
+ { "sandbox-mdir",1, NULL, 's'},
{ "pidfile", 1, NULL, 'i'},
{ "poll", 1, NULL, 't'},
+ { "store", 1, NULL, 'S'},
{ NULL, 0, NULL, 0}
};
-static const char *get_opt_string = "hgp:r:d:i:t:c:k:C:";
+static const char *get_opt_string = "hgp:r:d:s:i:t:c:k:C:";
+
+#include "glite/jp/ws_fault.c"
static void usage(char *me)
{
"\t-p, --jpps JP primary service server\n"
"\t-r, --reg-mdir path to the 'LB maildir' subtree for registrations\n"
"\t-d, --dump-mdir path to the 'LB maildir' subtree for LB dumps\n"
+ "\t-s, --sandbox-mdir path to the 'LB maildir' subtree for input/output sandboxes\n"
"\t-i, --pidfile file to store master pid\n"
"\t-t, --poll maildir polling interval (in seconds)\n",
+ "\t-S, --store keep uploaded jobs in this directory\n",
me);
}
static int slave(int (*)(void), const char *);
-static int check_soap_fault(struct soap *, int);
static int reg_importer(void);
static int dump_importer(void);
+static int sandbox_importer(void);
static int parse_msg(char *, msg_pattern_t []);
static int gftp_put_file(const char *, int);
{
edg_wll_GssStatus gss_code;
struct sigaction sa;
- sigset_t sset;
- FILE *fpid;
- pid_t reg_pid, dump_pid;
- int opt;
- char *name,
- pidfile[PATH_MAX] = GLITE_JPIMPORTER_PIDFILE;
-
+ sigset_t sset;
+ FILE *fpid;
+ pid_t reg_pid, dump_pid, sandbox_pid;
+ int opt;
+ char *name,
+ pidfile[PATH_MAX] = GLITE_JPIMPORTER_PIDFILE;
glite_gsplugin_Context plugin_ctx;
case 'C': cadir = optarg; break;
case 'p': jpps = optarg; break;
case 't': poll = atoi(optarg); break;
+ case 'S': store = optarg; break;
case 'r': strcpy(reg_mdir, optarg); break;
case 'd': strcpy(dump_mdir, optarg); break;
+ case 's': strcpy(sandbox_mdir, optarg); break;
case 'i': strcpy(pidfile, optarg); break;
case '?': usage(name); return 1;
}
edg_wll_MaildirInit(reg_mdir);
edg_wll_MaildirInit(dump_mdir);
+ edg_wll_MaildirInit(sandbox_mdir);
+ if (store && *store) {
+ if (mkdir(store, 0750) != 0 && errno != EEXIST) {
+ fprintf(stderr, "Can't create directory %s: %s\n", store, strerror(errno));
+ store = NULL;
+ }
+ }
if ( !debug ) {
if ( daemon(1,0) == -1 ) { perror("deamon()"); exit(1); }
openlog(name, LOG_PID, LOG_DAEMON);
} else { setpgid(0, getpid()); }
- dprintf(("Master pid %d\n", getpid()));
+ dprintf("Master pid %d\n", getpid());
if ( globus_module_activate(GLOBUS_FTP_CLIENT_MODULE) != GLOBUS_SUCCESS ) {
- dprintf(("[master] Could not activate ftp client module\n"));
+ dprintf("[master] Could not activate ftp client module\n");
if (!debug) syslog(LOG_INFO, "Could not activate ftp client module\n");
exit(1);
- } else dprintf(("[master] Ftp client module activated\n"));
+ } else dprintf("[master] Ftp client module activated\n");
if ( !server_cert || !server_key )
fprintf(stderr, "%s: key or certificate file not specified"
if ( cadir ) setenv("X509_CERT_DIR", cadir, 1);
edg_wll_gss_watch_creds(server_cert, &cert_mtime);
if ( !edg_wll_gss_acquire_cred_gsi(server_cert, server_key, &mycred, &mysubj, &gss_code) ) {
- dprintf(("[master] Server identity: %s\n", mysubj));
+ dprintf("[master] Server identity: %s\n", mysubj);
} else {
char *errmsg;
edg_wll_gss_get_error(&gss_code, "edg_wll_gss_acquire_cred_gsi()", &errmsg);
- dprintf(("[master] %s\n", errmsg));
+ dprintf("[master] %s\n", errmsg);
free(errmsg);
- dprintf(("[master] Running unauthenticated\n"));
+ dprintf("[master] Running unauthenticated\n");
}
memset(&sa, 0, sizeof(sa)); assert(sa.sa_handler == NULL);
glite_gsplugin_init_context(&plugin_ctx);
if (server_key) plugin_ctx->key_filename = strdup(server_key);
if (server_cert) plugin_ctx->cert_filename = strdup(server_cert);
+ glite_gsplugin_set_timeout(plugin_ctx, &to);
soap_register_plugin_arg(soap, glite_gsplugin,plugin_ctx);
perror("starting dump importer slave");
exit(1);
}
+ if ( (sandbox_pid = slave(sandbox_importer, "sandbox-imp")) < 0 ) {
+ perror("starting sandbox importer slave");
+ exit(1);
+ }
while ( !die ) {
while ( (pid = waitpid(-1, NULL, WNOHANG)) > 0 ) {
if ( !die ) {
if ( pid == reg_pid ) {
- dprintf(("[master] reg importer slave died [%d]\n", pid));
+ dprintf("[master] reg importer slave died [%d]\n", pid);
if (!debug) syslog(LOG_INFO, "reg importer slave died [%d]\n", die);
if ( (reg_pid = slave(reg_importer, "reg-imp")) < 0 ) {
perror("starting reg importer slave");
kill(0, SIGINT);
exit(1);
}
- dprintf(("[master] reg importer slave restarted [%d]\n", reg_pid));
+ dprintf("[master] reg importer slave restarted [%d]\n", reg_pid);
} else if ( pid == dump_pid ) {
- dprintf(("[master] dump importer slave died [%d]\n", pid));
+ dprintf("[master] dump importer slave died [%d]\n", pid);
if (!debug) syslog(LOG_INFO, "dump importer slave died [%d]\n", die);
if ( (dump_pid = slave(dump_importer, "dump-imp")) < 0 ) {
perror("starting dump importer slave");
kill(0, SIGINT);
exit(1);
}
- dprintf(("[master] dump importer slave restarted [%d]\n", dump_pid));
+ dprintf("[master] dump importer slave restarted [%d]\n", dump_pid);
+ } else if ( pid == sandbox_pid ) {
+ dprintf("[master] sandbox importer slave died [%d]\n", pid);
+ if (!debug) syslog(LOG_INFO, "sandbox importer slave died [%d]\n", die);
+ if ( (sandbox_pid = slave(sandbox_importer, "sandbox-imp")) < 0 ) {
+ perror("starting sandbox importer slave");
+ kill(0, SIGINT);
+ exit(1);
+ }
+ dprintf("[master] sandbox importer slave restarted [%d]\n", sandbox_pid);
}
+
}
}
child_died = 0;
}
}
- dprintf(("[master] Terminating on signal %d\n", die));
+ dprintf("[master] Terminating on signal %d\n", die);
if (!debug) syslog(LOG_INFO, "Terminating on signal %d\n", die);
kill(0, die);
static int slave(int (*fn)(void), const char *nm)
{
struct sigaction sa;
- sigset_t sset;
- int pid,
- conn_cnt = 0;
+ sigset_t sset;
+ int pid,
+ conn_cnt = 0;
if ( (pid = fork()) ) return pid;
sigaddset(&sset, SIGUSR1);
sigprocmask(SIG_BLOCK, &sset, NULL);
- dprintf(("[%s] slave started - pid [%d]\n", name, getpid()));
+ dprintf("[%s] slave started - pid [%d]\n", name, getpid());
while ( !die && conn_cnt < MAX_REG_CONNS ) {
int ret = fn();
}
if ( die ) {
- dprintf(("[%s] Terminating on signal %d\n", name, getpid(), die));
+ dprintf("[%s] Terminating on signal %d\n", name, getpid(), die);
if ( !debug ) syslog(LOG_INFO, "Terminating on signal %d", die);
}
- dprintf(("[%s] Terminating after %d connections\n", name, conn_cnt));
+ dprintf("[%s] Terminating after %d connections\n", name, conn_cnt);
if ( !debug ) syslog(LOG_INFO, "Terminating after %d connections", conn_cnt);
exit(0);
struct _jpelem__RegisterJob in;
struct _jpelem__RegisterJobResponse empty;
int ret;
+ static int readnew = 1;
char *msg = NULL,
*fname = NULL,
*aux;
+ if ( readnew ) ret = edg_wll_MaildirTransStart(reg_mdir, &msg, &fname);
+ else ret = edg_wll_MaildirRetryTransStart(reg_mdir, (time_t)30, (time_t)500, &msg, &fname);
+ if ( !ret ) {
+ readnew = !readnew;
+ if ( readnew ) ret = edg_wll_MaildirTransStart(reg_mdir, &msg, &fname);
+ else ret = edg_wll_MaildirRetryTransStart(reg_mdir, (time_t)30, (time_t)500, &msg, &fname);
+ if ( !ret ) {
+ readnew = !readnew;
+ return 0;
+ }
+ }
+
+ if ( ret < 0 ) {
+ dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc);
+ if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc);
+ return -1;
+ }
- ret = edg_wll_MaildirTransStart(reg_mdir, &msg, &fname);
if ( ret < 0 ) {
- dprintf(("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc));
+ dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc);
if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc);
return -1;
} else if ( ret > 0 ) {
- dprintf(("[%s] JP registration request received\n", name));
+ dprintf("[%s] JP registration request received\n", name);
if ( !debug ) syslog(LOG_INFO, "JP registration request received\n");
ret = 0;
if ( !(aux = strchr(msg, '\n')) ) {
- dprintf(("[%s] Wrong format of message!\n", name));
+ dprintf("[%s] Wrong format of message!\n", name);
if ( !debug ) syslog(LOG_ERR, "Wrong format of message\n");
ret = 0;
} else do {
*aux++ = '\0';
in.job = msg;
in.owner = aux;
- dprintf(("[%s] Registering '%s'\n", name, msg));
+ dprintf("[%s] Registering '%s'\n", name, msg);
if ( !debug ) syslog(LOG_INFO, "Registering '%s'\n", msg);
ret = soap_call___jpsrv__RegisterJob(soap, jpps, "", &in, &empty);
if ( (ret = check_soap_fault(soap, ret)) ) break;
} while (0);
- edg_wll_MaildirTransEnd(reg_mdir, fname, ret? LBMD_TRANS_FAILED: LBMD_TRANS_OK);
+ edg_wll_MaildirTransEnd(reg_mdir, fname, ret? LBMD_TRANS_FAILED_RETRY: LBMD_TRANS_OK);
free(fname);
free(msg);
return 1;
static int readnew = 1;
char *msg = NULL,
*fname = NULL,
- *aux;
+ *aux,
+ *bname;
+ char fspec[PATH_MAX];
int ret;
int fhnd;
msg_pattern_t tab[] = {
if ( readnew ) ret = edg_wll_MaildirTransStart(dump_mdir, &msg, &fname);
- else ret = edg_wll_MaildirRetryTransStart(dump_mdir, (time_t)60, &msg, &fname);
+ else ret = edg_wll_MaildirRetryTransStart(dump_mdir, (time_t)60, (time_t)600, &msg, &fname);
if ( !ret ) {
- readnew = ~readnew;
+ readnew = !readnew;
if ( readnew ) ret = edg_wll_MaildirTransStart(dump_mdir, &msg, &fname);
- else ret = edg_wll_MaildirRetryTransStart(dump_mdir, (time_t)60, &msg, &fname);
+ else ret = edg_wll_MaildirRetryTransStart(dump_mdir, (time_t)60, (time_t)600, &msg, &fname);
if ( !ret ) {
- readnew = ~readnew;
+ readnew = !readnew;
return 0;
}
}
if ( ret < 0 ) {
- dprintf(("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc));
+ dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc);
if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc);
return -1;
}
- dprintf(("[%s] dump JP import request received\n", name));
+ dprintf("[%s] dump JP import request received\n", name);
if ( !debug ) syslog(LOG_INFO, "dump JP import request received");
ret = 0;
if ( parse_msg(msg, tab) < 0 ) {
- dprintf(("[%s] Wrong format of message!\n", name));
+ dprintf("[%s] Wrong format of message!\n", name);
if ( !debug ) syslog(LOG_ERR, "Wrong format of message");
ret = 0;
} else do {
su_in.name = NULL;
su_in.commitBefore = 1000 + time(NULL);
su_in.contentType = "text/lb";
- dprintf(("[%s] Importing LB dump file '%s'\n", name, tab[_file].val));
+ dprintf("[%s] Importing LB dump file '%s'\n", name, tab[_file].val);
if ( !debug ) syslog(LOG_INFO, "Importing LB dump file '%s'\n", msg);
ret = soap_call___jpsrv__StartUpload(soap, tab[_jpps].val?:jpps, "", &su_in, &su_out);
- ret = check_soap_fault(soap, ret);
- /* XXX: grrrrrrr! test it!!!*/
-// if ( (ret = check_soap_fault(soap, ret)) ) break;
- dprintf(("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore)));
+ if ( (ret = check_soap_fault(soap, ret)) ) break;
+ dprintf("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore));
+ if (su_out.destination == NULL) {
+ dprintf("[%s] StartUpload returned NULL destination\n", name);
+ if ( !debug ) syslog(LOG_ERR, "StartUpload returned NULL destination");
+ break;
+ }
if ( (fhnd = open(tab[_file].val, O_RDONLY)) < 0 ) {
- dprintf(("[%s] Can't open dump file: %s\n", name, tab[_file].val));
+ dprintf("[%s] Can't open dump file: %s\n", name, tab[_file].val);
if ( !debug ) syslog(LOG_ERR, "Can't open dump file: %s", tab[_file].val);
ret = 1;
break;
}
if ( (ret = gftp_put_file(su_out.destination, fhnd)) ) break;
close(fhnd);
- dprintf(("[%s] File sent, commiting the upload\n", name));
+ dprintf("[%s] File sent, commiting the upload\n", name);
cu_in.destination = su_out.destination;
ret = soap_call___jpsrv__CommitUpload(soap, tab[_jpps].val?:jpps, "", &cu_in, &empty);
if ( (ret = check_soap_fault(soap, ret)) ) break;
- dprintf(("[%s] Dump upload succesfull\n", name));
+ dprintf("[%s] Dump upload succesfull\n", name);
+ if (store && *store) {
+ bname = strdup(tab[_file].val);
+ snprintf(fspec, sizeof fspec, "%s/%s", store, basename(bname));
+ free(bname);
+ if (rename(tab[_file].val, fspec) != 0)
+ fprintf(stderr, "moving %s to %s failed: %s\n", tab[_file].val, fspec, strerror(errno));
+ else
+ dprintf("[%s] moving %s to %s OK\n", name, tab[_file].val, fspec);
+ } else {
+ if (unlink(tab[_file].val) != 0)
+ fprintf(stderr, "removing %s failed: %s\n", tab[_file].val, strerror(errno));
+ else
+ dprintf("[%s] %s removed\n", name, tab[_file].val);
+ }
} while (0);
edg_wll_MaildirTransEnd(dump_mdir, fname, ret? LBMD_TRANS_FAILED_RETRY: LBMD_TRANS_OK);
}
-static int check_soap_fault(struct soap *soap, int err)
+
+static int sandbox_importer(void)
{
- struct SOAP_ENV__Detail *detail;
- struct jptype__genericFault *f;
- char *reason,
- indent[200] = " ";
-
+ struct _jpelem__StartUpload su_in;
+ struct _jpelem__StartUploadResponse su_out;
+ struct _jpelem__CommitUpload cu_in;
+ struct _jpelem__CommitUploadResponse empty;
+ static int readnew = 1;
+ char *msg = NULL,
+ *fname = NULL,
+ *aux;
+ int ret;
+ int fhnd;
+ msg_pattern_t tab[] = {
+ {"jobid", NULL},
+ {"file", NULL},
+ {"jpps", NULL},
+ {"proxy", NULL},
+ {NULL, NULL}};
- switch ( err ) {
- case SOAP_OK:
- dprintf(("[%s] ok\n", name));
- break;
+#define _job 0
+#define _file 1
+#define _jpps 2
+#define _proxy 3
- case SOAP_FAULT:
- case SOAP_SVR_FAULT:
- if (soap->version == 2) {
- detail = soap->fault->SOAP_ENV__Detail;
- reason = soap->fault->SOAP_ENV__Reason;
- } else {
- detail = soap->fault->detail;
- reason = soap->fault->faultstring;
- }
- dprintf(("[%s] %s\n", name, reason));
- if ( !debug ) syslog(LOG_ERR, "%s", reason);
- assert(detail->__type == SOAP_TYPE__genericFault);
-#if GSOAP_VERSION >=20700
- f = ((struct _genericFault *) detail->fault) -> jpelem__genericFault;
-#else
- f = ((struct _genericFault *) detail->value) -> jpelem__genericFault;
-#endif
- while (f) {
- dprintf(("[%s] %s%s: %s (%s)\n",
- name, indent,
- f->source, f->text, f->description));
- if ( !debug ) syslog(LOG_ERR, "%s%s: %s (%s)",
- reason, f->source, f->text, f->description);
- f = f->reason;
- strcat(indent, " ");
+
+ if ( readnew ) ret = edg_wll_MaildirTransStart(sandbox_mdir, &msg, &fname);
+ else ret = edg_wll_MaildirRetryTransStart(sandbox_mdir, (time_t)60, (time_t) 600,&msg, &fname);
+ if ( !ret ) {
+ readnew = !readnew;
+ if ( readnew ) ret = edg_wll_MaildirTransStart(sandbox_mdir, &msg, &fname);
+ else ret = edg_wll_MaildirRetryTransStart(sandbox_mdir, (time_t)60, (time_t) 600,&msg, &fname);
+ if ( !ret ) {
+ readnew = !readnew;
+ return 0;
}
- return -1;
+ }
- default: soap_print_fault(soap,stderr);
+ if ( ret < 0 ) {
+ dprintf("[%s] edg_wll_MaildirTransStart: %s (%s)\n", name, strerror(errno), lbm_errdesc);
+ if ( !debug ) syslog(LOG_ERR, "edg_wll_MaildirTransStart: %s (%s)", strerror(errno), lbm_errdesc);
return -1;
}
- return 0;
+ dprintf("[%s] sandbox JP import request received\n", name);
+ if ( !debug ) syslog(LOG_INFO, "sandbox JP import request received");
+
+ ret = 0;
+ if ( parse_msg(msg, tab) < 0 ) {
+ dprintf("[%s] Wrong format of message!\n", name);
+ if ( !debug ) syslog(LOG_ERR, "Wrong format of message");
+ ret = 0;
+ } else do {
+ su_in.job = tab[_job].val;
+ // XXX: defined in org.glite.jp.primary/src/builtin_plugins.h
+ // shloud use symbolic const...
+ // do not distinquish between ibs and obs now
+ su_in.class_ = "urn:org.glite.jp.primary:isb";
+ su_in.name = NULL;
+ su_in.commitBefore = 1000 + time(NULL);
+ su_in.contentType = "tar/lb";
+ dprintf("[%s] Importing LB sandbox tar file '%s'\n", name, tab[_file].val);
+ if ( !debug ) syslog(LOG_INFO, "Importing LB sandbox tar file '%s'\n", msg);
+ ret = soap_call___jpsrv__StartUpload(soap, tab[_jpps].val?:jpps, "", &su_in, &su_out);
+ ret = check_soap_fault(soap, ret);
+ /* XXX: grrrrrrr! test it!!!*/
+// if ( (ret = check_soap_fault(soap, ret)) ) break;
+ dprintf("[%s] Destination: %s\n\tCommit before: %s\n", name, su_out.destination, ctime(&su_out.commitBefore));
+
+ if ( (fhnd = open(tab[_file].val, O_RDONLY)) < 0 ) {
+ dprintf("[%s] Can't open sandbox tar file: %s\n", name, tab[_file].val);
+ if ( !debug ) syslog(LOG_ERR, "Can't open sandbox tar file: %s", tab[_file].val);
+ ret = 1;
+ break;
+ }
+ if ( (ret = gftp_put_file(su_out.destination, fhnd)) ) break;
+ close(fhnd);
+ dprintf("[%s] File sent, commiting the upload\n", name);
+ cu_in.destination = su_out.destination;
+ ret = soap_call___jpsrv__CommitUpload(soap, tab[_jpps].val?:jpps, "", &cu_in, &empty);
+ if ( (ret = check_soap_fault(soap, ret)) ) break;
+ dprintf("[%s] Dump upload succesfull\n", name);
+ } while (0);
+
+ edg_wll_MaildirTransEnd(sandbox_mdir, fname, ret? LBMD_TRANS_FAILED_RETRY: LBMD_TRANS_OK);
+ free(fname);
+ free(msg);
+
+ return 1;
}
+
/** Parses every line looking for pattern string and stores the value into
* the given variable
*
{
if ( err != GLOBUS_SUCCESS ) {
char *tmp = globus_object_printable_to_string(err);
- dprintf(("[%s] Error in callback: %s\n", name, tmp));
+ dprintf("[%s] Error in callback: %s\n", name, tmp);
if ( !debug ) syslog(LOG_ERR, "Error in callback: %s", tmp);
gError = GLOBUS_TRUE;
globus_libc_free(tmp);
int rc;
globus_mutex_lock(&gLock);
if ( (rc = read(*((int *)user_arg), gBuffer, BUFSZ)) < 0 ) {
- dprintf(("[%s] Error reading dump file\n", name));
+ dprintf("[%s] Error reading dump file\n", name);
if ( !debug ) syslog(LOG_ERR, "Error reading dump file");
gDone = GLOBUS_TRUE;
gError = GLOBUS_TRUE;
globus_ftp_client_handleattr_t hnd_attr;
#define put_file_err(errs) { \
- dprintf(("[%s] %s\n", name, errs)); \
+ dprintf("[%s] %s\n", name, errs); \
if ( !debug ) syslog(LOG_ERR, errs); \
return 1; \
}
globus_cond_init(&gCond, GLOBUS_NULL);
gDone = GLOBUS_FALSE;
+ gError = GLOBUS_FALSE;
/* do the op */
if ( globus_ftp_client_put(
&hnd, url, &op_attr,
GLOBUS_NULL, gftp_done_cb, (void *)&fhnd) != GLOBUS_SUCCESS) {
- dprintf(("[%s] Could not start file put\n", name));
+ dprintf("[%s] Could not start file put\n", name);
if ( !debug ) syslog(LOG_ERR, "Could not start file put");
gError = GLOBUS_TRUE;
gDone = GLOBUS_TRUE;
int rc;
globus_mutex_lock(&gLock);
if ( (rc = read(fhnd, gBuffer, BUFSZ)) < 0 ) {
- dprintf(("[%s] Error reading dump file\n", name));
+ dprintf("[%s] Error reading dump file\n", name);
if ( !debug ) syslog(LOG_ERR, "Error reading dump file");
gDone = GLOBUS_TRUE;
gError = GLOBUS_TRUE;