summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDustin Sallings <dustin@spy.net>2012-01-27 23:32:20 -0800
committerDustin Sallings <dustin@spy.net>2012-01-27 23:53:33 -0800
commitb0a858ce63817f1360428674630307c4568b614c (patch)
treed232ef41eba0c96c8d35790b7cf62494e903f52c
parent39d59a902135188359027762e804a9560222e52b (diff)
downloadmemcached-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.c4
-rw-r--r--sasl_defs.c10
-rw-r--r--sasl_defs.h2
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;