X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fcallback.cc;h=83d8ce8fc8ca33a1a16a684dd4b0796ef4417e65;hb=4b61e1a752d8540c4c45b94d7832c2fa8db87537;hp=32d85dcd93842343312eb46796d8d50cd298e21e;hpb=54b757ae099fb3db5132bd8a84b99a9a85492af1;p=awesomized%2Flibmemcached diff --git a/libmemcached/callback.cc b/libmemcached/callback.cc index 32d85dcd..83d8ce8f 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;