Example #1
0
void free_tls_t(tls_t &tls)
{
   if (tls.ctx) {
      free_tls_context(tls.ctx);
   }
   if (tls.ca_certfile) {
      free(tls.ca_certfile);
   }
   if (tls.ca_certdir) {
      free(tls.ca_certdir);
   }
   if (tls.crlfile) {
      free(tls.crlfile);
   }
   if (tls.certfile) {
      free(tls.certfile);
   }
   if (tls.keyfile) {
      free(tls.keyfile);
   }
   if (tls.dhfile) {
      free(tls.dhfile);
   }
   if (tls.cipherlist) {
      free(tls.cipherlist);
   }
   if (tls.allowed_cns) {
      delete tls.allowed_cns;
   }
}
Example #2
0
/*
 * Free memory of resource.
 * NB, we don't need to worry about freeing any references
 * to other resources as they will be freed when that
 * resource chain is traversed.  Mainly we worry about freeing
 * allocated strings (names).
 */
void free_resource(RES *sres, int type)
{
   RES *nres;
   URES *res = (URES *)sres;

   if (res == NULL)
      return;

   /*
    * Common stuff -- free the resource name
    */
   nres = (RES *)res->dir_res.hdr.next;
   if (res->dir_res.hdr.name) {
      free(res->dir_res.hdr.name);
   }
   if (res->dir_res.hdr.desc) {
      free(res->dir_res.hdr.desc);
   }

   switch (type) {
   case R_DIRECTOR:
      if (res->dir_res.address) {
         free(res->dir_res.address);
      }
      if (res->dir_res.tls_ctx) {
         free_tls_context(res->dir_res.tls_ctx);
      }
      if (res->dir_res.tls_ca_certfile) {
         free(res->dir_res.tls_ca_certfile);
      }
      if (res->dir_res.tls_ca_certdir) {
         free(res->dir_res.tls_ca_certdir);
      }
      if (res->dir_res.tls_certfile) {
         free(res->dir_res.tls_certfile);
      }
      if (res->dir_res.tls_keyfile) {
         free(res->dir_res.tls_keyfile);
      }
      break;
   case R_CONSOLE:
      if (res->con_res.password) {
         free(res->con_res.password);
      }
      if (res->con_res.tls_ctx) {
         free_tls_context(res->con_res.tls_ctx);
      }
      if (res->con_res.tls_ca_certfile) {
         free(res->con_res.tls_ca_certfile);
      }
      if (res->con_res.tls_ca_certdir) {
         free(res->con_res.tls_ca_certdir);
      }
      if (res->con_res.tls_certfile) {
         free(res->con_res.tls_certfile);
      }
      if (res->con_res.tls_keyfile) {
         free(res->con_res.tls_keyfile);
      }
      break;
   case R_CONSOLE_FONT:
      if (res->con_font.fontface) {
         free(res->con_font.fontface);
      }
      break;
   default:
      printf(_("Unknown resource type %d\n"), type);
   }
   /*
    * Common stuff again -- free the resource, recurse to next one
    */
   free(res);
   if (nres) {
      free_resource(nres, type);
   }
}