Skip to content

memcached_touch() crashes when expiration=-1 (ASCII only)  #76

@m6w6

Description

@m6w6

Imported from Launchpad using lp2gh.


The following snippet gives: Couldn't touch key: MEMORY ALLOCATION FAILURE

#include <libmemcached/memcached.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv) {
  //memcached_servers_parse (char *server_strings);
  memcached_server_st *servers = NULL;
  memcached_st *memc;
  memcached_return rc;
  char *key = "keystring";
  char *value = "keyvalue";

  char *retrieved_value;
  size_t value_length;
  uint32_t flags;

  time_t timeout = -1;

  memc = memcached_create(NULL);

  //rc = memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);
  
  servers = memcached_server_list_append(servers, "localhost", 11211, &rc);
  rc = memcached_server_push(memc, servers);
  
  if (rc == MEMCACHED_SUCCESS)
    fprintf(stderr, "Added server successfully\n");
  else
    fprintf(stderr, "Couldn't add server: %s\n", memcached_strerror(memc, rc));

  rc = memcached_set(memc, key, strlen(key), value, strlen(value), (time_t)0, (uint32_t)0);

  if (rc == MEMCACHED_SUCCESS)
    fprintf(stderr, "Key stored successfully\n");
  else
    fprintf(stderr, "Couldn't store key: %s\n", memcached_strerror(memc, rc));

  rc = memcached_touch(memc, key, strlen(key), timeout);

  if (rc == MEMCACHED_SUCCESS)
    fprintf(stderr, "Key touched successfully\n");
  else
    fprintf(stderr, "Couldn't touch key: %s\n", memcached_strerror(memc, rc));


  return 0;
}

If you uncomment the memcached_behavior_set() call to force it in binary mode, it works properly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions