| line |
true |
false |
branch |
|
106
|
0 |
0 |
if (c == 'u' || c == 'U') return (0 == strcasecmp(cmd, "unsubscribe")); |
|
|
0 |
0 |
if (c == 'u' || c == 'U') return (0 == strcasecmp(cmd, "unsubscribe")); |
|
107
|
0 |
0 |
if (c == 'p' || c == 'P') return (0 == strcasecmp(cmd, "punsubscribe")); |
|
|
0 |
0 |
if (c == 'p' || c == 'P') return (0 == strcasecmp(cmd, "punsubscribe")); |
|
108
|
0 |
0 |
if (c == 's' || c == 'S') return (0 == strcasecmp(cmd, "sunsubscribe")); |
|
|
0 |
0 |
if (c == 's' || c == 'S') return (0 == strcasecmp(cmd, "sunsubscribe")); |
|
115
|
0 |
0 |
if (c == 's' || c == 'S') { |
|
|
0 |
0 |
if (c == 's' || c == 'S') { |
|
116
|
0 |
0 |
if (0 == strcasecmp(cmd, "subscribe")) return 1; |
|
117
|
0 |
0 |
if (0 == strcasecmp(cmd, "ssubscribe")) return 1; |
|
118
|
0 |
0 |
if (0 == strcasecmp(cmd, "sunsubscribe")) return 1; |
|
121
|
0 |
0 |
if (c == 'u' || c == 'U') { |
|
|
0 |
0 |
if (c == 'u' || c == 'U') { |
|
124
|
0 |
0 |
if (c == 'p' || c == 'P') { |
|
|
0 |
0 |
if (c == 'p' || c == 'P') { |
|
125
|
0 |
0 |
if (0 == strcasecmp(cmd, "psubscribe")) return 1; |
|
126
|
0 |
0 |
if (0 == strcasecmp(cmd, "punsubscribe")) return 1; |
|
129
|
0 |
0 |
if (c == 'm' || c == 'M') { |
|
|
0 |
0 |
if (c == 'm' || c == 'M') { |
|
142
|
0 |
0 |
if (reply->type != REDIS_REPLY_ARRAY && reply->type != REDIS_REPLY_PUSH) return 0; |
|
|
0 |
0 |
if (reply->type != REDIS_REPLY_ARRAY && reply->type != REDIS_REPLY_PUSH) return 0; |
|
143
|
0 |
0 |
if (reply->elements < 3) return 0; |
|
144
|
0 |
0 |
if (NULL == reply->element[0]) return 0; |
|
145
|
0 |
0 |
if (reply->element[0]->type != REDIS_REPLY_STRING && |
|
146
|
0 |
0 |
reply->element[0]->type != REDIS_REPLY_STATUS) return 0; |
|
149
|
0 |
0 |
if (s[0] == 'u' || s[0] == 'U') return (0 == strcasecmp(s, "unsubscribe")); |
|
|
0 |
0 |
if (s[0] == 'u' || s[0] == 'U') return (0 == strcasecmp(s, "unsubscribe")); |
|
150
|
0 |
0 |
if (s[0] == 'p' || s[0] == 'P') return (0 == strcasecmp(s, "punsubscribe")); |
|
|
0 |
0 |
if (s[0] == 'p' || s[0] == 'P') return (0 == strcasecmp(s, "punsubscribe")); |
|
151
|
0 |
0 |
if (s[0] == 's' || s[0] == 'S') return (0 == strcasecmp(s, "sunsubscribe")); |
|
|
0 |
0 |
if (s[0] == 's' || s[0] == 'S') return (0 == strcasecmp(s, "sunsubscribe")); |
|
156
|
0 |
0 |
if (NULL == self->error_handler) return; |
|
163
|
0 |
0 |
PUSHMARK(SP); |
|
164
|
0 |
0 |
XPUSHs(error); |
|
168
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
169
|
0 |
0 |
warn("EV::Redis: exception in error handler: %s", SvPV_nolen(ERRSV)); |
|
172
|
0 |
0 |
FREETMPS; |
|
177
|
0 |
0 |
if (NULL == self->error_handler) return; |
|
185
|
0 |
0 |
PUSHMARK(SP); |
|
186
|
0 |
0 |
EXTEND(SP, 2); |
|
191
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
192
|
0 |
0 |
warn("EV::Redis: exception in command callback: %s", SvPV_nolen(ERRSV)); |
|
194
|
0 |
0 |
FREETMPS; |
|
202
|
0 |
0 |
if (self->magic == EV_REDIS_FREED && |
|
203
|
0 |
0 |
self->callback_depth == 0 && |
|
204
|
0 |
0 |
self->current_cb == NULL) { |
|
213
|
0 |
6 |
if (NULL != self->host) { Safefree(self->host); self->host = NULL; } |
|
214
|
0 |
6 |
if (NULL != self->path) { Safefree(self->path); self->path = NULL; } |
|
215
|
0 |
6 |
if (NULL != self->source_addr) { Safefree(self->source_addr); self->source_addr = NULL; } |
|
216
|
0 |
6 |
if (NULL != self->connect_timeout) { Safefree(self->connect_timeout); self->connect_timeout = NULL; } |
|
217
|
0 |
6 |
if (NULL != self->command_timeout) { Safefree(self->command_timeout); self->command_timeout = NULL; } |
|
219
|
2 |
4 |
if (NULL != self->ssl_ctx) { redisFreeSSLContext(self->ssl_ctx); self->ssl_ctx = NULL; } |
|
224
|
0 |
6 |
if (self->waiting_timer_active && NULL != self->loop && !PL_dirty) { |
|
|
0 |
0 |
if (self->waiting_timer_active && NULL != self->loop && !PL_dirty) { |
|
|
0 |
0 |
if (self->waiting_timer_active && NULL != self->loop && !PL_dirty) { |
|
231
|
0 |
6 |
if (self->reconnect_timer_active && NULL != self->loop && !PL_dirty) { |
|
|
0 |
0 |
if (self->reconnect_timer_active && NULL != self->loop && !PL_dirty) { |
|
|
0 |
0 |
if (self->reconnect_timer_active && NULL != self->loop && !PL_dirty) { |
|
241
|
0 |
0 |
if (ms < 0) croak("%s must be non-negative", name); |
|
242
|
0 |
0 |
if (ms > MAX_TIMEOUT_MS) croak("%s too large (max %d ms)", name, MAX_TIMEOUT_MS); |
|
246
|
0 |
0 |
if (NULL != timeout_ms && SvOK(timeout_ms)) { |
|
|
0 |
0 |
if (NULL != timeout_ms && SvOK(timeout_ms)) { |
|
249
|
0 |
0 |
if (NULL == *tv_ptr) { |
|
256
|
0 |
0 |
if (NULL != *tv_ptr) { |
|
268
|
0 |
6 |
if (NULL != *handler_ptr) { |
|
274
|
6 |
0 |
if (has_handler_arg && NULL != handler && SvOK(handler) && SvROK(handler) && |
|
|
6 |
0 |
if (has_handler_arg && NULL != handler && SvOK(handler) && SvROK(handler) && |
|
|
6 |
0 |
if (has_handler_arg && NULL != handler && SvOK(handler) && SvROK(handler) && |
|
|
6 |
0 |
if (has_handler_arg && NULL != handler && SvOK(handler) && SvROK(handler) && |
|
275
|
6 |
0 |
SvTYPE(SvRV(handler)) == SVt_PVCV) { |
|
281
|
6 |
0 |
: &PL_sv_undef; |
|
290
|
0 |
6 |
if (self->in_cb_cleanup) { |
|
299
|
0 |
6 |
while (!ngx_queue_empty(&self->cb_queue)) { |
|
303
|
0 |
0 |
if (cbt == self->current_cb) { |
|
305
|
0 |
0 |
if (ngx_queue_next(q) == ngx_queue_sentinel(&self->cb_queue)) { |
|
314
|
0 |
0 |
if (!cbt->persist) self->pending_count--; |
|
316
|
0 |
0 |
if (NULL != cbt->cb) { |
|
317
|
0 |
0 |
if (NULL != error_sv) { |
|
330
|
0 |
0 |
for (i = 0; i < wt->argc; i++) { |
|
335
|
0 |
0 |
if (NULL != wt->cb) { |
|
346
|
0 |
6 |
if (self->in_wait_cleanup) { |
|
354
|
0 |
6 |
while (!ngx_queue_empty(&self->wait_queue)) { |
|
360
|
0 |
0 |
if (NULL != error_sv && NULL != wt->cb) { |
|
|
0 |
0 |
if (NULL != error_sv && NULL != wt->cb) { |
|
384
|
0 |
0 |
if (NULL != self->host) { |
|
388
|
0 |
0 |
if (NULL != self->path) { |
|
400
|
0 |
0 |
if (NULL == self || self->magic != EV_REDIS_MAGIC) return; |
|
|
0 |
0 |
if (NULL == self || self->magic != EV_REDIS_MAGIC) return; |
|
406
|
0 |
0 |
if (check_destroyed(self)) return; |
|
412
|
0 |
0 |
if (!self->reconnect) return; |
|
413
|
0 |
0 |
if (self->intentional_disconnect) return; |
|
414
|
0 |
0 |
if (NULL == self->loop) return; |
|
416
|
0 |
0 |
if (self->max_reconnect_attempts > 0 && |
|
417
|
0 |
0 |
self->reconnect_attempts >= self->max_reconnect_attempts) { |
|
451
|
0 |
0 |
while (!ngx_queue_empty(&self->wait_queue)) { |
|
455
|
0 |
0 |
if (now - wt->queued_at >= timeout) { |
|
459
|
0 |
0 |
if (NULL != wt->cb) { |
|
479
|
0 |
0 |
if (NULL == self || self->magic != EV_REDIS_MAGIC) return; |
|
|
0 |
0 |
if (NULL == self || self->magic != EV_REDIS_MAGIC) return; |
|
486
|
0 |
0 |
if (check_destroyed(self)) return; |
|
497
|
0 |
0 |
if (NULL == self->loop) return; |
|
498
|
0 |
0 |
if (self->waiting_timeout_ms <= 0) return; |
|
499
|
0 |
0 |
if (ngx_queue_empty(&self->wait_queue)) return; |
|
507
|
0 |
0 |
if (delay < 0) delay = 0; |
|
519
|
0 |
0 |
if (NULL == self->loop) { |
|
524
|
0 |
0 |
if (NULL != self->ac) { |
|
532
|
0 |
0 |
if (NULL != self->path) { |
|
535
|
0 |
0 |
else if (NULL != self->host) { |
|
544
|
0 |
0 |
if (NULL == self->ac) { |
|
550
|
0 |
0 |
if (REDIS_OK != post_connect_setup(self, "reconnect error")) { |
|
560
|
0 |
0 |
if (self == NULL) return; |
|
561
|
0 |
0 |
if (self->magic != EV_REDIS_MAGIC) return; |
|
565
|
0 |
0 |
if (REDIS_OK != status) { |
|
567
|
0 |
0 |
emit_error_str(self, c->errstr[0] ? c->errstr : "connect failed"); |
|
568
|
0 |
0 |
if (!self->reconnect || !self->resume_waiting_on_reconnect |
|
|
0 |
0 |
if (!self->reconnect || !self->resume_waiting_on_reconnect |
|
569
|
0 |
0 |
|| self->intentional_disconnect) { |
|
570
|
0 |
0 |
clear_wait_queue_sv(self, sv_2mortal(newSVpv( |
|
579
|
0 |
0 |
if (NULL != self->connect_handler) { |
|
585
|
0 |
0 |
PUSHMARK(SP); |
|
589
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
590
|
0 |
0 |
warn("EV::Redis: exception in connect handler: %s", SvPV_nolen(ERRSV)); |
|
593
|
0 |
0 |
FREETMPS; |
|
613
|
0 |
0 |
if (self == NULL) return; |
|
614
|
0 |
0 |
if (self->magic != EV_REDIS_MAGIC) return; |
|
621
|
0 |
0 |
if (self->ac != NULL && self->ac != c) { |
|
|
0 |
0 |
if (self->ac != NULL && self->ac != c) { |
|
622
|
0 |
0 |
if (self->ac_saved == c) self->ac_saved = NULL; |
|
633
|
0 |
0 |
if (REDIS_OK == status) { |
|
637
|
0 |
0 |
error_sv = sv_2mortal(newSVpv( |
|
639
|
0 |
0 |
emit_error_str(self, c->errstr[0] ? c->errstr : "disconnected"); |
|
640
|
0 |
0 |
if (!was_intentional) { |
|
645
|
0 |
0 |
if (NULL != self->disconnect_handler) { |
|
651
|
0 |
0 |
PUSHMARK(SP); |
|
655
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
656
|
0 |
0 |
warn("EV::Redis: exception in disconnect handler: %s", SvPV_nolen(ERRSV)); |
|
659
|
0 |
0 |
FREETMPS; |
|
665
|
0 |
0 |
if (self->ac != NULL && self->ac != c) { |
|
|
0 |
0 |
if (self->ac != NULL && self->ac != c) { |
|
676
|
0 |
0 |
will_reconnect = should_reconnect && !self->intentional_disconnect && self->reconnect; |
|
|
0 |
0 |
will_reconnect = should_reconnect && !self->intentional_disconnect && self->reconnect; |
|
|
0 |
0 |
will_reconnect = should_reconnect && !self->intentional_disconnect && self->reconnect; |
|
677
|
0 |
0 |
if (!self->resume_waiting_on_reconnect || was_intentional || !will_reconnect) { |
|
|
0 |
0 |
if (!self->resume_waiting_on_reconnect || was_intentional || !will_reconnect) { |
|
|
0 |
0 |
if (!self->resume_waiting_on_reconnect || was_intentional || !will_reconnect) { |
|
682
|
0 |
0 |
if (will_reconnect) { |
|
694
|
0 |
0 |
if (self == NULL) return; |
|
695
|
0 |
0 |
if (self->magic != EV_REDIS_MAGIC) return; |
|
696
|
0 |
0 |
if (NULL == self->push_handler) return; |
|
697
|
0 |
0 |
if (NULL == reply) return; |
|
707
|
0 |
0 |
PUSHMARK(SP); |
|
708
|
0 |
0 |
XPUSHs(sv_2mortal(EV__redis_decode_reply(reply))); |
|
712
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
713
|
0 |
0 |
warn("EV::Redis: exception in push handler: %s", SvPV_nolen(ERRSV)); |
|
716
|
0 |
0 |
FREETMPS; |
|
725
|
0 |
0 |
if (NULL != self->connect_timeout) { |
|
728
|
0 |
0 |
if (NULL != self->command_timeout) { |
|
731
|
0 |
0 |
if (self->prefer_ipv4) { |
|
734
|
0 |
0 |
else if (self->prefer_ipv6) { |
|
737
|
0 |
0 |
if (self->cloexec) { |
|
740
|
0 |
0 |
if (self->reuseaddr) { |
|
743
|
0 |
0 |
if (NULL != self->source_addr && NULL == self->path) { |
|
|
0 |
0 |
if (NULL != self->source_addr && NULL == self->path) { |
|
755
|
0 |
0 |
if (NULL != self->ssl_ctx) { |
|
756
|
0 |
0 |
if (REDIS_OK != redisInitiateSSLWithContext(&self->ac->c, self->ssl_ctx)) { |
|
757
|
0 |
0 |
SV* err = sv_2mortal(newSVpvf("%s: SSL initiation failed: %s", |
|
767
|
0 |
0 |
if (self->keepalive > 0) { |
|
770
|
0 |
0 |
if (self->tcp_user_timeout > 0) { |
|
774
|
0 |
0 |
if (REDIS_OK != redisLibevAttach(self->loop, self->ac)) { |
|
782
|
0 |
0 |
if (self->priority != 0) { |
|
788
|
0 |
0 |
if (NULL != self->push_handler) { |
|
792
|
0 |
0 |
if (self->ac->err) { |
|
838
|
0 |
0 |
if (reply->elements > 0) { |
|
840
|
0 |
0 |
for (i = 0; i < reply->elements; i++) { |
|
841
|
0 |
0 |
if (NULL != reply->element[i]) { |
|
870
|
0 |
0 |
if (cbt->skipped) { |
|
871
|
0 |
0 |
if (!cbt->persist || NULL == reply) { |
|
|
0 |
0 |
if (!cbt->persist || NULL == reply) { |
|
874
|
0 |
0 |
if (cbt->persist && NULL == reply && cbt->sub_count > 1) { |
|
|
0 |
0 |
if (cbt->persist && NULL == reply && cbt->sub_count > 1) { |
|
|
0 |
0 |
if (cbt->persist && NULL == reply && cbt->sub_count > 1) { |
|
880
|
0 |
0 |
else if (cbt->persist && reply != NULL && is_unsub_reply((redisReply*)reply)) { |
|
|
0 |
0 |
else if (cbt->persist && reply != NULL && is_unsub_reply((redisReply*)reply)) { |
|
|
0 |
0 |
else if (cbt->persist && reply != NULL && is_unsub_reply((redisReply*)reply)) { |
|
882
|
0 |
0 |
if (cbt->sub_count <= 0) { |
|
897
|
0 |
0 |
if (self == NULL) { |
|
898
|
0 |
0 |
if (NULL != cbt->cb) { |
|
900
|
0 |
0 |
sv_2mortal(newSVpv(c->errstr[0] ? c->errstr : "disconnected", 0))); |
|
904
|
0 |
0 |
if (cbt->persist && reply == NULL && cbt->sub_count > 1) { |
|
|
0 |
0 |
if (cbt->persist && reply == NULL && cbt->sub_count > 1) { |
|
|
0 |
0 |
if (cbt->persist && reply == NULL && cbt->sub_count > 1) { |
|
916
|
0 |
0 |
if (self->magic == EV_REDIS_FREED) { |
|
917
|
0 |
0 |
if (NULL != cbt->cb) { |
|
919
|
0 |
0 |
invoke_callback_error(cbt->cb, sv_2mortal(newSVpv(c->errstr[0] ? c->errstr : "disconnected", 0))); |
|
924
|
0 |
0 |
if (!cbt->persist) { |
|
935
|
0 |
0 |
if (self->magic != EV_REDIS_MAGIC) { |
|
936
|
0 |
0 |
if (NULL != cbt->cb) SvREFCNT_dec(cbt->cb); |
|
944
|
0 |
0 |
if (NULL != cbt->cb) { |
|
945
|
0 |
0 |
if (NULL == reply) { |
|
946
|
0 |
0 |
sv_err = sv_2mortal(newSVpv( |
|
956
|
0 |
0 |
PUSHMARK(SP); |
|
957
|
0 |
0 |
EXTEND(SP, 2); |
|
959
|
0 |
0 |
if (((redisReply*)reply)->type == REDIS_REPLY_ERROR) { |
|
969
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
|
0 |
0 |
if (SvTRUE(ERRSV)) { |
|
970
|
0 |
0 |
warn("EV::Redis: exception in command callback: %s", SvPV_nolen(ERRSV)); |
|
973
|
0 |
0 |
FREETMPS; |
|
988
|
0 |
0 |
if (self->magic == EV_REDIS_FREED) { |
|
989
|
0 |
0 |
if (NULL != cbt->cb) { |
|
993
|
0 |
0 |
if (!cbt->persist) { |
|
1000
|
0 |
0 |
if (cbt->skipped) { |
|
1011
|
0 |
0 |
if (cbt->persist && cbt->sub_count > 1) { |
|
|
0 |
0 |
if (cbt->persist && cbt->sub_count > 1) { |
|
1026
|
0 |
0 |
if (cbt->persist && reply != NULL && is_unsub_reply((redisReply*)reply)) { |
|
|
0 |
0 |
if (cbt->persist && reply != NULL && is_unsub_reply((redisReply*)reply)) { |
|
|
0 |
0 |
if (cbt->persist && reply != NULL && is_unsub_reply((redisReply*)reply)) { |
|
1028
|
0 |
0 |
if (cbt->sub_count <= 0) { |
|
1033
|
0 |
0 |
if (NULL != cbt->cb) SvREFCNT_dec(cbt->cb); |
|
1045
|
0 |
0 |
if (cbt->persist && NULL == reply) { |
|
|
0 |
0 |
if (cbt->persist && NULL == reply) { |
|
1046
|
0 |
0 |
if (cbt->sub_count > 1) { |
|
1051
|
0 |
0 |
if (NULL != cbt->cb) SvREFCNT_dec(cbt->cb); |
|
1059
|
0 |
0 |
if (0 == cbt->persist) { |
|
1068
|
0 |
0 |
if (NULL != cbt->cb) SvREFCNT_dec(cbt->cb); |
|
1072
|
0 |
0 |
if (reply != NULL) { |
|
1092
|
0 |
0 |
if (cbt->persist && is_unsubscribe_command(cmd)) { |
|
|
0 |
0 |
if (cbt->persist && is_unsubscribe_command(cmd)) { |
|
1102
|
0 |
0 |
if (REDIS_OK != r) { |
|
1104
|
0 |
0 |
if (!cbt->persist) self->pending_count--; |
|
1106
|
0 |
0 |
if (NULL != cbt->cb) { |
|
1107
|
0 |
0 |
invoke_callback_error(cbt->cb, sv_2mortal(newSVpv( |
|
|
0 |
0 |
invoke_callback_error(cbt->cb, sv_2mortal(newSVpv( |
|
1112
|
0 |
0 |
} else if (fn == NULL) { |
|
1116
|
0 |
0 |
if (NULL != cbt->cb) SvREFCNT_dec(cbt->cb); |
|
1133
|
0 |
0 |
if (NULL == self->ac || self->intentional_disconnect) return; |
|
|
0 |
0 |
if (NULL == self->ac || self->intentional_disconnect) return; |
|
1134
|
0 |
0 |
if (ngx_queue_empty(&self->wait_queue)) return; |
|
1135
|
0 |
0 |
if (self->max_pending > 0 && self->pending_count >= self->max_pending) return; |
|
|
0 |
0 |
if (self->max_pending > 0 && self->pending_count >= self->max_pending) return; |
|
1147
|
0 |
0 |
cbt->sub_count = wt->persist ? wt->argc - 1 : 0; |
|
1150
|
0 |
0 |
if (!cbt->persist) self->pending_count++; |
|
1165
|
0 |
24 |
I_EV_API("EV::Redis"); |
|
|
24 |
0 |
I_EV_API("EV::Redis"); |
|
|
0 |
24 |
I_EV_API("EV::Redis"); |
|
1205
|
0 |
6 |
if (self->magic != EV_REDIS_MAGIC) { |
|
1206
|
0 |
0 |
if (self->magic == EV_REDIS_FREED) { |
|
1231
|
0 |
6 |
if (PL_dirty) { |
|
1232
|
0 |
0 |
if (NULL != self->ac) { |
|
1239
|
0 |
0 |
q != ngx_queue_sentinel(&self->cb_queue); |
|
1249
|
0 |
0 |
if (NULL != self->ac_saved) { |
|
1255
|
0 |
0 |
while (!ngx_queue_empty(&self->wait_queue)) { |
|
1276
|
0 |
6 |
if (NULL != ac_to_free) { |
|
1281
|
0 |
0 |
if (ac_to_free->c.flags & REDIS_IN_CALLBACK) { |
|
1294
|
0 |
6 |
if (self->ac_saved != NULL) { |
|
1299
|
6 |
0 |
CLEAR_HANDLER(self->error_handler); |
|
1300
|
0 |
6 |
CLEAR_HANDLER(self->connect_handler); |
|
1301
|
0 |
6 |
CLEAR_HANDLER(self->disconnect_handler); |
|
1302
|
0 |
6 |
CLEAR_HANDLER(self->push_handler); |
|
1305
|
6 |
0 |
if (!self->in_wait_cleanup) { |
|
1308
|
6 |
0 |
if (!skip_cb_cleanup && !self->in_cb_cleanup) { |
|
|
6 |
0 |
if (!skip_cb_cleanup && !self->in_cb_cleanup) { |
|
1316
|
6 |
0 |
if (self->current_cb == NULL && self->callback_depth == 0) { |
|
|
6 |
0 |
if (self->current_cb == NULL && self->callback_depth == 0) { |
|
1327
|
0 |
0 |
if (NULL != self->ac) { |
|
1341
|
0 |
0 |
if (NULL == self->ac) { |
|
1354
|
0 |
0 |
if (NULL != self->ac) { |
|
1367
|
0 |
0 |
if (NULL == self->ac) { |
|
1383
|
0 |
0 |
if (NULL == self->ac) { |
|
1388
|
0 |
0 |
if (!ngx_queue_empty(&self->wait_queue)) { |
|
1405
|
0 |
0 |
if (self->ac->c.flags & REDIS_IN_CALLBACK) { |
|
1414
|
0 |
0 |
if (check_destroyed(self)) return; |
|
1421
|
0 |
0 |
RETVAL = (NULL != self->ac) ? 1 : 0; |
|
1441
|
0 |
0 |
if (NULL != timeout_ms && SvOK(timeout_ms) && NULL != self->ac && NULL != self->command_timeout) { |
|
|
0 |
0 |
if (NULL != timeout_ms && SvOK(timeout_ms) && NULL != self->ac && NULL != self->command_timeout) { |
|
|
0 |
0 |
if (NULL != timeout_ms && SvOK(timeout_ms) && NULL != self->ac && NULL != self->command_timeout) { |
|
|
0 |
0 |
if (NULL != timeout_ms && SvOK(timeout_ms) && NULL != self->ac && NULL != self->command_timeout) { |
|
1481
|
0 |
0 |
if (NULL != self->ac) { |
|
1482
|
0 |
0 |
if (NULL != self->push_handler) { |
|
1505
|
0 |
1 |
if (items < 2) { |
|
1510
|
1 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
|
|
1 |
0 |
if (SvROK(cb) && SvTYPE(SvRV(cb)) == SVt_PVCV) { |
|
1518
|
0 |
1 |
if (argc < 1) { |
|
1522
|
1 |
0 |
if (NULL == self->ac) { |
|
1523
|
1 |
0 |
if (!self->reconnect_timer_active) { |
|
1533
|
0 |
0 |
for (i = 0; i < argc; i++) { |
|
1540
|
0 |
0 |
if (NULL == self->ac || |
|
1541
|
0 |
0 |
(self->max_pending > 0 && self->pending_count >= self->max_pending)) { |
|
|
0 |
0 |
(self->max_pending > 0 && self->pending_count >= self->max_pending)) { |
|
1545
|
0 |
0 |
for (i = 0; i < argc; i++) { |
|
1567
|
0 |
0 |
cbt->sub_count = persist ? argc - 1 : 0; |
|
1570
|
0 |
0 |
if (!persist) self->pending_count++; |
|
1589
|
0 |
0 |
if (!enable) { |
|
1598
|
0 |
0 |
RETVAL = self->reconnect; |
|
1607
|
0 |
0 |
RETVAL = self->pending_count; |
|
1616
|
0 |
0 |
RETVAL = self->waiting_count; |
|
1625
|
0 |
0 |
if (NULL != limit && SvOK(limit)) { |
|
|
0 |
0 |
if (NULL != limit && SvOK(limit)) { |
|
1627
|
0 |
0 |
if (val < 0) { |
|
1638
|
0 |
0 |
if (check_destroyed(self)) XSRETURN_IV(0); |
|
1640
|
0 |
0 |
RETVAL = self->max_pending; |
|
1649
|
0 |
0 |
if (NULL != timeout_ms && SvOK(timeout_ms)) { |
|
|
0 |
0 |
if (NULL != timeout_ms && SvOK(timeout_ms)) { |
|
1665
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1668
|
0 |
0 |
RETVAL = self->resume_waiting_on_reconnect; |
|
1677
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1680
|
0 |
0 |
if (prio < -2) prio = -2; |
|
1681
|
0 |
0 |
if (prio > 2) prio = 2; |
|
1683
|
0 |
0 |
if (NULL != self->ac) { |
|
1687
|
0 |
0 |
RETVAL = self->priority; |
|
1696
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1698
|
0 |
0 |
if (interval < 0) croak("keepalive interval must be non-negative"); |
|
1699
|
0 |
0 |
if (interval > MAX_TIMEOUT_MS / 1000) croak("keepalive interval too large"); |
|
1701
|
0 |
0 |
if (NULL != self->ac && interval > 0) { |
|
|
0 |
0 |
if (NULL != self->ac && interval > 0) { |
|
1705
|
0 |
0 |
RETVAL = self->keepalive; |
|
1714
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1716
|
0 |
0 |
if (self->prefer_ipv4) self->prefer_ipv6 = 0; |
|
1718
|
0 |
0 |
RETVAL = self->prefer_ipv4; |
|
1727
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1729
|
0 |
0 |
if (self->prefer_ipv6) self->prefer_ipv4 = 0; |
|
1731
|
0 |
0 |
RETVAL = self->prefer_ipv6; |
|
1740
|
0 |
0 |
if (items > 1) { |
|
1741
|
0 |
0 |
if (NULL != self->source_addr) { |
|
1745
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1749
|
0 |
0 |
if (NULL != self->source_addr) { |
|
1762
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1767
|
0 |
0 |
RETVAL = self->tcp_user_timeout; |
|
1776
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1779
|
0 |
0 |
RETVAL = self->cloexec; |
|
1788
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
|
0 |
0 |
if (NULL != value && SvOK(value)) { |
|
1791
|
0 |
0 |
RETVAL = self->reuseaddr; |
|
1805
|
0 |
0 |
if (self->in_wait_cleanup) { |
|
1834
|
0 |
0 |
if (self->in_cb_cleanup) { |
|
1845
|
0 |
0 |
while (!ngx_queue_empty(&self->cb_queue)) { |
|
1849
|
0 |
0 |
if (cbt == self->current_cb) { |
|
1851
|
0 |
0 |
if (ngx_queue_next(q) == ngx_queue_sentinel(&self->cb_queue)) { |
|
1862
|
0 |
0 |
while (!ngx_queue_empty(&local_queue)) { |
|
1863
|
0 |
0 |
if (self->magic == EV_REDIS_FREED) { |
|
1878
|
0 |
0 |
if (!cbt->persist) self->pending_count--; |
|
1883
|
0 |
0 |
if (NULL != cbt->cb) { |
|
1904
|
0 |
4 |
RETVAL = 1; |
|
1922
|
1 |
3 |
ssl_opts.cacert_filename = (SvOK(cacert)) ? SvPV_nolen(cacert) : NULL; |
|
1923
|
1 |
3 |
ssl_opts.capath = (SvOK(capath)) ? SvPV_nolen(capath) : NULL; |
|
1924
|
1 |
3 |
ssl_opts.cert_filename = (SvOK(cert)) ? SvPV_nolen(cert) : NULL; |
|
1925
|
0 |
4 |
ssl_opts.private_key_filename = (SvOK(key)) ? SvPV_nolen(key) : NULL; |
|
1926
|
0 |
4 |
ssl_opts.server_name = (SvOK(server_name)) ? SvPV_nolen(server_name) : NULL; |
|
1930
|
0 |
4 |
if (NULL != self->ssl_ctx) { |
|
1937
|
2 |
2 |
if (NULL == self->ssl_ctx) { |