Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
别团等shy哥发育
redis
提交
3d7263aa
R
redis
项目概览
别团等shy哥发育
/
redis
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3d7263aa
编写于
12月 03, 2013
作者:
A
antirez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Removed old comments and dead code from freeClient().
上级
33345364
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
14 deletion
+14
-14
src/networking.c
src/networking.c
+14
-12
src/redis.h
src/redis.h
+0
-2
未找到文件。
src/networking.c
浏览文件 @
3d7263aa
...
...
@@ -100,9 +100,7 @@ redisClient *createClient(int fd) {
c
->
bpop
.
keys
=
dictCreate
(
&
setDictType
,
NULL
);
c
->
bpop
.
timeout
=
0
;
c
->
bpop
.
target
=
NULL
;
c
->
io_keys
=
listCreate
();
c
->
watched_keys
=
listCreate
();
listSetFreeMethod
(
c
->
io_keys
,
decrRefCountVoid
);
c
->
pubsub_channels
=
dictCreate
(
&
setDictType
,
NULL
);
c
->
pubsub_patterns
=
listCreate
();
listSetFreeMethod
(
c
->
pubsub_patterns
,
decrRefCountVoid
);
...
...
@@ -650,13 +648,11 @@ void freeClient(redisClient *c) {
return
;
}
/* Note that if the client we are freeing is blocked into a blocking
* call, we have to set querybuf to NULL *before* to call
* unblockClientWaitingData() to avoid processInputBuffer() will get
* called. Also it is important to remove the file events after
* this, because this call adds the READABLE event. */
/* Free the query buffer */
sdsfree
(
c
->
querybuf
);
c
->
querybuf
=
NULL
;
/* Deallocate structures used to block on blocking ops. */
if
(
c
->
flags
&
REDIS_BLOCKED
)
unblockClientWaitingData
(
c
);
dictRelease
(
c
->
bpop
.
keys
);
...
...
@@ -664,11 +660,13 @@ void freeClient(redisClient *c) {
/* UNWATCH all the keys */
unwatchAllKeys
(
c
);
listRelease
(
c
->
watched_keys
);
/* Unsubscribe from all the pubsub channels */
pubsubUnsubscribeAllChannels
(
c
,
0
);
pubsubUnsubscribeAllPatterns
(
c
,
0
);
dictRelease
(
c
->
pubsub_channels
);
listRelease
(
c
->
pubsub_patterns
);
/* Close socket, unregister events, and remove list of replies and
* accumulated arguments. */
if
(
c
->
fd
!=
-
1
)
{
...
...
@@ -678,12 +676,14 @@ void freeClient(redisClient *c) {
}
listRelease
(
c
->
reply
);
freeClientArgv
(
c
);
/* Remove from the list of clients */
if
(
c
->
fd
!=
-
1
)
{
ln
=
listSearchKey
(
server
.
clients
,
c
);
redisAssert
(
ln
!=
NULL
);
listDelNode
(
server
.
clients
,
ln
);
}
/* When client was just unblocked because of a blocking operation,
* remove it from the list of unblocked clients. */
if
(
c
->
flags
&
REDIS_UNBLOCKED
)
{
...
...
@@ -691,9 +691,9 @@ void freeClient(redisClient *c) {
redisAssert
(
ln
!=
NULL
);
listDelNode
(
server
.
unblocked_clients
,
ln
);
}
listRelease
(
c
->
io_keys
);
/* Master/slave cleanup
.
*
Case 1:
we lost the connection with a slave. */
/* Master/slave cleanup
Case 1:
* we lost the connection with a slave. */
if
(
c
->
flags
&
REDIS_SLAVE
)
{
if
(
c
->
replstate
==
REDIS_REPL_SEND_BULK
&&
c
->
repldbfd
!=
-
1
)
close
(
c
->
repldbfd
);
...
...
@@ -709,7 +709,8 @@ void freeClient(redisClient *c) {
refreshGoodSlavesCount
();
}
/* Case 2: we lost the connection with the master. */
/* Master/slave cleanup Case 2:
* we lost the connection with the master. */
if
(
c
->
flags
&
REDIS_MASTER
)
replicationHandleMasterDisconnection
();
/* If this client was scheduled for async freeing we need to remove it
...
...
@@ -720,7 +721,8 @@ void freeClient(redisClient *c) {
listDelNode
(
server
.
clients_to_close
,
ln
);
}
/* Release memory */
/* Release other dynamically allocated client structure fields,
* and finally release the client structure itself. */
if
(
c
->
name
)
decrRefCount
(
c
->
name
);
zfree
(
c
->
argv
);
freeClientMultiState
(
c
);
...
...
src/redis.h
浏览文件 @
3d7263aa
...
...
@@ -475,8 +475,6 @@ typedef struct redisClient {
int
slave_listening_port
;
/* As configured with: SLAVECONF listening-port */
multiState
mstate
;
/* MULTI/EXEC state */
blockingState
bpop
;
/* blocking state */
list
*
io_keys
;
/* Keys this client is waiting to be loaded from the
* swap file in order to continue. */
list
*
watched_keys
;
/* Keys WATCHED for MULTI/EXEC CAS */
dict
*
pubsub_channels
;
/* channels a client is interested in (SUBSCRIBE) */
list
*
pubsub_patterns
;
/* patterns a client is interested in (SUBSCRIBE) */
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录