hiredis-client 0.22.2 → 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/ext/redis_client/hiredis/hiredis_connection.c +23 -49
 - metadata +5 -10
 - data/hiredis-client.gemspec +0 -33
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 119463fcaf132ff2c8f57dee7ea75253b56f7b1550c61a8d2d533655054459df
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 0e0ee26428dbad181242270ffa21bbf6f1f48071737af9d5f47896ad082908bb
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 394d49dbed0c4479237125656b4e8c75fe6b35189fb3e28279f18cd05873e91a1cea88185834a77065be750d4edc8c0c7f071dd0daae51471f5cbacbfb666362
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 9ee93b3a4815bcdf51f07991ffecb3a00c5db4bd699c620f1cf53221975fbde8b33a03c20216be2b07c3a2952176cc356db7d1618c1cc35ee1829e01bbd311af
         
     | 
| 
         @@ -321,6 +321,7 @@ typedef struct { 
     | 
|
| 
       321 
321 
     | 
    
         
             
                struct timeval connect_timeout;
         
     | 
| 
       322 
322 
     | 
    
         
             
                struct timeval read_timeout;
         
     | 
| 
       323 
323 
     | 
    
         
             
                struct timeval write_timeout;
         
     | 
| 
      
 324 
     | 
    
         
            +
                hiredis_reader_state_t reader_state;
         
     | 
| 
       324 
325 
     | 
    
         
             
            } hiredis_connection_t;
         
     | 
| 
       325 
326 
     | 
    
         | 
| 
       326 
