diff options
author | Pavlo Yatsukhnenko <yatsukhnenko@gmail.com> | 2020-05-27 17:39:33 +0300 |
---|---|---|
committer | Pavlo Yatsukhnenko <yatsukhnenko@gmail.com> | 2020-06-02 17:38:12 +0300 |
commit | b067129678264fc1c5c0f611ce1b192e05c14669 (patch) | |
tree | ce58b1efd08c14d84af94453df1d40f36568cbb6 /library.c | |
parent | f9c7bb5788c39614c23e3bb9ec42ec8d6d5bbaa1 (diff) |
Issue #1600
Ssl context options in Redis::connect
Diffstat (limited to 'library.c')
-rw-r--r-- | library.c | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -1921,7 +1921,7 @@ PHP_REDIS_API int redis_sock_connect(RedisSock *redis_sock) redis_sock->stream = php_stream_xport_create(host, host_len, 0, STREAM_XPORT_CLIENT | STREAM_XPORT_CONNECT, persistent_id ? ZSTR_VAL(persistent_id) : NULL, - tv_ptr, NULL, &estr, &err); + tv_ptr, redis_sock->stream_ctx, &estr, &err); if (persistent_id) { zend_string_release(persistent_id); @@ -2043,6 +2043,24 @@ redis_sock_set_err(RedisSock *redis_sock, const char *msg, int msg_len) } } +PHP_REDIS_API int +redis_sock_set_stream_context(RedisSock *redis_sock, zval *options) +{ + zend_string *zkey; + zval *z_ele; + + if (!redis_sock || Z_TYPE_P(options) != IS_ARRAY) { + return FAILURE; + } else if (!redis_sock->stream_ctx) { + redis_sock->stream_ctx = php_stream_context_alloc(); + } + ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(options), zkey, z_ele) { + php_stream_context_set_option(redis_sock->stream_ctx, "ssl", ZSTR_VAL(zkey), z_ele); + } ZEND_HASH_FOREACH_END(); + + return SUCCESS; +} + /** * redis_sock_read_multibulk_reply */ |