Skip to content

Commit 7d76b42

Browse files
authored
Fix the auth data is NPE error (#1531)
1 parent e78bcfa commit 7d76b42

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

mqtt-broker/src/main/java/io/streamnative/pulsar/handlers/mqtt/broker/channel/MQTTServerCnx.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313
*/
1414
package io.streamnative.pulsar.handlers.mqtt.broker.channel;
1515

16+
import static io.streamnative.pulsar.handlers.mqtt.common.Constants.AUTH_DATA_ATTRIBUTE_KEY;
1617
import io.netty.channel.ChannelHandlerContext;
1718
import io.streamnative.pulsar.handlers.mqtt.broker.impl.consumer.MQTTConsumer;
1819
import java.util.Optional;
1920
import java.util.concurrent.CompletableFuture;
2021
import lombok.extern.slf4j.Slf4j;
2122
import org.apache.pulsar.broker.PulsarService;
23+
import org.apache.pulsar.broker.authentication.AuthenticationDataSource;
2224
import org.apache.pulsar.broker.loadbalance.extensions.data.BrokerLookupData;
2325
import org.apache.pulsar.broker.service.Consumer;
2426
import org.apache.pulsar.broker.service.ServerCnx;
@@ -65,4 +67,9 @@ private void safelyRemoveConsumer(Consumer consumer) {
6567
});
6668
}
6769
}
70+
71+
@Override
72+
public AuthenticationDataSource getAuthenticationData() {
73+
return ctx.channel().attr(AUTH_DATA_ATTRIBUTE_KEY).get();
74+
}
6875
}

mqtt-common/src/main/java/io/streamnative/pulsar/handlers/mqtt/common/Connection.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import static io.streamnative.pulsar.handlers.mqtt.common.Connection.ConnectionState.CONNECT_ACK;
1717
import static io.streamnative.pulsar.handlers.mqtt.common.Connection.ConnectionState.DISCONNECTED;
1818
import static io.streamnative.pulsar.handlers.mqtt.common.Connection.ConnectionState.ESTABLISHED;
19+
import static io.streamnative.pulsar.handlers.mqtt.common.Constants.AUTH_DATA_ATTRIBUTE_KEY;
1920
import static io.streamnative.pulsar.handlers.mqtt.common.utils.MqttMessageUtils.getAuthMethod;
2021
import static io.streamnative.pulsar.handlers.mqtt.common.utils.NettyUtils.ATTR_KEY_CONNECTION;
2122
import static java.util.concurrent.atomic.AtomicReferenceFieldUpdater.newUpdater;
@@ -101,6 +102,7 @@ public class Connection {
101102

102103
static ChannelException channelInactiveException = new ChannelException("Channel is inactive");
103104

105+
104106
Connection(ConnectionBuilder builder) {
105107
this.clientId = builder.clientId;
106108
this.protocolVersion = builder.protocolVersion;
@@ -116,6 +118,7 @@ public class Connection {
116118
this.processor = builder.processor;
117119
this.fromProxy = builder.fromProxy;
118120
this.authData = builder.authData;
121+
this.channel.attr(AUTH_DATA_ATTRIBUTE_KEY).set(authData);
119122
this.addIdleStateHandler();
120123
this.manager.addConnection(this);
121124
this.topicAliasManager = new TopicAliasManager(clientRestrictions.getTopicAliasMaximum());
@@ -162,6 +165,7 @@ public CompletableFuture<Void> sendAck(MqttAck mqttAck) {
162165

163166
public void updateAuthData(AuthenticationDataSource authData) {
164167
this.authData = authData;
168+
this.channel.attr(AUTH_DATA_ATTRIBUTE_KEY).set(authData);
165169
}
166170

167171
public CompletableFuture<Void> sendAckThenClose(MqttAck mqttAck) {

mqtt-common/src/main/java/io/streamnative/pulsar/handlers/mqtt/common/Constants.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
*/
1414
package io.streamnative.pulsar.handlers.mqtt.common;
1515

16+
import io.netty.util.AttributeKey;
17+
import org.apache.pulsar.broker.authentication.AuthenticationDataSource;
18+
1619
/**
1720
* Server constants keeper.
1821
*/
@@ -47,6 +50,9 @@ public final class Constants {
4750

4851
public static final String MQTT_SUB_PROTOCOL_CSV_LIST = "mqtt, mqttv3.1, mqttv3.1.1, mqttv5.0";
4952

53+
public static final AttributeKey<AuthenticationDataSource> AUTH_DATA_ATTRIBUTE_KEY =
54+
AttributeKey.valueOf("authData");
55+
5056
private Constants() {
5157
}
5258
}

0 commit comments

Comments
 (0)