libfaim/aim_search.c

changeset 237
83ff5f92ee7e
parent 2
62fbb00c531a
child 283
dbf3342692e9
equal deleted inserted replaced
236:773898ec348e 237:83ff5f92ee7e
6 * 6 *
7 */ 7 */
8 8
9 #include <aim.h> 9 #include <aim.h>
10 10
11 u_long aim_usersearch_address(struct aim_conn_t *conn, char *address) 11 u_long aim_usersearch_address(struct aim_session_t *sess,
12 struct aim_conn_t *conn,
13 char *address)
12 { 14 {
13 struct command_tx_struct newpacket; 15 struct command_tx_struct *newpacket;
14 16
15 if (!address) 17 if (!address)
16 return -1; 18 return -1;
17 19
18 newpacket.lock = 1; 20 if (!(newpacket = aim_tx_new(0x0002, conn, 10+strlen(address))))
21 return -1;
19 22
20 if (conn) 23 newpacket->lock = 1;
21 newpacket.conn = conn;
22 else
23 newpacket.conn = aim_getconn_type(AIM_CONN_TYPE_BOS);
24 24
25 newpacket.type = 0x0002; 25 aim_putsnac(newpacket->data, 0x000a, 0x0002, 0x0000, sess->snac_nextid);
26
27 newpacket.commandlen = 10 + strlen(address);
28 newpacket.data = (char *) malloc(newpacket.commandlen);
29 26
30 newpacket.data[0] = 0x00; 27 aimutil_putstr(newpacket->data+10, address, strlen(address));
31 newpacket.data[1] = 0x0a;
32 newpacket.data[2] = 0x00;
33 newpacket.data[3] = 0x02;
34 newpacket.data[4] = 0x00;
35 newpacket.data[5] = 0x00;
36 28
37 /* SNAC reqid */ 29 aim_tx_enqueue(sess, newpacket);
38 newpacket.data[6] = (aim_snac_nextid >> 24) & 0xFF;
39 newpacket.data[7] = (aim_snac_nextid >> 16) & 0xFF;
40 newpacket.data[8] = (aim_snac_nextid >> 8) & 0xFF;
41 newpacket.data[9] = (aim_snac_nextid) & 0xFF;
42
43 memcpy(&(newpacket.data[10]), address, strlen(address));
44
45 aim_tx_enqueue(&newpacket);
46 30
47 { 31 {
48 struct aim_snac_t snac; 32 struct aim_snac_t snac;
49 33
50 snac.id = aim_snac_nextid; 34 snac.id = sess->snac_nextid;
51 snac.family = 0x000a; 35 snac.family = 0x000a;
52 snac.type = 0x0002; 36 snac.type = 0x0002;
53 snac.flags = 0x0000; 37 snac.flags = 0x0000;
54 38
55 snac.data = malloc(strlen(address)+1); 39 snac.data = malloc(strlen(address)+1);
56 memcpy(snac.data, address, strlen(address)+1); 40 memcpy(snac.data, address, strlen(address)+1);
57 41
58 aim_newsnac(&snac); 42 aim_newsnac(sess, &snac);
59 } 43 }
60 44
61 return (aim_snac_nextid++); 45 return (sess->snac_nextid++);
62 } 46 }
63 47

mercurial