static void test_header_encode_connid(void) { GObexHeader *header; gboolean ret; guint32 val; header = parse_and_encode(hdr_connid, sizeof(hdr_connid)); ret = g_obex_header_get_uint32(header, &val); g_assert(ret == TRUE); g_assert(val == 0x01020304); g_obex_header_free(header); }
static gboolean check_connid(GObex *obex, GObexPacket *pkt) { GObexHeader *hdr; guint32 id; if (obex->conn_id == CONNID_INVALID) return TRUE; hdr = g_obex_packet_get_header(pkt, G_OBEX_HDR_CONNECTION); if (hdr == NULL) return TRUE; g_obex_header_get_uint32(hdr, &id); return obex->conn_id == id; }
static void prepare_connect_rsp(GObex *obex, GObexPacket *rsp) { GObexHeader *connid; struct connect_data data; static guint32 next_connid = 1; init_connect_data(obex, &data); g_obex_packet_set_data(rsp, &data, sizeof(data), G_OBEX_DATA_COPY); connid = g_obex_packet_get_header(rsp, G_OBEX_HDR_CONNECTION); if (connid != NULL) { g_obex_header_get_uint32(connid, &obex->conn_id); return; } obex->conn_id = next_connid++; connid = g_obex_header_new_uint32(G_OBEX_HDR_CONNECTION, obex->conn_id); g_obex_packet_prepend_header(rsp, connid); }
static void parse_connect_data(GObex *obex, GObexPacket *pkt) { const struct connect_data *data; GObexHeader *connid; guint16 u16; size_t data_len; data = g_obex_packet_get_data(pkt, &data_len); if (data == NULL || data_len != sizeof(*data)) return; memcpy(&u16, &data->mtu, sizeof(u16)); obex->tx_mtu = g_ntohs(u16); if (obex->io_tx_mtu > 0 && obex->tx_mtu > obex->io_tx_mtu) obex->tx_mtu = obex->io_tx_mtu; obex->tx_buf = g_realloc(obex->tx_buf, obex->tx_mtu); connid = g_obex_packet_get_header(pkt, G_OBEX_HDR_CONNECTION); if (connid != NULL) g_obex_header_get_uint32(connid, &obex->conn_id); }