327 
     | 
    
         
             
            static void hiredis_connection_free(void *ptr) {
         
     | 
| 
         @@ -719,74 +720,47 @@ static VALUE hiredis_flush(VALUE self) { 
     | 
|
| 
       719 
720 
     | 
    
         | 
| 
       720 
721 
     | 
    
         
             
            static int hiredis_read_internal(hiredis_connection_t *connection, VALUE *reply) {
         
     | 
| 
       721 
722 
     | 
    
         
             
                void *redis_reply = NULL;
         
     | 
| 
       722 
     | 
    
         
            -
                int wdone = 0;
         
     | 
| 
       723 
723 
     | 
    
         | 
| 
       724 
     | 
    
         
            -
                // This  
     | 
| 
      
 724 
     | 
    
         
            +
                // This array being on the stack, the GC won't move nor collect it.
         
     | 
| 
       725 
725 
     | 
    
         
             
                // We use that to avoid having to have a `mark` function with write barriers.
         
     | 
| 
       726 
726 
     | 
    
         
             
                // Not that it would be too hard, but if we mark the response objects, we'll likely end up
         
     | 
| 
       727 
727 
     | 
    
         
             
                // promoting them to the old generation which isn't desirable.
         
     | 
| 
       728 
728 
     | 
    
         
             
                VALUE stack = rb_ary_new();
         
     | 
| 
       729 
     | 
    
         
            -
                 
     | 
| 
       730 
     | 
    
         
            -
             
     | 
| 
       731 
     | 
    
         
            -
             
     | 
| 
       732 
     | 
    
         
            -
                };
         
     | 
| 
       733 
     | 
    
         
            -
                connection->context->reader->privdata = &reader_state;
         
     | 
| 
      
 729 
     | 
    
         
            +
                connection->reader_state.stack = stack;
         
     | 
| 
      
 730 
     | 
    
         
            +
                connection->reader_state.task_index = &connection->context->reader->ridx;
         
     | 
| 
      
 731 
     | 
    
         
            +
                connection->context->reader->privdata = &connection->reader_state;
         
     | 
| 
       734 
732 
     | 
    
         | 
| 
       735 
733 
     | 
    
         
             
                /* Try to read pending replies */
         
     | 
| 
       736 
734 
     | 
    
         
             
                if (redisGetReplyFromReader(connection->context, &redis_reply) == REDIS_ERR) {
         
     | 
| 
       737 
735 
     | 
    
         
             
                    return HIREDIS_FATAL_CONNECTION_ERROR; // Protocol error
         
     | 
| 
       738 
736 
     | 
    
         
             
                }
         
     | 
| 
       739 
737 
     | 
    
         | 
| 
       740 
     | 
    
         
            -
                 
     | 
| 
       741 
     | 
    
         
            -
             
     | 
| 
       742 
     | 
    
         
            -
                     
     | 
| 
       743 
     | 
    
         
            -
                        errno = 0;
         
     | 
| 
       744 
     | 
    
         
            -
             
     | 
| 
       745 
     | 
    
         
            -
                        if (hiredis_buffer_write_nogvl(connection->context, &wdone) == REDIS_ERR) {
         
     | 
| 
       746 
     | 
    
         
            -
                            return HIREDIS_FATAL_CONNECTION_ERROR; // Socket error
         
     | 
| 
       747 
     | 
    
         
            -
                        }
         
     | 
| 
       748 
     | 
    
         
            -
             
     | 
| 
       749 
     | 
    
         
            -
                        if (errno == EAGAIN) {
         
     | 
| 
       750 
     | 
    
         
            -
                            int writable = 0;
         
     | 
| 
       751 
     | 
    
         
            -
             
     | 
| 
       752 
     | 
    
         
            -
                            if (hiredis_wait_writable(connection->context->fd, &connection->write_timeout, &writable) < 0) {
         
     | 
| 
       753 
     | 
    
         
            -
                                return HIREDIS_CLIENT_TIMEOUT;
         
     | 
| 
       754 
     | 
    
         
            -
                            }
         
     | 
| 
      
 738 
     | 
    
         
            +
                /* Read until there is a full reply */
         
     | 
| 
      
 739 
     | 
    
         
            +
                while (redis_reply == NULL) {
         
     | 
| 
      
 740 
     | 
    
         
            +
                    errno = 0;
         
     | 
| 
       755 
741 
     | 
    
         | 
| 
       756 
     | 
    
         
            -
             
     | 
| 
       757 
     | 
    
         
            -
             
     | 
| 
       758 
     | 
    
         
            -
                                return HIREDIS_CLIENT_TIMEOUT;
         
     | 
| 
       759 
     | 
    
         
            -
                            }
         
     | 
| 
       760 
     | 
    
         
            -
                        }
         
     | 
| 
      
 742 
     | 
    
         
            +
                    if (hiredis_buffer_read_nogvl(connection->context) == REDIS_ERR) {
         
     | 
| 
      
 743 
     | 
    
         
            +
                        return HIREDIS_FATAL_CONNECTION_ERROR; // Socket error
         
     | 
| 
       761 
744 
     | 
    
         
             
                    }
         
     | 
| 
       762 
745 
     | 
    
         | 
| 
       763 
     | 
    
         
            -
                     
     | 
| 
       764 
     | 
    
         
            -
             
     | 
| 
       765 
     | 
    
         
            -
                        errno = 0;
         
     | 
| 
      
 746 
     | 
    
         
            +
                    if (errno == EAGAIN) {
         
     | 
| 
      
 747 
     | 
    
         
            +
                        int readable = 0;
         
     | 
| 
       766 
748 
     | 
    
         | 
| 
       767 
     | 
    
         
            -
                        if ( 
     | 
| 
       768 
     | 
    
         
            -
                            return  
     | 
| 
      
 749 
     | 
    
         
            +
                        if (hiredis_wait_readable(connection->context->fd, &connection->read_timeout, &readable) < 0) {
         
     | 
| 
      
 750 
     | 
    
         
            +
                            return HIREDIS_CLIENT_TIMEOUT;
         
     | 
| 
       769 
751 
     | 
    
         
             
                        }
         
     | 
| 
       770 
752 
     | 
    
         | 
| 
       771 
     | 
    
         
            -
                        if ( 
     | 
| 
       772 
     | 
    
         
            -
                             
     | 
| 
       773 
     | 
    
         
            -
             
     | 
| 
       774 
     | 
    
         
            -
                            if (hiredis_wait_readable(connection->context->fd, &connection->read_timeout, &readable) < 0) {
         
     | 
| 
       775 
     | 
    
         
            -
                                return HIREDIS_CLIENT_TIMEOUT;
         
     | 
| 
       776 
     | 
    
         
            -
                            }
         
     | 
| 
       777 
     | 
    
         
            -
             
     | 
| 
       778 
     | 
    
         
            -
                            if (!readable) {
         
     | 
| 
       779 
     | 
    
         
            -
                                errno = EAGAIN;
         
     | 
| 
       780 
     | 
    
         
            -
                                return HIREDIS_CLIENT_TIMEOUT;
         
     | 
| 
       781 
     | 
    
         
            -
                            }
         
     | 
| 
       782 
     | 
    
         
            -
             
     | 
| 
       783 
     | 
    
         
            -
                            /* Retry */
         
     | 
| 
       784 
     | 
    
         
            -
                            continue;
         
     | 
| 
      
 753 
     | 
    
         
            +
                        if (!readable) {
         
     | 
| 
      
 754 
     | 
    
         
            +
                            errno = EAGAIN;
         
     | 
| 
      
 755 
     | 
    
         
            +
                            return HIREDIS_CLIENT_TIMEOUT;
         
     | 
| 
       785 
756 
     | 
    
         
             
                        }
         
     | 
| 
       786 
757 
     | 
    
         | 
| 
       787 
     | 
    
         
            -
                         
     | 
| 
       788 
     | 
    
         
            -
             
     | 
| 
       789 
     | 
    
         
            -
             
     | 
| 
      
 758 
     | 
    
         
            +
                        /* Retry */
         
     | 
| 
      
 759 
     | 
    
         
            +
                        continue;
         
     | 
| 
      
 760 
     | 
    
         
            +
                    }
         
     | 
| 
      
 761 
     | 
    
         
            +
             
     | 
| 
      
 762 
     | 
    
         
            +
                    if (redisGetReplyFromReader(connection->context, &redis_reply) == REDIS_ERR) {
         
     | 
| 
      
 763 
     | 
    
         
            +
                        return HIREDIS_FATAL_CONNECTION_ERROR; // Protocol error
         
     | 
| 
       790 
764 
     | 
    
         
             
                    }
         
     | 
| 
       791 
765 
     | 
    
         
             
                }
         
     | 
| 
       792 
766 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: hiredis-client
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.23.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Jean Boussier
         
     | 
| 
       8 
     | 
    
         
            -
            autorequire:
         
     | 
| 
       9 
8 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
9 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 10 
     | 
    
         
            +
            date: 2025-01-12 00:00:00.000000000 Z
         
     | 
| 
       12 
11 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
12 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
13 
     | 
    
         
             
              name: redis-client
         
     | 
| 
         @@ -16,15 +15,14 @@ dependencies: 
     | 
|
| 
       16 
15 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
16 
     | 
    
         
             
                - - '='
         
     | 
| 
       18 
17 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
     | 
    
         
            -
                    version: 0. 
     | 
| 
      
 18 
     | 
    
         
            +
                    version: 0.23.1
         
     | 
| 
       20 
19 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       21 
20 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
21 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
22 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
23 
     | 
    
         
             
                - - '='
         
     | 
| 
       25 
24 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
     | 
    
         
            -
                    version: 0. 
     | 
| 
       27 
     | 
    
         
            -
            description:
         
     | 
| 
      
 25 
     | 
    
         
            +
                    version: 0.23.1
         
     | 
| 
       28 
26 
     | 
    
         
             
            email:
         
     | 
| 
       29 
27 
     | 
    
         
             
            - jean.boussier@gmail.com
         
     | 
| 
       30 
28 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -79,7 +77,6 @@ files: 
     | 
|
| 
       79 
77 
     | 
    
         
             
            - ext/redis_client/hiredis/vendor/test.c
         
     | 
| 
       80 
78 
     | 
    
         
             
            - ext/redis_client/hiredis/vendor/test.sh
         
     | 
| 
       81 
79 
     | 
    
         
             
            - ext/redis_client/hiredis/vendor/win32.h
         
     | 
| 
       82 
     | 
    
         
            -
            - hiredis-client.gemspec
         
     | 
| 
       83 
80 
     | 
    
         
             
            - lib/hiredis-client.rb
         
     | 
| 
       84 
81 
     | 
    
         
             
            - lib/redis_client/hiredis_connection.rb
         
     | 
| 
       85 
82 
     | 
    
         
             
            homepage: https://github.com/redis-rb/redis-client
         
     | 
| 
         @@ -90,7 +87,6 @@ metadata: 
     | 
|
| 
       90 
87 
     | 
    
         
             
              homepage_uri: https://github.com/redis-rb/redis-client
         
     | 
| 
       91 
88 
     | 
    
         
             
              source_code_uri: https://github.com/redis-rb/redis-client
         
     | 
| 
       92 
89 
     | 
    
         
             
              changelog_uri: https://github.com/redis-rb/redis-client/blob/master/CHANGELOG.md
         
     | 
| 
       93 
     | 
    
         
            -
            post_install_message:
         
     | 
| 
       94 
90 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       95 
91 
     | 
    
         
             
            require_paths:
         
     | 
| 
       96 
92 
     | 
    
         
             
            - lib
         
     | 
| 
         @@ -105,8 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       105 
101 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       106 
102 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       107 
103 
     | 
    
         
             
            requirements: []
         
     | 
| 
       108 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
       109 
     | 
    
         
            -
            signing_key:
         
     | 
| 
      
 104 
     | 
    
         
            +
            rubygems_version: 3.6.2
         
     | 
| 
       110 
105 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       111 
106 
     | 
    
         
             
            summary: Hiredis binding for redis-client
         
     | 
| 
       112 
107 
     | 
    
         
             
            test_files: []
         
     | 
    
        data/hiredis-client.gemspec
    DELETED
    
    | 
         @@ -1,33 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # frozen_string_literal: true
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require_relative "../lib/redis_client/version"
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            Gem::Specification.new do |spec|
         
     | 
| 
       6 
     | 
    
         
            -
              spec.name = "hiredis-client"
         
     | 
| 
       7 
     | 
    
         
            -
              spec.version = RedisClient::VERSION
         
     | 
| 
       8 
     | 
    
         
            -
              spec.authors = ["Jean Boussier"]
         
     | 
| 
       9 
     | 
    
         
            -
              spec.email = ["jean.boussier@gmail.com"]
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              spec.summary = "Hiredis binding for redis-client"
         
     | 
| 
       12 
     | 
    
         
            -
              spec.homepage = "https://github.com/redis-rb/redis-client"
         
     | 
| 
       13 
     | 
    
         
            -
              spec.license = "MIT"
         
     | 
| 
       14 
     | 
    
         
            -
              spec.required_ruby_version = ">= 2.6.0"
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
              spec.metadata["allowed_push_host"] = "https://rubygems.org"
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
              spec.metadata["homepage_uri"] = spec.homepage
         
     | 
| 
       19 
     | 
    
         
            -
              spec.metadata["source_code_uri"] = spec.homepage
         
     | 
| 
       20 
     | 
    
         
            -
              spec.metadata["changelog_uri"] = File.join(spec.homepage, "blob/master/CHANGELOG.md")
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              # Specify which files should be added to the gem when it is released.
         
     | 
| 
       23 
     | 
    
         
            -
              # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
         
     | 
| 
       24 
     | 
    
         
            -
              spec.files = Dir.chdir(File.expand_path(__dir__)) do
         
     | 
| 
       25 
     | 
    
         
            -
                `git ls-files -z`.split("\x0").reject do |f|
         
     | 
| 
       26 
     | 
    
         
            -
                  (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features|benchmark)/|\.(?:git|rubocop))})
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
              end
         
     | 
| 
       29 
     | 
    
         
            -
              spec.require_paths = ["lib"]
         
     | 
| 
       30 
     | 
    
         
            -
              spec.extensions = ["ext/redis_client/hiredis/extconf.rb"]
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
              spec.add_runtime_dependency "redis-client", RedisClient::VERSION
         
     | 
| 
       33 
     | 
    
         
            -
            end
         
     |