Lines Matching refs:par

218 lws_mqtt_pconsume(lws_mqtt_parser_t *par, int consumed)
220 par->consumed += (unsigned int)consumed;
222 if (par->consumed > par->props_len)
227 if (par->consumed < par->props_len) {
228 par->state = LMQCPP_PROP_ID_VBI;
234 if ((map_flags[ctl_pkt_type(par)] & LMQCP_LUT_FLAG_PAYLOAD) &&
237 (ctl_pkt_type(par) != LMQCP_PUBLISH ||
238 (par->packet_type_flags & 6))) {
239 par->state = LMQCPP_PAYLOAD;
243 par->state = LMQCPP_IDLE;
526 _lws_mqtt_rx_parser(struct lws *wsi, lws_mqtt_parser_t *par,
532 if (par->flag_pending_send_reason_close)
543 lwsl_debug("%s: %d, len = %d\n", __func__, par->state, (int)len);
544 switch (par->state) {
546 par->packet_type_flags = *buf++;
555 par->packet_type_flags >> 4 != LMQCP_STOC_CONNACK) {
562 n = map_flags[par->packet_type_flags >> 4];
569 ((par->packet_type_flags & 0x0f) != (n & 0x0f))) {
572 par->packet_type_flags, n, (int)len + 1);
578 __func__, par->packet_type_flags >> 4,
579 par->packet_type_flags & 0xf);
583 memset(par->props_seen, 0, sizeof(par->props_seen));
584 par->state = par->packet_type_flags & 0xf0;
589 par->state = LMQCPP_CONNECT_REMAINING_LEN_VBI;
590 lws_mqtt_vbi_init(&par->vbit);
594 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
598 par->cpkt_remlen = par->vbit.value;
599 n = map_flags[ctl_pkt_type(par)];
600 lws_mqtt_str_init(&par->s_temp, par->temp,
601 sizeof(par->temp), 0);
602 par->state = LMQCPP_CONNECT_VH_PNAME;
611 switch (lws_mqtt_str_parse(&par->s_temp, &buf, &len)) {
615 if (par->s_temp.len != 4 ||
616 memcmp(par->s_temp.buf, "MQTT",
617 par->s_temp.len)) {
619 __func__, par->s_temp.len,
620 par->s_temp.buf);
623 par->state = LMQCPP_CONNECT_VH_PVERSION;
632 par->conn_protocol_version = *buf++;
634 if (par->conn_protocol_version != 5) {
636 __func__, par->conn_protocol_version);
639 par->state = LMQCPP_CONNECT_VH_FLAGS;
643 par->cpkt_flags = *buf++;
645 if (par->cpkt_flags & 1) {
651 par->reason = LMQCP_REASON_MALFORMED_PACKET;
658 lws_mqtt_2byte_init(&par->vbit);
659 par->state = LMQCPP_CONNECT_VH_KEEPALIVE;
663 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
667 par->keepalive = (uint16_t)par->vbit.value;
668 lws_mqtt_vbi_init(&par->vbit);
669 par->state = LMQCPP_CONNECT_VH_PROPERTIES_VBI_LEN;
685 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
690 par->consumed = 0;
691 par->props_len = par->vbit.value;
692 lws_mqtt_vbi_init(&par->vbit);
693 par->state = LMQCPP_PROP_ID_VBI;
704 lws_mqtt_vbi_init(&par->vbit);
705 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
709 par->cpkt_remlen = par->vbit.value;
711 __func__, (int)par->cpkt_remlen);
712 if (par->cpkt_remlen < 2)
714 par->state = LMQCPP_PUBREC_VH_PKT_ID;
728 par->cpkt_id = lws_ser_ru16be(buf);
729 wsi->mqtt->ack_pkt_id = par->cpkt_id;
732 par->cpkt_remlen -= 2;
733 par->n = 0;
740 lws_mqtt_vbi_init(&par->vbit);
741 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
745 par->cpkt_remlen = par->vbit.value;
747 __func__, (int)par->cpkt_remlen);
748 if (par->cpkt_remlen < 2)
750 par->state = LMQCPP_PUBREL_VH_PKT_ID;
764 par->cpkt_id = lws_ser_ru16be(buf);
765 wsi->mqtt->ack_pkt_id = par->cpkt_id;
768 par->cpkt_remlen -= 2;
769 par->n = 0;
776 lws_mqtt_vbi_init(&par->vbit);
777 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
781 par->cpkt_remlen = par->vbit.value;
783 __func__, (int)par->cpkt_remlen);
784 if (par->cpkt_remlen < 2)
786 par->state = LMQCPP_PUBCOMP_VH_PKT_ID;
800 par->cpkt_id = lws_ser_ru16be(buf);
801 wsi->mqtt->ack_pkt_id = par->cpkt_id;
804 par->cpkt_remlen -= 2;
805 par->n = 0;
816 par->state = LMQCPP_PUBLISH_REMAINING_LEN_VBI;
817 lws_mqtt_vbi_init(&par->vbit);
820 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
824 par->cpkt_remlen = par->vbit.value;
826 __func__, (int)par->cpkt_remlen);
828 par->state = LMQCPP_PUBLISH_VH_TOPIC;
846 par->n = lws_ser_ru16be(buf);
850 if (len < par->n) {/* the way this is written... */
856 if (par->n == 0) {
858 par->reason = LMQCP_REASON_MALFORMED_PACKET;
862 __func__, (int)par->n);
870 pub->topic_len = (uint16_t)par->n;
884 ((par->packet_type_flags >> 1) & 0x3);
888 pub->payload_len = par->cpkt_remlen -
893 par->state = LMQCPP_PAYLOAD;
900 par->state = LMQCPP_PUBLISH_VH_PKT_ID;
903 par->reason = LMQCP_REASON_MALFORMED_PACKET;
920 par->cpkt_id = lws_ser_ru16be(buf);
923 wsi->mqtt->peer_ack_pkt_id = par->cpkt_id;
925 __func__, (int)par->cpkt_id);
926 par->state = LMQCPP_PAYLOAD;
928 pub->payload_len = par->cpkt_remlen -
957 lws_mqtt_vbi_init(&par->vbit);
958 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
962 par->cpkt_remlen = par->vbit.value;
964 __func__, (int)par->cpkt_remlen);
965 if (par->cpkt_remlen != 2)
968 par->state = LMQCPP_CONNACK_VH_FLAGS;
979 par->cpkt_flags = *buf++;
982 if (par->cpkt_flags & ~LMQCFT_SESSION_PRESENT) {
988 par->reason = LMQCP_REASON_MALFORMED_PACKET;
1011 (par->cpkt_flags & LMQCFT_SESSION_PRESENT))
1014 wsi->mqtt->session_resumed = ((unsigned int)par->cpkt_flags &
1018 par->state = LMQCPP_CONNACK_VH_RETURN_CODE;
1022 par->conn_rc = *buf++;
1029 switch (par->conn_rc) {
1037 par->reason = LMQCP_REASON_UNSUPPORTED_PROTOCOL +
1038 par->conn_rc - 1;
1055 lws_mqtt_vbi_init(&par->vbit);
1056 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
1060 par->cpkt_remlen = par->vbit.value;
1062 __func__, (int)par->cpkt_remlen);
1063 if (par->cpkt_remlen <= 2)
1065 par->state = LMQCPP_SUBACK_VH_PKT_ID;
1080 par->cpkt_id = lws_ser_ru16be(buf);
1081 wsi->mqtt->ack_pkt_id = par->cpkt_id;
1084 par->cpkt_remlen -= 2;
1085 par->n = 0;
1086 par->state = LMQCPP_SUBACK_PAYLOAD;
1087 *par->temp = 0;
1104 par->reason = LMQCP_REASON_MALFORMED_PACKET;
1108 if (++(par->n) == par->cpkt_remlen) {
1109 par->n = 0;
1125 lws_mqtt_vbi_init(&par->vbit);
1126 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
1130 par->cpkt_remlen = par->vbit.value;
1132 __func__, (int)par->cpkt_remlen);
1133 if (par->cpkt_remlen < 2)
1135 par->state = LMQCPP_UNSUBACK_VH_PKT_ID;
1150 par->cpkt_id = lws_ser_ru16be(buf);
1151 wsi->mqtt->ack_pkt_id = par->cpkt_id;
1154 par->cpkt_remlen -= 2;
1155 par->n = 0;
1160 lws_mqtt_vbi_init(&par->vbit);
1161 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
1165 par->cpkt_remlen = par->vbit.value;
1167 (int)par->cpkt_remlen);
1172 if (par->cpkt_remlen <= 1 ||
1173 par->cpkt_remlen == 3)
1176 par->state = LMQCPP_PUBACK_VH_PKT_ID;
1177 par->fixed_seen[2] = par->fixed_seen[3] = 0;
1178 par->fixed = 0;
1179 par->n = 0;
1192 par->fixed_seen[par->fixed++] = *buf++;
1193 if (len < par->cpkt_remlen - par->n) {
1198 par->n++;
1199 if (par->fixed == 2)
1200 par->cpkt_id = lws_ser_ru16be(par->fixed_seen);
1202 if (par->fixed == 3) {
1203 lws_mqtt_vbi_init(&par->vbit);
1204 par->props_consumed = 0;
1205 par->state = LMQCPP_PUBACK_PROPERTIES_LEN_VBI;
1208 if (par->cpkt_remlen == par->fixed)
1213 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
1217 par->props_len = par->vbit.value;
1219 __func__, (int)par->cpkt_remlen);
1224 if (!par->props_len)
1231 lws_mqtt_vbi_init(&par->vbit);
1232 par->state = LMQCPP_PUBACK_VH_PKT_ID;
1244 par->props_consumed++;
1247 if (par->props_len != par->props_consumed)
1256 par->state = LMQCPP_IDLE;
1258 switch (par->packet_type_flags >> 4) {
1378 w->mqtt->ack_pkt_id == par->cpkt_id) {
1428 w->mqtt->ack_pkt_id == par->cpkt_id) {
1467 w->mqtt->ack_pkt_id == par->cpkt_id) {
1535 w->mqtt->ack_pkt_id == par->cpkt_id) {
1577 w->mqtt->ack_pkt_id == par->cpkt_id) {
1656 par->payload_consumed = 0;
1678 par->state = LMQCPP_PAYLOAD;
1692 par->payload_consumed = 0;
1706 switch (lws_mqtt_vbi_r(&par->vbit, &buf, &len)) {
1710 par->consumed = (uint32_t)((unsigned int)par->consumed + (unsigned int)(unsigned char)par->vbit.consumed);
1711 if (par->vbit.value >
1714 __func__, (int)par->vbit.value);
1717 if (!(property_valid[par->vbit.value] &
1718 (1 << ctl_pkt_type(par)))) {
1721 (int)par->vbit.value,
1722 ctl_pkt_type(par));
1725 par->prop_id = par->vbit.value;
1726 par->flag_prop_multi = !!(
1727 par->props_seen[par->prop_id >> 3] &
1728 (1 << (par->prop_id & 7)));
1729 par->props_seen[par->prop_id >> 3] =
1730 (uint8_t)((par->props_seen[par->prop_id >> 3]) | (1 << (par->prop_id & 7)));
1735 lws_mqtt_vbi_init(&par->vbit);
1743 lws_mqtt_str_init(&par->s_temp, NULL, 0, 0);
1746 par->state = 0x100 | par->vbit.value;
1768 if (par->flag_prop_multi)
1770 par->payload_format = *buf++;
1772 if (lws_mqtt_pconsume(par, 1))
1780 if (par->flag_prop_multi)
1783 if (lws_mqtt_mb_first(&par->vbit))
1784 lws_mqtt_4byte_init(&par->vbit);
1786 switch (lws_mqtt_mb_parse(&par->vbit, &buf, &len)) {
1790 if (lws_mqtt_pconsume(par, par->vbit.consumed))
1802 if (par->flag_prop_multi)
1805 if (lws_mqtt_mb_first(&par->vbit))
1806 lws_mqtt_2byte_init(&par->vbit);
1808 switch (lws_mqtt_mb_parse(&par->vbit, &buf, &len)) {
1812 if (lws_mqtt_pconsume(par, par->vbit.consumed))
1829 if (par->flag_prop_multi)
1832 if (lws_mqtt_str_first(&par->s_temp))
1833 lws_mqtt_str_init(&par->s_temp, par->temp,
1834 sizeof(par->temp), 0);
1836 switch (lws_mqtt_str_parse(&par->s_temp, &buf, &len)) {
1840 if (lws_mqtt_pconsume(par, par->s_temp.len))
1857 __func__, par->state);
1873 par->reason = LMQCP_REASON_PROTOCOL_ERROR;
1877 par->flag_pending_send_reason_close = 1;
1882 par->reason = LMQCP_REASON_UNSUPPORTED_PROTOCOL;
1883 par->flag_pending_send_connack_close = 1;