diff options
author | Dustin Sallings <dustin@spy.net> | 2012-01-27 23:32:20 -0800 |
---|---|---|
committer | Dustin Sallings <dustin@spy.net> | 2012-01-27 23:53:33 -0800 |
commit | b0a858ce63817f1360428674630307c4568b614c (patch) | |
tree | d232ef41eba0c96c8d35790b7cf62494e903f52c | |
parent | 39d59a902135188359027762e804a9560222e52b (diff) | |
download | memcached-b0a858ce63817f1360428674630307c4568b614c.tar.gz |
Specify hostname in sasl_server_new.
saslpasswd2 does something a little magical when initializing the
structure that's different from what happens if you just pass NULL.
The magic is too great for the tests as is, so this code does the same
thing saslpasswd2 does to determine the fqdn.
-rw-r--r-- | memcached.c | 4 | ||||
-rw-r--r-- | sasl_defs.c | 10 | ||||
-rw-r--r-- | sasl_defs.h | 2 |
3 files changed, 15 insertions, 1 deletions
diff --git a/memcached.c b/memcached.c index 8d4c3d7..b121e16 100644 --- a/memcached.c +++ b/memcached.c @@ -1604,7 +1604,9 @@ static void init_sasl_conn(conn *c) { if (!c->sasl_conn) { int result=sasl_server_new("memcached", - NULL, NULL, NULL, NULL, + NULL, + my_sasl_hostname[0] ? my_sasl_hostname : NULL, + NULL, NULL, NULL, 0, &c->sasl_conn); if (result != SASL_OK) { if (settings.verbose) { diff --git a/sasl_defs.c b/sasl_defs.c index 0f405d0..7922f66 100644 --- a/sasl_defs.c +++ b/sasl_defs.c @@ -5,6 +5,8 @@ #include <string.h> #include <sasl/saslplug.h> +char my_sasl_hostname[1025]; + #ifdef HAVE_SASL_CB_GETCONF /* The locations we may search for a SASL config file if the user didn't * specify one in the environment variable SASL_CONF_PATH @@ -169,6 +171,14 @@ void init_sasl(void) { } #endif + memset(my_sasl_hostname, 0, sizeof(my_sasl_hostname)); + if (gethostname(my_sasl_hostname, sizeof(my_sasl_hostname)-1) == -1) { + if (settings.verbose) { + fprintf(stderr, "Error discovering hostname for SASL\n"); + } + my_sasl_hostname[0] = '\0'; + } + if (sasl_server_init(sasl_callbacks, "memcached") != SASL_OK) { fprintf(stderr, "Error initializing sasl.\n"); exit(EXIT_FAILURE); diff --git a/sasl_defs.h b/sasl_defs.h index 65f8d80..f36c694 100644 --- a/sasl_defs.h +++ b/sasl_defs.h @@ -9,6 +9,8 @@ #include <sasl/sasl.h> void init_sasl(void); +extern char my_sasl_hostname[1025]; + #else /* End of SASL support */ typedef void* sasl_conn_t; |