| 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 |