int redisReconnect(redisContext *c) { c->err = 0; memset(c->errstr, '\0', strlen(c->errstr)); if (c->fd > 0) { close(c->fd); } sdsfree(c->obuf); redisReaderFree(c->reader); c->obuf = sdsempty(); c->reader = redisReaderCreate(); if (c->connection_type == REDIS_CONN_TCP) { return redisContextConnectBindTcp(c, c->tcp.host, c->tcp.port, c->timeout, c->tcp.source_addr); } else if (c->connection_type == REDIS_CONN_UNIX) { return redisContextConnectUnix(c, c->unix_sock.path, c->timeout); } else { /* Something bad happened here and shouldn't have. There isn't enough information in the context to reconnect. */ __redisSetError(c,REDIS_ERR_OTHER,"Not enough information to reconnect"); } return REDIS_ERR; }
redisContext *redisConnectBindNonBlock(const char *ip, int port, const char *source_addr) { redisContext *c = redisContextInit(); c->flags &= ~REDIS_BLOCK; redisContextConnectBindTcp(c,ip,port,NULL,source_addr); return c; }
redisContext *redisConnectBindNonBlock(const char *ip, int port, int ssl, char* certfile, char* certdir, const char *source_addr) { redisContext *c = redisContextInit(); c->flags &= ~REDIS_BLOCK; if( ssl ) { setupSSL(); // TODO: Create a bind version of this... redisContextConnectSSL(c,ip,port,certfile,certdir,NULL); } else { redisContextConnectBindTcp(c,ip,port,NULL,source_addr); } return c; }