|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
diff -up gimp-2.6.9/configure.in.script-fu-ipv6 gimp-2.6.9/configure.in
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
--- gimp-2.6.9/configure.in.script-fu-ipv6 2010-06-21 21:20:20.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
+++ gimp-2.6.9/configure.in 2010-06-29 17:28:24.153566227 +0200
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
@@ -602,14 +602,14 @@ AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT,
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
AC_DEFINE(HAVE_RINT)])])
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
-######################################################
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
-# Check for extra libs needed for inet_ntoa and socket
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
-######################################################
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+########################################################
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+# Check for extra libs needed for getnameinfo and socket
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+########################################################
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
gimp_save_LIBS=$LIBS
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
LIBS=""
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
-AC_CHECK_FUNCS(inet_ntoa, , AC_CHECK_LIB(nsl, inet_ntoa))
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+AC_CHECK_FUNCS(getnameinfo, , AC_CHECK_LIB(nsl, getnameinfo))
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
AC_CHECK_LIB(socket, socket)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
SOCKET_LIBS="$LIBS"
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
diff -up gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 gimp-2.6.9/plug-ins/script-fu/script-fu-server.c
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
--- gimp-2.6.9/plug-ins/script-fu/script-fu-server.c.script-fu-ipv6 2009-07-20 22:20:51.000000000 +0200
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
+++ gimp-2.6.9/plug-ins/script-fu/script-fu-server.c 2010-06-29 17:28:24.154289648 +0200
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
@@ -137,7 +137,8 @@ static void server_start (gin
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
const gchar *logfile);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static gboolean execute_command (SFCommand *cmd);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static gint read_from_client (gint filedes);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
-static gint make_socket (guint port);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+static gint make_socket (const struct addrinfo
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ *ai);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static void server_log (const gchar *format,
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
...) G_GNUC_PRINTF (1, 2);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static void server_quit (void);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
@@ -151,7 +152,10 @@ static void print_socket_api_error
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
/*
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
* Local variables
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
*/
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
-static gint server_sock;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+static gint server_socks[2],
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ server_socks_used = 0;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+static const gint server_socks_len = sizeof (server_socks) /
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ sizeof (server_socks[0]);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static GList *command_queue = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static gint queue_length = 0;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static gint request_no = 0;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
@@ -285,6 +289,7 @@ script_fu_server_listen (gint timeout)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
struct timeval tv;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
struct timeval *tvp = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
SELECT_MASK fds;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ gint sockno;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
/* Set time struct */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
if (timeout)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
@@ -295,7 +300,10 @@ script_fu_server_listen (gint timeout)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
FD_ZERO (&fds);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- FD_SET (server_sock, &fds);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ for (sockno = 0; sockno < server_socks_used; sockno++)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ FD_SET (server_socks[sockno], &fds);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
g_hash_table_foreach (clients, script_fu_server_add_fd, &fds);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
/* Block until input arrives on one or more active sockets
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
@@ -307,15 +315,25 @@ script_fu_server_listen (gint timeout)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
return;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- /* Service the server socket if it has input pending. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- if (FD_ISSET (server_sock, &fds))
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ /* Service the server sockets if any has input pending. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ for (sockno = 0; sockno < server_socks_used; sockno++)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
- struct sockaddr_in clientname;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ struct sockaddr_storage client;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ struct sockaddr_in *client_in;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ struct sockaddr_in6 *client_in6;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ gchar clientname[NI_MAXHOST];
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
/* Connection request on original socket. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
- guint size = sizeof (clientname);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- gint new = accept (server_sock,
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
- (struct sockaddr *) &clientname, &size);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ guint size = sizeof (client);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ gint new;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ guint portno;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ if (! FD_ISSET (server_socks[sockno], &fds))
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ continue;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ new = accept (server_socks[sockno], (struct sockaddr *) &client, &size);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
if (new < 0)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
@@ -324,13 +342,34 @@ script_fu_server_listen (gint timeout)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
/* Associate the client address with the socket */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
- g_hash_table_insert (clients,
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
- GINT_TO_POINTER (new),
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
- g_strdup (inet_ntoa (clientname.sin_addr)));
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ /* If all else fails ... */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ strncpy (clientname, "(error during host address lookup)", NI_MAXHOST-1);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ /* Lookup address */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ (void) getnameinfo ((struct sockaddr *) &client, size, clientname,
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ sizeof (clientname), NULL, 0, NI_NUMERICHOST);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ g_hash_table_insert (clients, GINT_TO_POINTER (new),
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ g_strdup (clientname));
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ /* Determine port number */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ switch (client.ss_family)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ case AF_INET:
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ client_in = (struct sockaddr_in *) &client;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ portno = (guint) g_ntohs (client_in->sin_port);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ break;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ case AF_INET6:
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ client_in6 = (struct sockaddr_in6 *) &client;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ portno = (guint) g_ntohs (client_in6->sin6_port);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ break;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ default:
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ portno = 0;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
server_log ("Server: connect from host %s, port %d.\n",
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
- inet_ntoa (clientname.sin_addr),
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
- (unsigned int) ntohs (clientname.sin_port));
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
+ clientname, portno);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
0236e30 |
/* Service the client sockets. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
@@ -392,18 +431,46 @@ static void
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
server_start (gint port,
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
const gchar *logfile)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- const gchar *progress;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
-
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
- /* First of all, create the socket and set it up to accept connections. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
- /* This may fail if there's a server running on this port already. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
- server_sock = make_socket (port);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ struct addrinfo *ai,
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ *ai_curr;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ struct addrinfo hints;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ gint e,
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ sockno;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ gchar *port_s;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ const gchar *progress;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ memset (&hints, 0, sizeof (hints));
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ hints.ai_socktype = SOCK_STREAM;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ port_s = g_strdup_printf ("%d", port);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ e = getaddrinfo (NULL, port_s, &hints, &ai;;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ g_free (port_s);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
- if (listen (server_sock, 5) < 0)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ if (e != 0)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- print_socket_api_error ("listen");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ g_printerr ("getaddrinfo: %s", gai_strerror (e));
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
return;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ for (ai_curr = ai, sockno = 0;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ ai_curr != NULL && sockno < server_socks_len;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ ai_curr = ai_curr->ai_next, sockno++)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ /* Create the socket and set it up to accept connections. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ /* This may fail if there's a server running on this port already. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ server_socks[sockno] = make_socket (ai_curr);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ if (listen (server_socks[sockno], 5) < 0)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ print_socket_api_error ("listen");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ return;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ server_socks_used = sockno;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
/* Setup up the server log file */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
if (logfile && *logfile)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
server_log_file = g_fopen (logfile, "a");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
@@ -592,11 +659,10 @@ read_from_client (gint filedes)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static gint
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
-make_socket (guint port)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+make_socket (const struct addrinfo *ai)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- struct sockaddr_in name;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- gint sock;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- gint v = 1;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ gint sock;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ gint v = 1;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
/* Win32 needs the winsock library initialized. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
#ifdef G_OS_WIN32
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
@@ -620,7 +686,7 @@ make_socket (guint port)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
#endif
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
/* Create the socket. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- sock = socket (PF_INET, SOCK_STREAM, 0);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ sock = socket (ai->ai_family, ai->ai_socktype, ai->ai_protocol);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
if (sock < 0)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
print_socket_api_error ("socket");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
@@ -629,12 +695,20 @@ make_socket (guint port)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, &v, sizeof(v));
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- /* Give the socket a name. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- name.sin_family = AF_INET;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- name.sin_port = htons (port);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- name.sin_addr.s_addr = htonl (INADDR_ANY);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+#ifdef IPV6_V6ONLY
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ /* Only listen on IPv6 addresses, otherwise bind() will fail. */
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ if (ai->ai_family == AF_INET6)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ v = 1;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ if (setsockopt (sock, IPPROTO_IPV6, IPV6_V6ONLY, &v, sizeof(v)) < 0)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ print_socket_api_error ("setsockopt");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ gimp_quit();
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+#endif
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ if (bind (sock, ai->ai_addr, ai->ai_addrlen) < 0)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
print_socket_api_error ("bind");
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
gimp_quit ();
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
10646e4 |
@@ -672,7 +746,12 @@ script_fu_server_shutdown_fd (gpointer k
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
static void
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
server_quit (void)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
- CLOSESOCKET (server_sock);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ gint sockno;
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ for (sockno = 0; sockno < server_socks_used; sockno++)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ CLOSESOCKET (server_socks[sockno]);
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
if (clients)
|
|
![](https://seccdn.libravatar.org/avatar/4da7ba38e677525acbf9efc69095103b0df71e76cee6685ceba07a0ded5fc556?s=16&d=retro) |
e345da6 |
{
|