Better error logging
This commit is contained in:
parent
cfd8934779
commit
0a56f00222
4 changed files with 58 additions and 26 deletions
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
#include "mqtt.h"
|
#include "mqtt.h"
|
||||||
#include "mqtt_internal.h"
|
#include "mqtt_internal.h"
|
||||||
|
#include "packet.h"
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#include "protocol.h"
|
#include "protocol.h"
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
@ -33,7 +34,7 @@ static inline void parse_packet(MQTTHandle *handle, MQTTPacket *packet) {
|
||||||
case PacketTypeSubAck:
|
case PacketTypeSubAck:
|
||||||
case PacketTypeUnsubAck:
|
case PacketTypeUnsubAck:
|
||||||
if (!dispatch_packet(handle, packet)) {
|
if (!dispatch_packet(handle, packet)) {
|
||||||
DEBUG_LOG("Unexpected packet!");
|
DEBUG_LOG("Unexpected packet! (type: %s, packet_id: %d)", get_packet_name(packet), get_packet_id(packet));
|
||||||
disconnect(handle);
|
disconnect(handle);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
49
src/packet.c
49
src/packet.c
|
@ -662,3 +662,52 @@ Buffer *mqtt_packet_encode(MQTTPacket *packet) {
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helper functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint16_t get_packet_id(MQTTPacket *packet) {
|
||||||
|
switch(packet->packet_type) {
|
||||||
|
case PacketTypePublish:
|
||||||
|
return ((PublishPayload *)packet->payload)->packet_id;
|
||||||
|
case PacketTypePubAck:
|
||||||
|
return ((PubAckPayload *)packet->payload)->packet_id;
|
||||||
|
case PacketTypePubRec:
|
||||||
|
return ((PubRecPayload *)packet->payload)->packet_id;
|
||||||
|
case PacketTypePubRel:
|
||||||
|
return ((PubRelPayload *)packet->payload)->packet_id;
|
||||||
|
case PacketTypePubComp:
|
||||||
|
return ((PubCompPayload *)packet->payload)->packet_id;
|
||||||
|
case PacketTypeSubscribe:
|
||||||
|
return ((SubscribePayload *)packet->payload)->packet_id;
|
||||||
|
case PacketTypeSubAck:
|
||||||
|
return ((SubAckPayload *)packet->payload)->packet_id;
|
||||||
|
case PacketTypeUnsubscribe:
|
||||||
|
return ((UnsubscribePayload *)packet->payload)->packet_id;
|
||||||
|
case PacketTypeUnsubAck:
|
||||||
|
return ((UnsubAckPayload *)packet->payload)->packet_id;
|
||||||
|
default:
|
||||||
|
return 0; // no packet id in payload
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char *get_packet_name(MQTTPacket *packet) {
|
||||||
|
switch (packet->packet_type) {
|
||||||
|
case PacketTypeConnect: return "CONNECT";
|
||||||
|
case PacketTypeConnAck: return "CONNACK";
|
||||||
|
case PacketTypePublish: return "PUBLISH";
|
||||||
|
case PacketTypePubAck: return "PUBACK";
|
||||||
|
case PacketTypePubRec: return "PUBREC";
|
||||||
|
case PacketTypePubRel: return "PUBREL";
|
||||||
|
case PacketTypePubComp: return "PUBCOMP";
|
||||||
|
case PacketTypeSubscribe: return "SUBSCRIBE";
|
||||||
|
case PacketTypeSubAck: return "SUBACK";
|
||||||
|
case PacketTypeUnsubscribe: return "UNSUBSCRIBE";
|
||||||
|
case PacketTypeUnsubAck: return "UNSUBACK";
|
||||||
|
case PacketTypePingReq: return "PINGREQ";
|
||||||
|
case PacketTypePingResp: return "PINGRESP";
|
||||||
|
case PacketTypeDisconnect: return "DISCONNECT";
|
||||||
|
}
|
||||||
|
return "[UNKNOWN]";
|
||||||
|
}
|
||||||
|
|
|
@ -127,4 +127,11 @@ void free_MQTTPacket(MQTTPacket *packet);
|
||||||
Buffer *mqtt_packet_encode(MQTTPacket *packet);
|
Buffer *mqtt_packet_encode(MQTTPacket *packet);
|
||||||
MQTTPacket *allocate_MQTTPacket(MQTTControlPacketType type);
|
MQTTPacket *allocate_MQTTPacket(MQTTControlPacketType type);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Utility
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint16_t get_packet_id(MQTTPacket *packet);
|
||||||
|
char *get_packet_name(MQTTPacket *packet);
|
||||||
|
|
||||||
#endif /* packet_h__included */
|
#endif /* packet_h__included */
|
||||||
|
|
|
@ -31,31 +31,6 @@ void expect_packet(MQTTHandle *handle, MQTTControlPacketType type, uint16_t pack
|
||||||
// dump_expected(handle);
|
// dump_expected(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint16_t get_packet_id(MQTTPacket *packet) {
|
|
||||||
switch(packet->packet_type) {
|
|
||||||
case PacketTypePublish:
|
|
||||||
return ((PublishPayload *)packet->payload)->packet_id;
|
|
||||||
case PacketTypePubAck:
|
|
||||||
return ((PubAckPayload *)packet->payload)->packet_id;
|
|
||||||
case PacketTypePubRec:
|
|
||||||
return ((PubRecPayload *)packet->payload)->packet_id;
|
|
||||||
case PacketTypePubRel:
|
|
||||||
return ((PubRelPayload *)packet->payload)->packet_id;
|
|
||||||
case PacketTypePubComp:
|
|
||||||
return ((PubCompPayload *)packet->payload)->packet_id;
|
|
||||||
case PacketTypeSubscribe:
|
|
||||||
return ((SubscribePayload *)packet->payload)->packet_id;
|
|
||||||
case PacketTypeSubAck:
|
|
||||||
return ((SubAckPayload *)packet->payload)->packet_id;
|
|
||||||
case PacketTypeUnsubscribe:
|
|
||||||
return ((UnsubscribePayload *)packet->payload)->packet_id;
|
|
||||||
case PacketTypeUnsubAck:
|
|
||||||
return ((UnsubAckPayload *)packet->payload)->packet_id;
|
|
||||||
default:
|
|
||||||
return 0; // no packet id in payload
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void remove_from_queue(MQTTHandle *handle, MQTTCallbackQueueItem *remove) {
|
void remove_from_queue(MQTTHandle *handle, MQTTCallbackQueueItem *remove) {
|
||||||
MQTTCallbackQueueItem *item = handle->queue.pending;
|
MQTTCallbackQueueItem *item = handle->queue.pending;
|
||||||
MQTTCallbackQueueItem *prev_item = NULL;
|
MQTTCallbackQueueItem *prev_item = NULL;
|
||||||
|
|
Loading…
Reference in a new issue