Improved logging
authorDaniel Kouřil <kouril@ics.muni.cz>
Mon, 3 Aug 2009 13:39:25 +0000 (13:39 +0000)
committerDaniel Kouřil <kouril@ics.muni.cz>
Mon, 3 Aug 2009 13:39:25 +0000 (13:39 +0000)
org.glite.security.proxyrenewal/interface/renewal_core.h
org.glite.security.proxyrenewal/project/version.properties
org.glite.security.proxyrenewal/src/commands.c
org.glite.security.proxyrenewal/src/renew.c
org.glite.security.proxyrenewal/src/renewal_core.c
org.glite.security.proxyrenewal/src/renewd.c
org.glite.security.proxyrenewal/src/voms.c

index 8348963..166a3d0 100644 (file)
@@ -55,6 +55,18 @@ glite_renewal_core_renew(glite_renewal_core_context context,
                         const char *current_proxy,
                         char **new_proxy);
 
+void
+glite_renewal_core_set_err(glite_renewal_core_context ctx, const char *format, ...);
+
+void
+glite_renewal_core_update_err(glite_renewal_core_context ctx, const char *format, ...);
+
+char *
+glite_renewal_core_get_err(glite_renewal_core_context ctx);
+
+void
+glite_renewal_core_reset_err(glite_renewal_core_context ctx);
+
 #ifdef __cplusplus
 }
 #endif
