X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcallback.cc;h=36f4b309ed99f81d43b647a3dc91aafcfccbb537;hb=6021ddb444fd6381e0f0875b387e10b6c49748e0;hp=32d85dcd93842343312eb46796d8d50cd298e21e;hpb=54b757ae099fb3db5132bd8a84b99a9a85492af1;p=m6w6%2Flibmemcached diff --git a/libmemcached/callback.cc b/libmemcached/callback.cc index 32d85dcd..36f4b309 100644 --- a/libmemcached/callback.cc +++ b/libmemcached/callback.cc @@ -60,22 +60,26 @@ memcached_return_t memcached_callback_set(memcached_st *ptr, case MEMCACHED_CALLBACK_DELETE_TRIGGER: { - if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS)) + if (data) // NULL would mean we are disabling. { - return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Delete triggers cannot be used if buffering is enabled")); - } - - if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_NOREPLY)) - { - return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Delete triggers cannot be used if MEMCACHED_BEHAVIOR_NOREPLY is set")); + if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS)) + { + return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Delete triggers cannot be used if buffering is enabled")); + } + + if (memcached_behavior_get(ptr, MEMCACHED_BEHAVIOR_NOREPLY)) + { + return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Delete triggers cannot be used if MEMCACHED_BEHAVIOR_NOREPLY is set")); + } } memcached_trigger_delete_key_fn func= *(memcached_trigger_delete_key_fn *)&data; ptr->delete_trigger= func; break; } + case MEMCACHED_CALLBACK_MAX: - return MEMCACHED_FAILURE; + return memcached_set_error(*ptr, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("Invalid callback supplied")); } return MEMCACHED_SUCCESS; @@ -86,7 +90,6 @@ void *memcached_callback_get(memcached_st *ptr, memcached_return_t *error) { memcached_return_t local_error; - if (error == NULL) { error = &local_error;