X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fzoom-memcached.c;h=70d7f3a27797305bb543e1a7fd6193bd33936e1d;hp=e1ebdc5a44d371b2837f5c0c68b0080d408d463d;hb=4e500dea9790b5ff9ea4fbb3d150c358e3bd2cab;hpb=dbc0fcd670c29391e095582946b857ce7dffe582 diff --git a/src/zoom-memcached.c b/src/zoom-memcached.c index e1ebdc5..70d7f3a 100644 --- a/src/zoom-memcached.c +++ b/src/zoom-memcached.c @@ -46,7 +46,7 @@ void ZOOM_memcached_destroy(ZOOM_connection c) /* memcached wrapper.. Because memcached function do not exist in older libs */ static memcached_st *yaz_memcached_wrap(const char *conf) { -#if HAVE_MEMCACHED +#if HAVE_MEMCACHED_FUNC return memcached(conf, strlen(conf)); #else char **darray; @@ -122,19 +122,37 @@ int ZOOM_memcached_configure(ZOOM_connection c) return 0; } +#if HAVE_LIBMEMCACHED_MEMCACHED_H +static void wrbuf_vary_puts(WRBUF w, const char *v) +{ + if (v) + { + if (strlen(v) > 40) + { + wrbuf_sha1_puts(w, v, 1); + } + else + { + wrbuf_puts(w, v); + } + } +} +#endif + void ZOOM_memcached_resultset(ZOOM_resultset r, ZOOM_query q) { #if HAVE_LIBMEMCACHED_MEMCACHED_H ZOOM_connection c = r->connection; + r->mc_key = wrbuf_alloc(); - wrbuf_puts(r->mc_key, "0;"); - wrbuf_puts(r->mc_key, c->host_port); + wrbuf_puts(r->mc_key, "1;"); + wrbuf_vary_puts(r->mc_key, c->host_port); + wrbuf_puts(r->mc_key, ";"); + wrbuf_vary_puts(r->mc_key, ZOOM_resultset_option_get(r, "extraArgs")); wrbuf_puts(r->mc_key, ";"); - if (c->user) - wrbuf_puts(r->mc_key, c->user); + wrbuf_vary_puts(r->mc_key, c->user); wrbuf_puts(r->mc_key, ";"); - if (c->group) - wrbuf_puts(r->mc_key, c->group); + wrbuf_vary_puts(r->mc_key, c->group); wrbuf_puts(r->mc_key, ";"); if (c->password) wrbuf_sha1_puts(r->mc_key, c->password, 1); @@ -146,8 +164,7 @@ void ZOOM_memcached_resultset(ZOOM_resultset r, ZOOM_query q) wrbuf_destroy(w); } wrbuf_puts(r->mc_key, ";"); - if (r->req_facets) - wrbuf_puts(r->mc_key, r->req_facets); + wrbuf_vary_puts(r->mc_key, r->req_facets); #endif }