index 0cfd01b..2cba4d7 100644 (file)
@@ -119,12 +119,12 @@ copy_file_content(glite_renewal_core_context ctx, FILE *in, FILE *out)
    while (1) {
       num = fread(buf, sizeof(*buf), sizeof(buf), in);
       if ((ret = ferror(in))) {
-        edg_wlpr_Log(ctx, LOG_ERR, "Reading failed: %s", strerror(errno));
+        glite_renewal_core_set_err(ctx, "Reading failed: %s", strerror(errno));
         return ret;
       }
       num = fwrite(buf, sizeof(*buf), num, out);
       if ((ret = ferror(in))) {
-        edg_wlpr_Log(ctx, LOG_ERR, "Writing failed: %s", strerror(errno));
+        glite_renewal_core_set_err(ctx, "Writing failed: %s", strerror(errno));
         return ret;
       }
       if (feof(in))
@@ -210,7 +210,7 @@ get_times(glite_renewal_core_context ctx, char *proxy_file, proxy_record *record
       for (voms_cert = voms_data->data; voms_cert && *voms_cert; voms_cert++) {
           t = ASN1_UTCTIME_new();
           if (t == NULL) {
-             edg_wlpr_Log(ctx, LOG_ERR, "ASN1_UTCTIME_new() failed\n");
+             glite_renewal_core_set_err(ctx, "ASN1_UTCTIME_new() failed");
              ret = 1;
              goto end;
           }
@@ -219,7 +219,7 @@ get_times(glite_renewal_core_context ctx, char *proxy_file, proxy_record *record
            * value, which must be converted to the UTC (YYMMDDHHSSZ) format */
           s = strdup((*voms_cert)->date2 + 2);
           if (s == NULL) {
-             edg_wlpr_Log(ctx, LOG_ERR, "Not enough memory\n");
+             glite_renewal_core_set_err(ctx, "Not enough memory");
              ret = ENOMEM;
              goto end;
           }
@@ -230,7 +230,7 @@ get_times(glite_renewal_core_context ctx, char *proxy_file, proxy_record *record
           }
           ret = ASN1_UTCTIME_set_string(t, s);
           if (ret == 0) {
-             edg_wlpr_Log(ctx, LOG_ERR, "ASN1_UTCTIME_set_string() failed\n");
+             glite_renewal_core_set_err(ctx, "ASN1_UTCTIME_set_string() failed\n");
              ret = 1;
              free(s);
              goto end;
@@ -260,7 +260,7 @@ get_times(glite_renewal_core_context ctx, char *proxy_file, proxy_record *record
 
    now = time(NULL);
    if (end_time_x509 + RENEWAL_CLOCK_SKEW < now) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Expired proxy in %s", proxy_file);
+      glite_renewal_core_set_err(ctx, "Expired proxy in %s", proxy_file);
       ret = EDG_WLPR_PROXY_EXPIRED;
       goto end;
    }
@@ -270,14 +270,14 @@ get_times(glite_renewal_core_context ctx, char *proxy_file, proxy_record *record
    for (i = 0; i < sk_X509_num(chain); i++) {
       t = X509_get_notAfter(sk_X509_value(chain, i));
       if (ASN1_UTCTIME_cmp_time_t(t, now - RENEWAL_CLOCK_SKEW) < 0) {
-          edg_wlpr_Log(ctx, LOG_ERR, "Expired proxy in %s", proxy_file);
+          glite_renewal_core_set_err(ctx, "Expired proxy in %s", proxy_file);
           ret = EDG_WLPR_PROXY_EXPIRED;
           goto end;
       }
    }
 
    if (now + condor_limit > end_time_x509) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Remaining proxy lifetime fell below the value of the Condor limit!");
+      edg_wlpr_Log(ctx, LOG_WARNING, "Remaining proxy lifetime fell below the value of the Condor limit!");
       delta = 0;
    } else
       delta = get_delta(ctx, now, end_time);
@@ -316,16 +316,16 @@ copy_file(glite_renewal_core_context ctx, char *src, char *dst)
 
    from = fopen(src, "r");
    if (from == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Cannot open file %s for reading (%s)",
-                  src, strerror(errno));
+      glite_renewal_core_set_err(ctx, "Cannot open file %s for reading (%s)",
+                                src, strerror(errno));
       return errno;
    }
 
    snprintf(tmpfile, sizeof(tmpfile), "%s.XXXXXX", dst);
    tmp_fd = mkstemp(tmpfile);
    if (tmp_fd == -1) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Cannot create temporary file (%s)",
-                  strerror(errno));
+      glite_renewal_core_set_err(ctx, "Cannot create temporary file (%s)",
+                                strerror(errno));
       ret = errno;
       goto end;
    }
@@ -333,8 +333,8 @@ copy_file(glite_renewal_core_context ctx, char *src, char *dst)
 
    tmp_to = fdopen(tmp_fd, "w");
    if (tmp_to == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Cannot associate stream with temporary file (%s)",
-                  strerror(errno));
+      glite_renewal_core_set_err(ctx, "Cannot associate stream with temporary file (%s)",
+                                strerror(errno));
       unlink(tmpfile);
       ret = errno;
       goto end;
@@ -348,7 +348,7 @@ copy_file(glite_renewal_core_context ctx, char *src, char *dst)
 
    ret = rename(tmpfile, dst);
    if (ret) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Cannot replace repository file %s with temporary file (%s)",
+      glite_renewal_core_set_err(ctx, "Cannot replace repository file %s with temporary file (%s)",
                   strerror(errno));
       unlink(tmpfile);
       ret = errno;
@@ -558,7 +558,7 @@ get_record_ext(glite_renewal_core_context ctx, FILE *fd, proxy_record *record, i
         *p = '\0';
       ret = decode_record(ctx, line, &tmp_record);
       if (ret) {
-        edg_wlpr_Log(ctx, LOG_ERR, "Skipping invalid entry at line %d", line_num);
+        edg_wlpr_Log(ctx, LOG_WARNING, "Skipping invalid entry at line %d", line_num);
         continue;
       }
       if (record->suffix >= 0) {
@@ -686,7 +686,7 @@ store_record(glite_renewal_core_context ctx, char *basename, proxy_record *recor
         *p = '\0';
       ret = decode_record(ctx, line, &tmp_record);
       if (ret) {
-        edg_wlpr_Log(ctx, LOG_ERR, "Removing invalid entry at line %d in %s", line_num, basename);
+        edg_wlpr_Log(ctx, LOG_WARNING, "Removing invalid entry at line %d in %s", line_num, basename);
         continue;
       }
       if (record->suffix == tmp_record.suffix &&
@@ -750,13 +750,12 @@ open_metafile(glite_renewal_core_context ctx, char *basename, FILE **fd)
    snprintf(meta_filename, sizeof(meta_filename), "%s.data", basename);
    meta_fd = fopen(meta_filename, "a+");
    if (meta_fd == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Opening meta file %s failed (%s)",
+      glite_renewal_core_set_err(ctx, "Opening meta file %s failed (%s)",
                   meta_filename, strerror(errno));
       return errno;
    }
    rewind(meta_fd);
    *fd = meta_fd;
-   edg_wlpr_Log(ctx, LOG_DEBUG, "Using meta file %s", meta_filename);
    return 0;
 }
 
@@ -814,7 +813,7 @@ check_proxyname(glite_renewal_core_context ctx, char *datafile, char *jobid, cha
 
    meta_fd = fopen(datafile, "r");
    if (meta_fd == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Cannot open meta file %s (%s)",
+      glite_renewal_core_set_err(ctx, "Cannot open meta file %s (%s)",
                   datafile, strerror(errno));
       return errno;
    }
@@ -855,7 +854,7 @@ find_proxyname(glite_renewal_core_context ctx, char *jobid, char **filename)
 
    dir = opendir(repository);
    if (dir == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Cannot open repository directory %s (%s)",
+      glite_renewal_core_set_err(ctx, "Cannot open repository directory %s (%s)",
                   repository, strerror(errno));
       return errno;
    }
@@ -873,7 +872,7 @@ find_proxyname(glite_renewal_core_context ctx, char *jobid, char **filename)
       }
    }
    closedir(dir);
-   edg_wlpr_Log(ctx, LOG_ERR, "Requested proxy is not registered");
+   glite_renewal_core_set_err(ctx, "Requested proxy is not registered");
    return EDG_WLPR_PROXY_NOT_REGISTERED;
 }
 
@@ -892,13 +891,15 @@ register_proxy(glite_renewal_core_context ctx, edg_wlpr_Request *request, edg_wl
 
    memset(&record, 0, sizeof(record));
    memset(response, 0, sizeof(*response));
-   edg_wlpr_Log(ctx, LOG_DEBUG, "Registration request for %s", request->proxy_filename);
 
    if (request->proxy_filename == NULL || request->jobid == NULL) {
       edg_wlpr_Log(ctx, LOG_ERR, "Registration request doesn't contain registration information");
       return; /*  EINVAL; */
    }
-   umask(0177);
+
+   edg_wlpr_Log(ctx, LOG_DEBUG,
+               "Registering proxy from %s belonging to job %s",
+               request->proxy_filename, request->jobid);
 
    ret = get_base_filename(ctx, request->proxy_filename, &basename);
    if (ret)
@@ -960,8 +961,16 @@ end:
    if (basename)
       free(basename);
 
-   if (ret == 0)
+   if (ret == 0) {
       ret = filename_to_response(ctx, filename, response);
+      edg_wlpr_Log(ctx, LOG_INFO,
+                   "Proxy %s of job %s has been registered as %s",
+                  request->proxy_filename, request->jobid, filename);
+   } else
+      edg_wlpr_Log(ctx, LOG_ERR, "Failed to register proxy %s: %s",
+                   request->proxy_filename,
+                   glite_renewal_core_get_err(ctx));
+
    record_to_response(ctx, ret, &record, response);
    free_record(ctx, &record);
 }
@@ -977,14 +986,16 @@ unregister_proxy(glite_renewal_core_context ctx, edg_wlpr_Request *request, edg_
    struct stat stat_buf;
 
    memset(&record, 0, sizeof(record));
-   edg_wlpr_Log(ctx, LOG_DEBUG, "Unregistration request for %s", request->jobid);
 
    if (request->jobid == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Unregistration request doesn't contain needed information");
+      glite_renewal_core_set_err(ctx, "Request doesn't specify jobid");
       ret = EINVAL;
       goto end;
    }
 
+   edg_wlpr_Log(ctx, LOG_DEBUG, "Unregistrating proxy of job %s", 
+               request->jobid);
+
    if (request->proxy_filename == NULL) {
       ret = find_proxyname(ctx, request->jobid, &request->proxy_filename);
       if (ret)
@@ -1077,8 +1088,19 @@ end:
    if (basename)
       free(basename);
 
-   if (ret == 0)
+   if (ret == 0) {
       ret = filename_to_response(ctx, request->proxy_filename, response);
+      edg_wlpr_Log(ctx, LOG_INFO,
+                   "Proxy %s of job %s has been unregistered",
+                  request->proxy_filename, request->jobid);
+   }
+   else
+      edg_wlpr_Log(ctx, LOG_ERR,
+         "Failed to unregister proxy %s of job %s: %s",
+         (request->proxy_filename) ? request->proxy_filename : "'(null)'",
+        (request->jobid) ? request->jobid : "'(null)'",
+        glite_renewal_core_get_err(ctx));
+
    record_to_response(ctx, ret, &record, response);
    free_record(ctx, &record);
 }
@@ -1094,7 +1116,7 @@ get_proxy(glite_renewal_core_context ctx, edg_wlpr_Request *request, edg_wlpr_Re
    edg_wlpr_Log(ctx, LOG_DEBUG, "GET request for %s", request->jobid);
    
    if (request->jobid == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "GET request doesn't contain jobid specification");
+      glite_renewal_core_set_err(ctx, "Request doesn't contain jobid specification");
       ret = EINVAL;
       goto end;
    }
@@ -1104,6 +1126,10 @@ get_proxy(glite_renewal_core_context ctx, edg_wlpr_Request *request, edg_wlpr_Re
 end:
    if (ret == 0)
       ret = filename_to_response(ctx, filename, response);
+   else
+      edg_wlpr_Log(ctx, LOG_ERR, "Failed to register proxy %s: %s",
+                   request->proxy_filename,
+                   glite_renewal_core_get_err(ctx));
    if (filename)
       free(filename);
    response->response_code = ret;
@@ -1206,6 +1232,7 @@ update_db(glite_renewal_core_context ctx, edg_wlpr_Request *request, edg_wlpr_Re
            (ret == 0) ? rename(proxy, cur_proxy) : unlink(proxy);
         }
       }
+      glite_renewal_core_reset_err(ctx);
       
       ret = encode_record(ctx, &record, &new_line);
       if (ret)
index 1003dc2..00b87b6 100644 (file)
@@ -58,9 +58,14 @@ renew_proxy(glite_renewal_core_context ctx, proxy_record *record, char *basename
    }
 
    ret = glite_renewal_core_renew(ctx, server, port, repository_file, new_proxy);
-   if (ret)
+   if (ret) {
+      edg_wlpr_Log(ctx, LOG_ERR, "Failed to renew proxy %s: %s",
+                   repository_file,
+                   glite_renewal_core_get_err(ctx));
       goto end;
+   }
 
+   edg_wlpr_Log(ctx, LOG_DEBUG, "Proxy %s succesfully renewed", repository_file);
    ret = 0;
 
 end:
@@ -115,9 +120,9 @@ check_renewal(glite_renewal_core_context ctx, char *datafile, int force_renew, i
    }
 
    current_time = time(NULL);
-   edg_wlpr_Log(ctx, LOG_DEBUG, "Reading metafile %s", datafile);
 
    while (fgets(line, sizeof(line), meta_fd) != NULL) {
+      glite_renewal_core_reset_err(ctx);
       free_record(ctx, &record);
       p = strchr(line, '\n');
       if (p)
@@ -188,8 +193,6 @@ int renewal(glite_renewal_core_context ctx, int force_renew, int *num_renewed)
    FILE *fd;
    int num = 0;
 
-   edg_wlpr_Log(ctx, LOG_DEBUG, "Starting renewal process");
-
    *num_renewed = 0;
 
    if (chdir(repository)) {
@@ -222,7 +225,8 @@ int renewal(glite_renewal_core_context ctx, int force_renew, int *num_renewed)
       fclose(fd);
    }
    closedir(dir);
-   edg_wlpr_Log(ctx, LOG_DEBUG, "Finishing renewal process");
+   edg_wlpr_Log(ctx, LOG_DEBUG,
+                "Renewal attempt finished, %u proxies renewed", *num_renewed);
    return 0;
 }
 
index 3256f2c..89da152 100644 (file)
@@ -17,20 +17,20 @@ load_proxy(glite_renewal_core_context ctx, const char *cur_file, X509 **cert, EV
 
    result = globus_gsi_cred_handle_init(&proxy, NULL);
    if (result) {
-      fprintf(stderr, "globus_gsi_cred_handle_init() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_cred_handle_init() failed");
       goto end;
    }
 
    result = globus_gsi_cred_read_proxy(proxy, (char *) cur_file);
    if (result) {
-      fprintf(stderr, "globus_gsi_cred_read_proxy() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_cred_read_proxy() failed");
       goto end;
    }
 
    if (cert) {
       result = globus_gsi_cred_get_cert(proxy, cert);
       if (result) {
-        fprintf(stderr, "globus_gsi_cred_get_cert() failed\n");
+        glite_renewal_core_set_err(ctx, "globus_gsi_cred_get_cert() failed");
         goto end;
       }
    }
@@ -38,7 +38,7 @@ load_proxy(glite_renewal_core_context ctx, const char *cur_file, X509 **cert, EV
    if (priv_key) {
       result = globus_gsi_cred_get_key(proxy, priv_key);
       if (result) {
-        fprintf(stderr, "globus_gsi_cred_get_key() failed\n");
+        glite_renewal_core_set_err(ctx, "globus_gsi_cred_get_key() failed");
         goto end;
       }
    }
@@ -46,7 +46,7 @@ load_proxy(glite_renewal_core_context ctx, const char *cur_file, X509 **cert, EV
    if (chain) {
       result = globus_gsi_cred_get_cert_chain(proxy, chain);
       if (result) {
-        fprintf(stderr, "globus_gsi_cred_get_cert_chain() failed\n");
+        glite_renewal_core_set_err(ctx, "globus_gsi_cred_get_cert_chain() failed");
         goto end;
       }
    }
@@ -88,7 +88,7 @@ get_proxy_base_name(glite_renewal_core_context ctx, const char *file, char **nam
 
    result = globus_gsi_cert_utils_get_base_name(subject, chain);
    if (result) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Cannot get subject name from proxy %s", file);
+      glite_renewal_core_set_err(ctx, "Cannot get subject name from proxy %s", file);
       ret = EDG_WLPR_ERROR_SSL; /* XXX ??? */
       goto end;
    }
@@ -142,8 +142,8 @@ glite_renewal_core_renew(glite_renewal_core_context ctx,
    snprintf(tmp_proxy, sizeof(tmp_proxy), "%s.myproxy.XXXXXX", current_proxy);
    tmp_fd = mkstemp(tmp_proxy);
    if (tmp_fd == -1) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Cannot create temporary file (%s)",
-                   strerror(errno));
+      glite_renewal_core_set_err(ctx, "Cannot create temporary file (%s)",
+                                 strerror(errno));
       return errno;
    }
 
@@ -157,7 +157,7 @@ glite_renewal_core_renew(glite_renewal_core_context ctx,
 
    server = (myproxy_server) ? myproxy_server : socket_attrs->pshost;
    if (server == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "No myproxy server specified");
+      glite_renewal_core_set_err(ctx, "No myproxy server specified");
       ret = EINVAL;
       goto end;
    }
@@ -170,8 +170,8 @@ glite_renewal_core_renew(glite_renewal_core_context ctx,
                                server_response, tmp_proxy);
    if (ret == 1) {
       ret = EDG_WLPR_ERROR_MYPROXY;
-      edg_wlpr_Log(ctx, LOG_ERR, "Error contacting MyProxy server for proxy %s: %s",
-                  current_proxy, verror_get_string());
+      glite_renewal_core_set_err(ctx, "Error contacting MyProxy server for proxy %s: %s",
+                                current_proxy, verror_get_string());
       verror_clear();
       goto end;
    }
@@ -186,8 +186,8 @@ glite_renewal_core_renew(glite_renewal_core_context ctx,
               current_proxy);
       tmp_voms_fd = mkstemp(tmp_voms_proxy);
       if (tmp_voms_fd == -1) {
-        edg_wlpr_Log(ctx, LOG_ERR, "Cannot create temporary file (%s)",
-                     strerror(errno));
+        glite_renewal_core_set_err(ctx, "Cannot create temporary file (%s)",
+                                   strerror(errno));
         ret = errno;
         goto end;
       }
@@ -195,6 +195,8 @@ glite_renewal_core_renew(glite_renewal_core_context ctx,
       ret = renew_voms_creds(ctx, current_proxy, renewed_proxy, tmp_voms_proxy);
       close(tmp_voms_fd);
       if (ret) {
+         glite_renewal_core_update_err(ctx,
+             "Failed to renew VOMS attributes");
         unlink(tmp_voms_proxy);
         goto end;
       }
@@ -249,34 +251,84 @@ glite_renewal_core_destroy_ctx(glite_renewal_core_context context)
 }
 
 void
+glite_renewal_core_set_err(glite_renewal_core_context ctx, const char *format, ...)
+{
+    va_list ap;
+
+    glite_renewal_core_reset_err(ctx);
+    va_start(ap, format);
+    vasprintf(&ctx->err_message, format, ap);
+    va_end(ap);
+}
+
+void
+glite_renewal_core_update_err(glite_renewal_core_context ctx, const char *format, ...)
+{
+    va_list ap;
+    char *msg, *err;
+
+    va_start(ap, format);
+    vasprintf(&msg, format, ap);
+    va_end(ap);
+
+    if (ctx->err_message == NULL) {
+       ctx->err_message = msg;
+       return;
+    }
+
+    asprintf(&err, "%s; %s", ctx->err_message, msg);
+    free(ctx->err_message);
+    free(msg);
+    ctx->err_message = err;
+}
+
+char *
+glite_renewal_core_get_err(glite_renewal_core_context ctx)
+{
+    return (ctx->err_message) ? ctx->err_message : "No error";
+}
+
+void
+glite_renewal_core_reset_err(glite_renewal_core_context ctx)
+{
+   if (ctx->err_message)
+      free(ctx->err_message);
+   ctx->err_message = NULL;
+}
+
+void
 edg_wlpr_Log(glite_renewal_core_context context, int dbg_level, const char *format, ...)
 {
    va_list ap;
+   char *msg = NULL, *date, *p;
+   time_t now = time(NULL);
 
-   if (context->err_message) {
-      free(context->err_message);
-      context->err_message = NULL;
-   }
-   
-   /* cannot handle the %m format argument specific for syslog() */
-   va_start(ap, format);
-   vasprintf(&context->err_message, format, ap);
-   va_end(ap);
 
    if (dbg_level > context->log_level)
       return;
 
+   /* cannot handle the %m format argument specific for syslog() */
+   va_start(ap, format);
+   /* XXX can hardly log ENOMEM errors */
+   vasprintf(&msg, format, ap);
+   va_end(ap);
+
    switch (context->log_dst) {
       case GLITE_RENEWAL_LOG_STDOUT:
-        printf("%s\n", context->err_message);
+        date = ctime(&now);
+        if ((p = strchr(date, '\n')))
+            *p = '\0';
+        printf("%s [renewd %u]: %s\n", date, getpid(), msg);
         break;
       case GLITE_RENEWAL_LOG_SYSLOG:
-        syslog(dbg_level, "%s", context->err_message);
+        syslog(dbg_level, "%s", msg);
         break;
       case GLITE_RENEWAL_LOG_NONE:
       default:
         break;
    }
 
+   free(msg);
+
    return;
 }
index 2a61056..5482a9f 100644 (file)
@@ -144,11 +144,6 @@ proto(glite_renewal_core_context ctx, int sock)
       goto end;
    }
 
-   edg_wlpr_Log(ctx, LOG_INFO, "Received command code %d for proxy %s and jobid %s",
-                request.command,
-               request.proxy_filename ? request.proxy_filename : "(unspecified)",
-               request.jobid ? request.jobid : "(unspecified)");
-
    command->handler(ctx, &request, &response);
 
    ret = encode_response(ctx, &response, &buf);
@@ -179,6 +174,7 @@ doit(glite_renewal_core_context ctx, int sock)
    int flags;
 
    while (!die) {
+      glite_renewal_core_reset_err(ctx);
 
       if (child_died) {
         int pid, newpid, ret;
@@ -196,10 +192,9 @@ doit(glite_renewal_core_context ctx, int sock)
       newsock = accept(sock, (struct sockaddr *) &client_addr, &client_addr_len);
       if (newsock == -1) {
         if (errno != EINTR)
-           edg_wlpr_Log(ctx, LOG_ERR, "accept() failed");
+           edg_wlpr_Log(ctx, LOG_ERR, "accept() failed: %s",  strerror(errno));
          continue;
       }
-      edg_wlpr_Log(ctx, LOG_DEBUG, "Got connection");
 
       flags = fcntl(newsock, F_GETFL, 0);
       if (fcntl(newsock, F_SETFL, flags | O_NONBLOCK) < 0) {
@@ -211,7 +206,6 @@ doit(glite_renewal_core_context ctx, int sock)
         
       proto(ctx, newsock);
 
-      edg_wlpr_Log(ctx, LOG_DEBUG, "Connection closed");
       close(newsock);
    }
    edg_wlpr_Log(ctx, LOG_DEBUG, "Terminating on signal %d\n",die);
@@ -448,7 +442,6 @@ do_listen(glite_renewal_core_context ctx, char *socket_name, int *sock)
    my_addr.sun_family = AF_UNIX;
    strncpy(my_addr.sun_path, socket_name, sizeof(my_addr.sun_path));
    unlink(socket_name);
-   umask(0177);
 
    s = socket(AF_UNIX, SOCK_STREAM, 0);
    if (s == -1) {
index e7583cc..e85b9e8 100644 (file)
@@ -27,39 +27,39 @@ generate_proxy(glite_renewal_core_context ctx, globus_gsi_cred_handle_t cur_prox
 
    result = globus_gsi_proxy_handle_init(&proxy_handle, NULL);
    if (result) {
-      edg_wlpr_Log(ctx, LOG_ERR, "globus_gsi_proxy_handle_init() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_proxy_handle_init() failed");
       goto end;
    }
 
    result = globus_gsi_cred_get_key(cur_proxy, &cur_proxy_priv_key);
    if (result) {
-      edg_wlpr_Log(ctx, LOG_ERR, "globus_gsi_cred_get_key() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_cred_get_key() failed");
       goto end;
    }
 
    /* Create and sign a new proxy */
    result = globus_gsi_cred_get_cert_type(cur_proxy, &proxy_type);
    if (result) {
-      edg_wlpr_Log(ctx, LOG_ERR, "globus_gsi_cred_get_cert_type() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_cred_get_cert_type() failed");
       goto end;
    }
 
    result = globus_gsi_proxy_handle_set_type(proxy_handle, proxy_type);
    if (result) {
-      edg_wlpr_Log(ctx, LOG_ERR, "globus_gsi_proxy_handle_set_type() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_proxy_handle_set_type() failed");
       goto end;
    }
 
    result = globus_gsi_proxy_create_signed(proxy_handle, cur_proxy, &proxy);
    if (result) {
-      edg_wlpr_Log(ctx, LOG_ERR, "globus_gsi_proxy_handle_init() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_proxy_handle_init() failed");
       goto end;
    }
 
    /* Get the new proxy */
    result = globus_gsi_cred_get_cert(proxy, &new_cert);
    if (result) {
-      edg_wlpr_Log(ctx, LOG_ERR, "globus_gsi_cred_get_cert() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_cred_get_cert() failed");
       goto end;
    }
 
@@ -79,7 +79,7 @@ generate_proxy(glite_renewal_core_context ctx, globus_gsi_cred_handle_t cur_prox
    /* And put the cert back, older one is unallocated by the function */
    result = globus_gsi_cred_set_cert(proxy, voms_cert);
    if (result) {
-      edg_wlpr_Log(ctx, LOG_ERR, "globus_gsi_cred_set_cert() failed\n");
+      glite_renewal_core_set_err(ctx, "globus_gsi_cred_set_cert() failed");
       goto end;
    }
 
@@ -100,7 +100,7 @@ my_VOMS_Export(glite_renewal_core_context ctx, void *buf, int buf_len, X509_EXTE
    p = pp = buf;
    ac = d2i_AC(NULL, &p, buf_len+1);
    if (ac == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "d2i_AC() failed\n");
+      glite_renewal_core_set_err(ctx, "d2i_AC() failed");
       return 1;
    }
 
@@ -129,7 +129,7 @@ create_voms_command(glite_renewal_core_context ctx, struct vomsdata *vd, struct
 #endif
 
    if (voms_cert == NULL || *voms_cert == NULL || (*voms_cert)->std == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "Invalid VOMS certificate\n");
+      glite_renewal_core_set_err(ctx, "Invalid VOMS certificate");
       return 1;
    }
 
@@ -163,7 +163,7 @@ renew_voms_cert(glite_renewal_core_context ctx, struct vomsdata *vd, struct voms
    if ((*voms_cert)->uri != NULL) {
       voms_server = strdup((*voms_cert)->uri);
       if (voms_server == NULL) {
-         edg_wlpr_Log(ctx, LOG_ERR, "Not enough memory");
+         glite_renewal_core_set_err(ctx, "Not enough memory");
          ret = 1;
          goto end;
       }
@@ -186,8 +186,8 @@ renew_voms_cert(glite_renewal_core_context ctx, struct vomsdata *vd, struct voms
          goto end;
       }
       err_msg = VOMS_ErrorMessage(vd, voms_error, NULL, 0);
-      edg_wlpr_Log(ctx, LOG_ERR,
-                   "Failed to contact VOMS server %s of VO %s: %s\n",
+      glite_renewal_core_set_err(ctx,
+                   "Failed to contact VOMS server %s of VO %s: %s",
                    voms_server, (*voms_cert)->voname, err_msg);
       free(err_msg);
    }
@@ -197,7 +197,7 @@ renew_voms_cert(glite_renewal_core_context ctx, struct vomsdata *vd, struct voms
    voms_contacts = VOMS_FindByVO(vd, (*voms_cert)->voname, ctx->voms_conf, NULL, &voms_error);
    if (voms_contacts == NULL) {
       err_msg = VOMS_ErrorMessage(vd, voms_error, NULL, 0);
-      edg_wlpr_Log(ctx, LOG_ERR, "Can't find configuration for VO %s: %s\n",
+      glite_renewal_core_set_err(ctx, "Can't find configuration for VO %s: %s",
                   (*voms_cert)->voname, err_msg);
       free(err_msg);
       ret = 1;
@@ -214,8 +214,8 @@ renew_voms_cert(glite_renewal_core_context ctx, struct vomsdata *vd, struct voms
           break;
        }
        err_msg = VOMS_ErrorMessage(vd, voms_error, NULL, 0);
-       edg_wlpr_Log(ctx, LOG_ERR,
-                    "Failed to contact VOMS server %s of VO %s: %s\n",
+       glite_renewal_core_set_err(ctx,
+                    "Failed to contact VOMS server %s of VO %s: %s",
                     (*c)->host, (*voms_cert)->voname, err_msg);
        free(err_msg);
    }
@@ -363,11 +363,11 @@ get_voms_cert(glite_renewal_core_context ctx,
    /* XXX pass the vomsdir and cadir parameters */
    voms_info = VOMS_Init(NULL, NULL);
    if (voms_info == NULL) {
-      edg_wlpr_Log(ctx, LOG_ERR, "check_voms_cert(): Cannot initialize VOMS context (VOMS_Init() failed, probably voms dir was not specified)");
+      glite_renewal_core_set_err(ctx, "VOMS_Init() failed, probably voms dir was not specified");
       return EDG_WLPR_ERROR_VOMS;
    }
 
-   VOMS_SetVerificationType(VERIFY_NONE, voms_info, NULL);
+   VOMS_SetVerificationType(VERIFY_NONE, voms_info, &voms_err);
 
    ret = 0;
    voms_ret = VOMS_Retrieve(cert, chain, RECURSE_CHAIN, voms_info, &voms_err);
@@ -377,7 +377,7 @@ get_voms_cert(glite_renewal_core_context ctx,
          ret = 0;
       } else {
          char *err_msg = VOMS_ErrorMessage(voms_info, voms_err, NULL, 0);
-         edg_wlpr_Log(ctx, LOG_ERR, "Failed to retrieve VOMS attributes: %s\n",
+         glite_renewal_core_set_err(ctx, "Failed to retrieve VOMS attributes: %s",
                       err_msg);
          free(err_msg);
          ret = -1; /* XXX */
@@ -407,7 +407,7 @@ main(int argc, char *argv[])
 
    if (globus_module_activate(GLOBUS_GSI_PROXY_MODULE) != GLOBUS_SUCCESS ||
        globus_module_activate(GLOBUS_GSI_CERT_UTILS_MODULE) != GLOBUS_SUCCESS) {
-       edg_wlpr_Log(ctx, LOG_ERR, "[%d]: Unable to initialize Globus modules\n", getpid());
+       glite_renewal_core_set_err(ctx, "Unable to initialize Globus modules");
        return 1;
    }