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_internal.h"
|
||||
#include "packet.h"
|
||||
#include "platform.h"
|
||||
#include "protocol.h"
|
||||
#include "debug.h"
|
||||
|
@ -33,7 +34,7 @@ static inline void parse_packet(MQTTHandle *handle, MQTTPacket *packet) {
|
|||
case PacketTypeSubAck:
|
||||
case PacketTypeUnsubAck:
|
||||
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);
|
||||
}
|
||||
break;
|
||||
|
|
49
src/packet.c
49
src/packet.c
|
@ -662,3 +662,52 @@ Buffer *mqtt_packet_encode(MQTTPacket *packet) {
|
|||
|
||||
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);
|
||||
MQTTPacket *allocate_MQTTPacket(MQTTControlPacketType type);
|
||||
|
||||
/*
|
||||
* Utility
|
||||
*/
|
||||
|
||||
uint16_t get_packet_id(MQTTPacket *packet);
|
||||
char *get_packet_name(MQTTPacket *packet);
|
||||
|
||||
#endif /* packet_h__included */
|
||||
|
|
|
@ -31,31 +31,6 @@ void expect_packet(MQTTHandle *handle, MQTTControlPacketType type, uint16_t pack
|
|||
// 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) {
|
||||
MQTTCallbackQueueItem *item = handle->queue.pending;
|
||||
MQTTCallbackQueueItem *prev_item = NULL;
|
||||
|
|
Loading…
Reference in a new issue