plugins/icq/tcp.c

Tue, 19 Dec 2000 10:08:29 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Tue, 19 Dec 2000 10:08:29 +0000
changeset 1309
dccfec27ffd4
parent 1152
e94e29686ded
child 1432
ab10a52f94a7
permissions
-rw-r--r--

[gaim-migrate @ 1319]
Yay, new icqlib

1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 /*
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
3 $Id: tcp.c 1319 2000-12-19 10:08:29Z warmenhoven $
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 $Log$
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
5 Revision 1.2 2000/12/19 10:08:29 warmenhoven
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
6 Yay, new icqlib
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
7
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
8 Revision 1.37 2000/12/19 06:00:07 bills
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
9 moved members from ICQLINK to ICQLINK_private struct
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 Revision 1.36 2000/07/09 22:19:35 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 added new *Close functions, use *Close functions instead of *Delete
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 where correct, and misc cleanup
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 Revision 1.35 2000/06/15 01:52:16 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 added Cancel and Refuse functions for chat and file reqs, changed packet
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 sending code to use new icq_TCPLinkSendSeq function to elimitane duplicate
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 code, removed *Seq functions, renamed chat req functions
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 Revision 1.34 2000/05/04 15:57:20 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 Reworked file transfer notification, small bugfixes, and cleanups.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23 Revision 1.33 2000/04/10 18:11:45 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
24 ANSI cleanups.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 Revision 1.32 2000/04/10 16:36:04 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27 Some more Win32 compatibility from Guillaume Rosanis <grs@mail.com>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
29 Revision 1.31 2000/04/06 16:38:04 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
30 icq_*Send*Seq() functions with specified sequence number were added.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32 Revision 1.30 2000/04/05 14:37:02 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33 Applied patch from "Guillaume R." <grs@mail.com> for basic Win32
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34 compatibility.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36 Revision 1.29 2000/02/15 04:02:41 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 warning cleanup
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 Revision 1.28 2000/02/15 03:58:20 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 use new icq_ChatRusConv_n function in icq_TCPSendChatData,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 new icq_TCPSendChatData_n function
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 Revision 1.27 2000/02/07 02:40:23 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 new code for SOCKS connections, more cyrillic translations
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46 Revision 1.26 2000/01/20 19:59:15 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47 first implementation of sending file requests
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 Revision 1.25 2000/01/16 21:28:24 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
50 renamed icq_TCPAcceptFileReq to icq_AcceptFileRequest, moved file request
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 functions to new file session code
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53 Revision 1.24 2000/01/16 03:59:10 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54 reworked list code so list_nodes don't need to be inside item structures,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 removed strlist code and replaced with generic list calls
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 Revision 1.23 1999/12/27 16:10:04 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
58 fixed buy in icq_TCPAcceptFileReq, added icq_TCPFileSetSpeed
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 Revision 1.22 1999/12/21 00:29:59 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
61 moved _process_packet logic into tcplink::icq_TCPLinkProcessReceived,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 removed unnecessary icq_TCPSendFile??Packet functions
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64 Revision 1.21 1999/12/14 03:31:48 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 fixed double delete bug in _handle_ready_sockets, added code to implement
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 connect timeout
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68 Revision 1.20 1999/11/30 09:44:31 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 added file session logic
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
71 Revision 1.19 1999/09/29 20:07:12 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72 cleanups, moved connect logic from _handle_ready_sockets to
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 icq_TCPLinkOnConnect, tcp_link->icq_TCPLink
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 Revision 1.18 1999/09/29 17:08:48 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76 Cleanups.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78 Revision 1.17 1999/07/18 20:19:56 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79 added better log messages
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
81 Revision 1.16 1999/07/16 15:45:56 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82 Cleaned up.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 Revision 1.15 1999/07/16 12:14:13 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 tcp_packet* functions renamed to icq_Packet*
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86 Cleaned up.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 Revision 1.14 1999/07/12 15:13:34 cproch
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 - added definition of ICQLINK to hold session-specific global variabled
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90 applications which have more than one connection are now possible
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 - changed nearly every function defintion to support ICQLINK parameter
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
92
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 Revision 1.13 1999/07/03 06:33:49 lord
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94 . byte order conversion macros added
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 . some compilation warnings removed
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 Revision 1.12 1999/06/30 13:52:22 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98 implemented non-blocking connects
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100 Revision 1.11 1999/05/03 21:41:26 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101 initial file xfer support added- untested
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
103 Revision 1.10 1999/04/29 09:35:41 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 Cleanups, warning removed
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 Revision 1.9 1999/04/17 19:30:50 bills
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107 _major_ restructuring. all tcp sockets (including listening sockets) are
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 kept in global linked list, icq_TCPLinks. accept and listen functions
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 moved to tcplink.c. changed return values of Send* functions to DWORD.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111 Revision 1.8 1999/04/14 14:57:05 denis
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 Cleanups for "strict" compiling (-ansi -pedantic)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 Parameter port added to function icq_TCPCreateListeningSocket()
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115 */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117 /*
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 Peer-to-peer ICQ protocol implementation
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 Uses version 2 of the ICQ protocol
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 Thanks to Douglas F. McLaughlin and many others for
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 packet details (see tcp02.txt)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125 */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127 #include <stdlib.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 #ifndef _WIN32
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
130 #include <unistd.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
131 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133 #include <fcntl.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 #include <stdarg.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 #include <errno.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
136
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
137 #include <sys/types.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
139 #ifdef _WIN32
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 #include <winsock.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141 #else
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 #include <sys/socket.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 #include <sys/stat.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147 #ifndef _WIN32
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
148 #include <sys/time.h>
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151 #include "icqtypes.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
152 #include "icqlib.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 #include "tcp.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 #include "stdpackets.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 #include "list.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 #include "tcplink.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 #include "chatsession.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 #include "filesession.h"
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161 /**
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162 Initializes structures necessary for TCP use. Not required by user
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163 programs.
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
165 \return true on error
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
166 */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
167
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
168 int icq_TCPInit(ICQLINK *link)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
169 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
170 icq_TCPLink *plink;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
171
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
172 /* allocate lists */
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
173 link->d->icq_TCPLinks=list_new();
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
174 link->d->icq_ChatSessions=list_new();
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
175 link->d->icq_FileSessions=list_new();
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
176
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
177 /* only the main listening socket gets created upon initialization -
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
178 * the other two are created when necessary */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
179 plink=icq_TCPLinkNew( link );
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
180 icq_TCPLinkListen(plink);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 link->icq_TCPSrvPort=ntohs(plink->socket_address.sin_port);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
183 /* reset tcp sequence number */
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
184 link->d->icq_TCPSequence=0xfffffffe;
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
186 return 0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
187 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
188
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
189 void icq_TCPDone(ICQLINK *link)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
190 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
191 /* close and deallocate all tcp links, this will also close any attached
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
192 * file or chat sessions */
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
193 list_delete(link->d->icq_TCPLinks, icq_TCPLinkDelete);
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
194 list_delete(link->d->icq_ChatSessions, icq_ChatSessionDelete);
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
195 list_delete(link->d->icq_FileSessions, icq_FileSessionDelete);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
196 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
198 /* helper function for icq_TCPMain */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
199 int _generate_fds(void *p, va_list data)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
200 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
201 icq_TCPLink *plink=(icq_TCPLink *)p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
202 ICQLINK *icqlink = plink->icqlink;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
203
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
204 (void)data;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
205
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
206 if(plink->socket>-1)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
208 int socket=plink->socket;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
209
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
210 FD_SET(socket, &icqlink->d->TCP_readfds);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
211
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
212 /* we only care about writing if socket is trying to connect */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
213 if(plink->mode & TCP_LINK_MODE_CONNECTING)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
214 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
215 if(plink->mode & (TCP_LINK_SOCKS_AUTHORIZATION | TCP_LINK_SOCKS_NOAUTHSTATUS | TCP_LINK_SOCKS_AUTHSTATUS | TCP_LINK_SOCKS_CONNSTATUS))
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
216 FD_SET(socket, &icqlink->d->TCP_readfds);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
217 else
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
218 FD_SET(socket, &icqlink->d->TCP_writefds);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
219 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
220
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
221 if(socket+1>icqlink->d->TCP_maxfd)
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
222 icqlink->d->TCP_maxfd=socket+1;
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
223 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
224
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
225 return 0; /* traverse the entire list */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
226 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
227
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
228 /* helper function for icq_TCPMain */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
229 int _handle_ready_sockets(void *p, va_list data)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
230 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
231 icq_TCPLink *plink=(icq_TCPLink *)p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
232 ICQLINK *icqlink = plink->icqlink;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
233 int socket=plink->socket;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
234
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
235 (void)data;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
236
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
237 /* handle connecting sockets */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
238 if (plink->mode & TCP_LINK_MODE_CONNECTING)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
239 {
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
240 if(socket>-1 && (FD_ISSET(socket, &icqlink->d->TCP_writefds) || FD_ISSET(socket, &icqlink->d->TCP_readfds)))
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
241 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
242 icq_TCPLinkOnConnect(plink);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
243 return 0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
244 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
245
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
246 if((time(0L) - plink->connect_time) > TCP_LINK_CONNECT_TIMEOUT)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
247 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
248 icq_TCPLinkClose(plink);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
249 return 0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
250 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
251 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
252
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
253 /* handle ready for read sockets- either a connection is waiting on *
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
254 * the listen sockets or data is ready to be read */
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
255 if(socket>-1 && FD_ISSET(socket, &icqlink->d->TCP_readfds))
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
256 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
257 if(plink->mode & TCP_LINK_MODE_LISTEN)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
258 (void)icq_TCPLinkAccept(plink);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
259 else {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
260
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
261 int result=icq_TCPLinkOnDataReceived(plink);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
262
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
263 /* close the link if there was a receive error or if *
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
264 * the remote end has closed the connection */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
265 if (result < 1)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
266 icq_TCPLinkClose(plink);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
267
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
268 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
269 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
270
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
271 return 0; /* traverse the entire list */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
272 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
273
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
274 /* helper function for icq_TCPMain */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
275 int _process_links(void *p, va_list data)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
276 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
277 icq_TCPLink *plink=(icq_TCPLink *)p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
278
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
279 (void)data;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
280
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
281 /* receive any packets watiting on the link */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
282 icq_TCPLinkProcessReceived(plink);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
283
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
284 /* if this a currently sending file link, send data! */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
285 if(plink->type==TCP_LINK_FILE) {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
286 icq_FileSession *psession=plink->session;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
287 if(psession && psession->status==FILE_STATUS_SENDING)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
288 icq_FileSessionSendData(psession);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
289 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
290
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
291 return 0; /* traverse entire list */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
292 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
293
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
294 void icq_TCPMain(ICQLINK *link)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
295 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
296 struct timeval tv;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
297
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
298 tv.tv_sec = 0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
299 tv.tv_usec = 0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
300
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
301 link->d->TCP_maxfd = 0;
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
302 FD_ZERO(&link->d->TCP_readfds);
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
303 FD_ZERO(&link->d->TCP_writefds);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
304
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
305 /* generate the fd sets for all open tcp links */
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
306 (void)list_traverse(link->d->icq_TCPLinks, _generate_fds);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
307
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
308 /* determine which sockets require maintenance */
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
309 select(link->d->TCP_maxfd, &link->d->TCP_readfds, &link->d->TCP_writefds, 0, &tv);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
310
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
311 /* call icq_TCPLinkOnDataReceived for any sockets with ready data,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
312 * send all packets on send queue if socket has connected, and
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
313 * accept() from any listening sockets with pending connections */
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
314 (void)list_traverse(link->d->icq_TCPLinks, _handle_ready_sockets, 0, 0);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
315
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
316 /* process all packets waiting for each TCPLink */
1309
dccfec27ffd4 [gaim-migrate @ 1319]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1152
diff changeset
317 (void)list_traverse(link->d->icq_TCPLinks, _process_links, 0, 0);
1152
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
318 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
319
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
320 icq_TCPLink *icq_TCPCheckLink(ICQLINK *link, DWORD uin, int type)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
321 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
322 icq_TCPLink *plink=icq_FindTCPLink(link, uin, type);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
323
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
324 if(!plink)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
325 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
326 plink=icq_TCPLinkNew( link );
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
327 if(type==TCP_LINK_MESSAGE)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
328 icq_TCPLinkConnect(plink, uin, 0);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
329 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
330
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
331 return plink;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
332
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
333 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
334
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
335 DWORD icq_TCPSendMessage(ICQLINK *link, DWORD uin, const char *message)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
336 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
337 icq_TCPLink *plink;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
338 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
339 DWORD sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
340 char data[512] ;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
341
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
342 strncpy(data,message,512) ;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
343 icq_RusConv("kw", data) ;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
344
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
345 plink=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
346
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
347 /* create and send the message packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
348 p=icq_TCPCreateMessagePacket(plink, (unsigned char *)data);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
349 sequence=icq_TCPLinkSendSeq(plink, p, 0);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
350
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
351 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
352 printf("message packet sent to uin %lu { sequence=%lx }\n", uin, p->id);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
353 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
354
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
355 return sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
356 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
357
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
358 DWORD icq_TCPSendURL(ICQLINK *link, DWORD uin, const char *message, const char *url)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
359 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
360 icq_TCPLink *plink;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
361 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
362 DWORD sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
363 char data[512];
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
364
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
365 plink=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
366
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
367 strncpy(data, message, 512);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
368 data[511] = '\0';
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
369 icq_RusConv("kw", data);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
370
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
371 /* create and send the url packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
372 p=icq_TCPCreateURLPacket(plink, data, url);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
373 sequence=icq_TCPLinkSendSeq(plink, p, 0);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
374
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
375 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
376 printf("url packet queued for uin %lu { sequence=%lx }\n", uin, p->id);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
377 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
378
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
379 return sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
380 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
381
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
382 DWORD icq_SendChatRequest(ICQLINK *link, DWORD uin, const char *message)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
383 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
384 icq_TCPLink *plink;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
385 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
386 DWORD sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
387 char data[512];
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
388
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
389 plink=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
390
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
391 strncpy(data, message, 512);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
392 data[511] = '\0';
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
393 icq_RusConv("kw", data);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
394
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
395 /* create and send the url packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
396 p=icq_TCPCreateChatReqPacket(plink, (unsigned char *)data);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
397 sequence=icq_TCPLinkSendSeq(plink, p, 0);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
398
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
399 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
400 printf("chat req packet sent to uin %lu { sequence=%lx }\n", uin, p->id);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
401 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
402
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
403 return sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
404 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
405
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
406 unsigned long icq_SendFileRequest(ICQLINK *link, unsigned long uin,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
407 const char *message, char **files)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
408 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
409 icq_TCPLink *plink;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
410 icq_FileSession *pfile;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
411 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
412 unsigned long sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
413 char filename[64];
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
414 char data[512];
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
415
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
416 plink=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
417
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
418 /* create the file session, this will be linked to the incoming icq_TCPLink
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
419 * in icq_HandleFileAck */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
420 pfile=icq_FileSessionNew(link);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
421 pfile->remote_uin=uin;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
422 pfile->files=files;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
423 pfile->direction=FILE_STATUS_SENDING;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
424
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
425 /* count the number and size of the files */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
426 pfile->total_files=0;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
427 while(*files) {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
428 struct stat file_status;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
429
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
430 if(stat(*files, &file_status)==0) {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
431 pfile->total_files++;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
432 pfile->total_bytes+=file_status.st_size;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
433 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
434 files++;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
435 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
436
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
437 strncpy(filename, *(pfile->files), 64);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
438
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
439 strncpy(data, message, 512);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
440 data[511] = '\0';
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
441 icq_RusConv("kw", data);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
442
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
443 /* create and send the file req packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
444 p=icq_TCPCreateFileReqPacket(plink, (char *)data, filename,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
445 pfile->total_bytes);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
446 sequence=icq_TCPLinkSendSeq(plink, p, 0);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
447 pfile->id=sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
448
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
449 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
450 printf("file req packet sent to uin %lu { sequence=%lx }\n", uin, p->id);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
451 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
452
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
453 return sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
454 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
455
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
456 void icq_AcceptChatRequest(ICQLINK *link, DWORD uin, unsigned long sequence)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
457 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
458 icq_TCPLink *pmessage, *plisten;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
459 icq_ChatSession *pchat;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
460 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
461
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
462 pmessage=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
463
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
464 /* create the chat listening socket if necessary */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
465 if(!(plisten=icq_FindTCPLink(link, 0, TCP_LINK_CHAT)))
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
466 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
467 plisten=icq_TCPLinkNew( link );
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
468 plisten->type=TCP_LINK_CHAT;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
469 icq_TCPLinkListen(plisten);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
470 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
471
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
472 /* create the chat session, this will be linked to the incoming icq_TCPLink
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
473 * in TCPProcessHello */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
474 pchat=icq_ChatSessionNew(link);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
475 pchat->id=sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
476 pchat->remote_uin=uin;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
477
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
478 /* create and send the ack packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
479 p=icq_TCPCreateChatReqAck(pmessage,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
480 ntohs(plisten->socket_address.sin_port));
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
481 (void)icq_TCPLinkSendSeq(pmessage, p, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
482
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
483 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
484 printf("chat req ack sent to uin %lu { sequence=%lx }\n", uin, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
485 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
486 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
487
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
488 void icq_TCPSendChatData(ICQLINK *link, DWORD uin, const char *data)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
489 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
490 icq_TCPLink *plink=icq_FindTCPLink(link, uin, TCP_LINK_CHAT);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
491 char data1[512];
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
492 int data1_len;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
493
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
494 if(!plink)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
495 return;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
497 strncpy(data1,data,512) ;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
498 data1[511] = '\0';
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
499 data1_len = strlen(data);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
500 icq_ChatRusConv_n("kw", data1, data1_len);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
502 send(plink->socket, data1, data1_len, 0);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
503
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
504 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
505
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
506 void icq_TCPSendChatData_n(ICQLINK *link, DWORD uin, const char *data, int len)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
507 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
508 icq_TCPLink *plink=icq_FindTCPLink(link, uin, TCP_LINK_CHAT);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
509 char *data1;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
510
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
511 if(!plink)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
512 return;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
513
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
514 data1 = (char *)malloc(len);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
515 memcpy(data1, data, len);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
516 icq_ChatRusConv_n("kw", data1, len);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
517
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
518 send(plink->socket, data1, len, 0);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
519
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
520 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
521
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
522 void icq_TCPCloseChat(ICQLINK *link, unsigned long uin)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
523 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
524 icq_TCPLink *plink=icq_FindTCPLink(link, uin, TCP_LINK_CHAT);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
525
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
526 if(plink)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
527 icq_TCPLinkClose(plink);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
528
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
529 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
530
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
531 icq_FileSession *icq_AcceptFileRequest(ICQLINK *link, DWORD uin,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
532 unsigned long sequence)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
533 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
534 icq_TCPLink *pmessage, *plisten;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
535 icq_FileSession *pfile;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
536 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
537
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
538 pmessage=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
539
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
540 /* create the file listening socket if necessary */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
541 if(!(plisten=icq_FindTCPLink(link, 0, TCP_LINK_FILE)))
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
542 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
543 plisten=icq_TCPLinkNew( link );
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
544 plisten->type=TCP_LINK_FILE;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
545 icq_TCPLinkListen(plisten);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
546 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
547
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
548 /* create the file session, this will be linked to the incoming icq_TCPLink
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
549 * in TCPProcessHello */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
550 pfile=icq_FileSessionNew(link);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
551 pfile->id=sequence;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
552 pfile->remote_uin=uin;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
553 pfile->direction=FILE_STATUS_RECEIVING;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
554 icq_FileSessionSetStatus(pfile, FILE_STATUS_LISTENING);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
555
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
556 /* create and send the ack packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
557 p=icq_TCPCreateFileReqAck(pmessage,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
558 ntohs(plisten->socket_address.sin_port));
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
559 (void)icq_TCPLinkSendSeq(pmessage, p, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
560
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
561 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
562 printf("file req ack sent to uin %lu { sequence=%lx }\n", uin, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
563 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
564
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
565 return pfile;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
566
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
567 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
568
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
569 void icq_RefuseFileRequest(ICQLINK *link, DWORD uin,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
570 unsigned long sequence, const char *reason)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
571 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
572 icq_TCPLink *pmessage=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
573 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
574
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
575 /* create and send the refuse packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
576 p=icq_TCPCreateFileReqRefuse(pmessage,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
577 ntohs(pmessage->socket_address.sin_port), reason);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
578 (void)icq_TCPLinkSendSeq(pmessage, p, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
579
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
580 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
581 printf("file req refuse sent to uin %lu { sequence=%lx, reason=\"%s\" }\n",
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
582 uin, sequence, reason);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
583 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
584
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
585 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
586
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
587 void icq_CancelFileRequest(ICQLINK *link, DWORD uin, unsigned long sequence)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
588 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
589 icq_TCPLink *pmessage=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
590 icq_FileSession *psession=icq_FindFileSession(link, uin, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
591 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
592
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
593 if (psession)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
594 icq_FileSessionClose(psession);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
595
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
596 /* create and send the cancel packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
597 p=icq_TCPCreateFileReqCancel(pmessage,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
598 ntohs(pmessage->socket_address.sin_port));
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
599 (void)icq_TCPLinkSendSeq(pmessage, p, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
600 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
601 printf("file req cancel sent to uin %lu { sequence=%lx }\n", uin, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
602 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
603
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
604 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
605
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
606 void icq_RefuseChatRequest(ICQLINK *link, DWORD uin,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
607 unsigned long sequence, const char *reason)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
608 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
609 icq_TCPLink *pmessage=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
610 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
611
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
612 /* create and send the refuse packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
613 p=icq_TCPCreateChatReqRefuse(pmessage,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
614 ntohs(pmessage->socket_address.sin_port), reason);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
615 (void)icq_TCPLinkSendSeq(pmessage, p, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
616
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
617 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
618 printf("chat req refuse sent to uin %lu { sequence=%lx, reason=\"%s\" }\n",
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
619 uin, sequence, reason);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
620 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
621
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
622 }
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
623
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
624 void icq_CancelChatRequest(ICQLINK *link, DWORD uin, unsigned long sequence)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
625 {
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
626 icq_TCPLink *pmessage=icq_TCPCheckLink(link, uin, TCP_LINK_MESSAGE);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
627 icq_FileSession *psession=icq_FindFileSession(link, uin, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
628 icq_Packet *p;
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
629
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
630 if (psession)
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
631 icq_FileSessionClose(psession);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
632
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
633 /* create and send the cancel packet */
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
634 p=icq_TCPCreateChatReqCancel(pmessage,
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
635 ntohs(pmessage->socket_address.sin_port));
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
636 (void)icq_TCPLinkSendSeq(pmessage, p, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
637
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
638 #ifdef TCP_PACKET_TRACE
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
639 printf("chat req cancel sent to uin %lu { sequence=%lx }\n", uin, sequence);
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
640 #endif
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
641
e94e29686ded [gaim-migrate @ 1162]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
642 }

mercurial