All pastes #2068873 Raw Edit

Mine

public c v1 · immutable
#2068873 ·published 2011-05-25 09:38 UTC
rendered paste body
struct redis_struct {	redisContext	*redis_context;	char		redis_result[1024];};static voidfree_redis(struct redis_struct *redis_info){	if (redis_info == NULL) {		return;	}	if (redis_info->redis_context != NULL) {		redisFree(redis_info->redis_context);	}	if (redis_info->redis_result != NULL) {		free(redis_info->redis_result);	}	free(redis_info);}intinit_function(struct vmod_priv *priv, const struct VCL_conf *cfg){	redisContext *c;	struct redis_struct *redis_info;	struct timeval timeout = { 1, 500000 }; // 1.5 seconds	c = redisConnectWithTimeout((char*)"127.0.0.2", 6379, timeout);	if (c->err) {		return (0);	}	redis_info = malloc(sizeof(struct redis_struct));	if (redis_info == NULL) {		return (0);	}	redis_info->redis_context = c;	priv->priv = redis_info;	priv->free = free_redis;	return (0);}const char * __match_proto__()vmod_redis_get(struct sess *sp, struct vmod_priv *priv, const char *key){	redisReply *reply;	struct redis_struct *redis_info = priv->priv;	reply = redisCommand(redis_info->redis_context, "GET %s", key);	if (reply->type == REDIS_REPLY_STRING) {		strncpy(redis_info->redis_result, reply->str, 1024);	} else if (reply->type == REDIS_REPLY_INTEGER) {		snprintf(redis_info->redis_result, 1024, "%ll", reply->integer);	}	freeReplyObject(reply);	return (redis_info->redis_result);}