Mercurial > pidgin
comparison src/network.c @ 8834:beb7be215db3
[gaim-migrate @ 9598]
I removed account->ip because it isn't used anywhere and I think it's dumb.
Also added handling for a and aaaa records to rendezvous. Gaim peeps
show up in iChat rendezvous lists now. There are still problems.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Wed, 28 Apr 2004 00:48:21 +0000 |
parents | 86b8d8b4287e |
children | 518455386538 |
comparison
equal
deleted
inserted
replaced
8833:61fdef863ffa | 8834:beb7be215db3 |
---|---|
29 #include "account.h" | 29 #include "account.h" |
30 #include "network.h" | 30 #include "network.h" |
31 #include "prefs.h" | 31 #include "prefs.h" |
32 | 32 |
33 void | 33 void |
34 gaim_network_set_local_ip(const char *ip) | 34 gaim_network_set_public_ip(const char *ip) |
35 { | 35 { |
36 g_return_if_fail(ip != NULL); | 36 g_return_if_fail(ip != NULL); |
37 | 37 |
38 gaim_prefs_set_string("/core/network/public_ip", ip); | 38 gaim_prefs_set_string("/core/network/public_ip", ip); |
39 } | 39 } |
40 | 40 |
41 const char * | 41 const char * |
42 gaim_network_get_local_ip(void) | 42 gaim_network_get_public_ip(void) |
43 { | 43 { |
44 const char *ip; | 44 const char *ip; |
45 | |
46 if (gaim_prefs_get_bool("/core/network/auto_ip")) | |
47 return NULL; | |
48 | 45 |
49 ip = gaim_prefs_get_string("/core/network/public_ip"); | 46 ip = gaim_prefs_get_string("/core/network/public_ip"); |
50 | 47 |
51 if (ip == NULL || *ip == '\0') | 48 if (ip == NULL || *ip == '\0') |
52 return NULL; | 49 return NULL; |
109 } | 106 } |
110 | 107 |
111 const char * | 108 const char * |
112 gaim_network_get_ip_for_account(const GaimAccount *account, int fd) | 109 gaim_network_get_ip_for_account(const GaimAccount *account, int fd) |
113 { | 110 { |
114 if (account && (gaim_account_get_public_ip(account) != NULL)) | 111 const char *ip = NULL; |
115 return gaim_account_get_public_ip(account); | 112 |
116 else if (gaim_network_get_local_ip() != NULL) | 113 /* Check if the user specified an IP manually */ |
117 return gaim_network_get_local_ip(); | 114 if (!gaim_prefs_get_bool("/core/network/auto_ip")) { |
118 else | 115 ip = gaim_network_get_public_ip(); |
119 return gaim_network_get_local_system_ip(fd); | 116 if (ip != NULL) |
120 } | 117 return ip; |
121 | 118 } |
122 static int gaim_network_do_listen(unsigned short port) | 119 |
120 /* Just fetch the IP of the local system */ | |
121 return gaim_network_get_local_system_ip(fd); | |
122 } | |
123 | |
124 static int | |
125 gaim_network_do_listen(unsigned short port) | |
123 { | 126 { |
124 #if HAVE_GETADDRINFO | 127 #if HAVE_GETADDRINFO |
125 int listenfd; | 128 int listenfd; |
126 const int on = 1; | 129 const int on = 1; |
127 struct addrinfo hints, *res, *ressave; | 130 struct addrinfo hints, *res, *ressave; |
187 | 190 |
188 gaim_debug_info("network", "Listening on port: %hu\n", gaim_network_get_port_from_fd(listenfd)); | 191 gaim_debug_info("network", "Listening on port: %hu\n", gaim_network_get_port_from_fd(listenfd)); |
189 return listenfd; | 192 return listenfd; |
190 } | 193 } |
191 | 194 |
192 int gaim_network_listen(unsigned short port) | 195 int |
196 gaim_network_listen(unsigned short port) | |
193 { | 197 { |
194 g_return_val_if_fail(port != 0, -1); | 198 g_return_val_if_fail(port != 0, -1); |
195 | 199 |
196 return gaim_network_do_listen(port); | 200 return gaim_network_do_listen(port); |
197 } | 201 } |
198 | 202 |
199 int gaim_network_listen_range(unsigned short start, unsigned short end) | 203 int |
204 gaim_network_listen_range(unsigned short start, unsigned short end) | |
200 { | 205 { |
201 int ret = -1; | 206 int ret = -1; |
202 | 207 |
203 if (gaim_prefs_get_bool("/core/network/ports_range_use")) { | 208 if (gaim_prefs_get_bool("/core/network/ports_range_use")) { |
204 start = gaim_prefs_get_int("/core/network/ports_range_start"); | 209 start = gaim_prefs_get_int("/core/network/ports_range_start"); |
215 } | 220 } |
216 | 221 |
217 return ret; | 222 return ret; |
218 } | 223 } |
219 | 224 |
220 short gaim_network_get_port_from_fd(int fd) | 225 unsigned short |
226 gaim_network_get_port_from_fd(int fd) | |
221 { | 227 { |
222 struct sockaddr_in addr; | 228 struct sockaddr_in addr; |
223 socklen_t len; | 229 socklen_t len; |
224 | 230 |
225 g_return_val_if_fail(fd > 0, 0); | 231 g_return_val_if_fail(fd > 0, 0); |