* 20110117.0 (2.3.11-dev) Merge <If> sections in separate step (ap_if_walk).
* Add core_dir_config->sec_if. Add ap_add_if_conf().
* Add pool argument to ap_add_file_conf().
+ * 20110117.1 (2.3.11-dev) Add ap_pstr2alnum() and ap_str2alnum()
*/
#define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
#ifndef MODULE_MAGIC_NUMBER_MAJOR
#define MODULE_MAGIC_NUMBER_MAJOR 20110117
#endif
-#define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 1 /* 0...n */
/**
* Determine if the server's current MODULE_MAGIC_NUMBER is at least a
*/
AP_DECLARE(int) ap_request_has_body(request_rec *r);
+/**
+ * Cleanup a string.
+ * We only allow alphanumeric chars. Non-printable
+ * map to 'x' and all others map to '_'
+ *
+ * @param p pool to use to allocate dest
+ * @param src string to clean up
+ * @param dest cleaned up, allocated string
+ * @return Status value indicating whether the cleaning was successful or not.
+ */
+AP_DECLARE(apr_status_t) ap_pstr2alnum(apr_pool_t *p, const char *src, char **dest);
+
+/**
+ * Cleanup a string.
+ * We only allow alphanumeric chars. Non-printable
+ * map to 'x' and all others map to '_'
+ *
+ * @param src string to clean up
+ * @param dest cleaned up, pre-allocated string
+ * @return Status value indicating whether the cleaning was successful or not.
+ */
+AP_DECLARE(apr_status_t) ap_str2alnum(const char *src, char *dest);
+
/* Misc system hackery */
/**
* Given the name of an object in the file system determine if it is a directory
#include "http_connection.h"
#include "util_filter.h"
#include "util_ebcdic.h"
-#include "util_md5.h"
#include "ap_provider.h"
#include "ap_slotmem.h"
ap_slotmem_instance_t *new = NULL;
balancer->max_workers = balancer->workers->nelts + balancer->growth;
- balancer->sname = ap_md5(pconf, (const unsigned char *)balancer->name);
+ ap_pstr2alnum(pconf, balancer->name, &balancer->sname);
/* Create global mutex */
rv = ap_global_mutex_create(&(balancer->mutex), NULL, balancer_mutex_type,
*ptr = NULL;
return APR_SUCCESS;
}
+
+AP_DECLARE(apr_status_t) ap_str2alnum(const char *src, char *dest) {
+
+ for ( ; *src; src++, dest++)
+ {
+ if (!apr_isprint(*src))
+ *dest = 'x';
+ else if (!apr_isalnum(*src))
+ *dest = '_';
+ else
+ *dest = (char)*src;
+ }
+ *dest = '\0';
+ return APR_SUCCESS;
+
+}
+
+AP_DECLARE(apr_status_t) ap_pstr2alnum(apr_pool_t *p, const char *src, char **dest)
+{
+ *dest = apr_palloc(p, strlen(src)+1);
+ if (!*dest)
+ return APR_ENOMEM;
+ return ap_str2alnum(src, *dest);
+}