diff --git a/src/main/java/redis/clients/jedis/Jedis.java b/src/main/java/redis/clients/jedis/Jedis.java index 7ee1bce..d0b56e1 100644 --- a/src/main/java/redis/clients/jedis/Jedis.java +++ b/src/main/java/redis/clients/jedis/Jedis.java @@ -2023,18 +2023,21 @@ public class Jedis extends BinaryJedis implements JedisCommands { } public void subscribe(JedisPubSub jedisPubSub, String... channels) { + runChecks(); client.setTimeoutInfinite(); jedisPubSub.proceed(client, channels); client.rollbackTimeout(); } public Long publish(String channel, String message) { + runChecks(); client.publish(channel, message); return client.getIntegerReply(); } public void psubscribe(JedisPubSub jedisPubSub, String... patterns) { - client.setTimeoutInfinite(); + runChecks(); + client.setTimeoutInfinite(); jedisPubSub.proceedWithPatterns(client, patterns); client.rollbackTimeout(); } diff --git a/src/test/java/redis/clients/jedis/tests/commands/PublishSubscribeCommandsTest.java b/src/test/java/redis/clients/jedis/tests/commands/PublishSubscribeCommandsTest.java index db30dfa..c84cf4e 100644 --- a/src/test/java/redis/clients/jedis/tests/commands/PublishSubscribeCommandsTest.java +++ b/src/test/java/redis/clients/jedis/tests/commands/PublishSubscribeCommandsTest.java @@ -6,6 +6,7 @@ import java.net.UnknownHostException; import org.junit.Test; import redis.clients.jedis.Jedis; +import redis.clients.jedis.JedisException; import redis.clients.jedis.JedisPubSub; public class PublishSubscribeCommandsTest extends JedisCommandTestBase { @@ -232,4 +233,30 @@ public class PublishSubscribeCommandsTest extends JedisCommandTestBase { jedis.subscribe(pubsub, "foo"); t.join(); } + + @Test + public void subscribeWithoutConnecting() { + try { + Jedis jedis = new Jedis(hnp.host, hnp.port); + jedis.subscribe(new JedisPubSub() { + public void onMessage(String channel, String message) { + } + public void onPMessage(String pattern, String channel, + String message) { + } + public void onSubscribe(String channel, int subscribedChannels) { + } + public void onUnsubscribe(String channel, int subscribedChannels) { + } + public void onPUnsubscribe(String pattern, int subscribedChannels) { + } + public void onPSubscribe(String pattern, int subscribedChannels) { + } + }, "foo"); + } catch(NullPointerException ex) { + fail(); + } catch(JedisException ex) { + // this is OK because we are not sending AUTH command + } + } } \ No newline at end of file