| &$unknown_297917 >= 65536 | 197 | | GIOChannel *dcc_listen(GIOChannel *iface, IPADDR *ip, int *port) |
| | 198 | | { |
| | 199 | | GIOChannel *handle; |
| &$unknown_297923 >= 65536 | 200 | | IPADDR *listen_ip = NULL;
|
| | 201 | | const char *dcc_port, *p, *own_ip; |
| | 202 | | int first, last; |
| | 203 | | |
| &$unknown_297929 >= 65536 | 204 | | if (net_getsockname(iface, ip, NULL) == -1)
|
| | 205 | | return NULL;
|
| | 206 | | |
| | 207 | | |
| | 208 | | |
| &$unknown_297962 >= 65536 | 209 | | own_ip = settings_get_str("dcc_own_ip"); |
| &$unknown_297976 >= 65536 | 210 | | if (*own_ip != '\0') { |
| &$unknown_297979 >= 65536 | 211 | | if (is_ipv4_address(own_ip)) |
| &$unknown_297991 >= 65536 | 212 | | listen_ip = &ip4_any; |
| | 213 | | } else { |
| | 214 | | if (!IPADDR_IS_V6(ip))
|
| | 215 | | listen_ip = &ip4_any; |
| | 216 | | } |
| | 217 | | |
| | 218 | | |
| &$unknown_297994 >= 65536 | 219 | | dcc_port = settings_get_str("dcc_port"); |
| &$unknown_298004 >= 65536 | 220 | | first = atoi(dcc_port); |
| | 221 | | if (first == 0) { |
| | 222 | | |
| | 223 | | *port = 0; |
| | 224 | | return net_listen(listen_ip, port); |
| | 225 | | } |
| | 226 | | |
| | 227 | | |
| | 228 | | p = strchr(dcc_port, ' '); |
| | 229 | | if (p == NULL) p = strchr(dcc_port, '-');
|
| | 230 | | |
| | 231 | | dcc_port = p; |
| | 232 | | if (dcc_port == NULL)
|
| | 233 | | last = first; |
| | 234 | | else { |
| | 235 | | last = atoi(dcc_port+1); |
| | 236 | | if (last == 0) |
| | 237 | | last = first; |
| | 238 | | } |
| | 239 | | |
| | 240 | | |
| first >= 65536 | 241 | | for (*port = first; *port <= last; (*port)++) { |