summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorjperkin <jperkin@pkgsrc.org>2017-08-15 13:13:36 +0000
committerjperkin <jperkin@pkgsrc.org>2017-08-15 13:13:36 +0000
commit18290e5e2e940fd458611ad546afc2b70a87f738 (patch)
treecf38b1c3e916a9d8282a3be36a05b6a079676653 /net
parent7e6fb2fba11b5836fe916e6501b1d550fb7d8d65 (diff)
downloadpkgsrc-18290e5e2e940fd458611ad546afc2b70a87f738.tar.gz
Fix build on SunOS and add SMF manifest. Based on patches provided by
Jorge Schrauwen in joyent/pkgsrc#14.
Diffstat (limited to 'net')
-rw-r--r--net/sslh/distinfo5
-rw-r--r--net/sslh/files/smf/manifest.xml27
-rw-r--r--net/sslh/patches/patch-common.c51
-rw-r--r--net/sslh/patches/patch-common.h44
-rw-r--r--net/sslh/patches/patch-sslh-select.c25
5 files changed, 151 insertions, 1 deletions
diff --git a/net/sslh/distinfo b/net/sslh/distinfo
index 6aa8ba1a59c..771fdd79fde 100644
--- a/net/sslh/distinfo
+++ b/net/sslh/distinfo
@@ -1,8 +1,11 @@
-$NetBSD: distinfo,v 1.6 2016/08/07 13:19:24 nils Exp $
+$NetBSD: distinfo,v 1.7 2017/08/15 13:13:36 jperkin Exp $
SHA1 (sslh-1.18.tar.gz) = dacf6250e26250513deeaa310c78591d5b3e77f4
RMD160 (sslh-1.18.tar.gz) = 49e83f975f7e8df8358bdd1d7afeabdbe6269a82
SHA512 (sslh-1.18.tar.gz) = 859ad65a258534fde68295a2880c077a00205d96a6aafeb525abce836850b9deea7b39daa2dc74a0dc18d2b198884958a39fbe758d61c93b257676f3a7d4f7bc
Size (sslh-1.18.tar.gz) = 53175 bytes
+SHA1 (patch-common.c) = fb812e7aca2216c6b6577c9d33e37dd837e26fe7
+SHA1 (patch-common.h) = 376a7d4d9ef28707d3dfc3df763a2a577f020772
SHA1 (patch-echosrv.c) = 611044fd7ed1fd52c44e2d8ff393091c35478e17
SHA1 (patch-sslh-main.c) = a74502a087b11c4d8f32791ac86c45c7a38923d9
+SHA1 (patch-sslh-select.c) = d470e6dc803164fbdfa77ddc189cdb4dd7672bd4
diff --git a/net/sslh/files/smf/manifest.xml b/net/sslh/files/smf/manifest.xml
new file mode 100644
index 00000000000..f3f7c11e84d
--- /dev/null
+++ b/net/sslh/files/smf/manifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+<service_bundle type='manifest' name='@SMF_NAME@'>
+ <service name='@SMF_PREFIX@/@SMF_NAME@' type='service' version='1'>
+ <create_default_instance enabled='false' />
+ <single_instance />
+ <dependency name='fs-root' grouping='require_all' restart_on='none' type='service'>
+ <service_fmri value='svc:/system/filesystem/root' />
+ </dependency>
+ <dependency name='network-service' grouping='require_all' restart_on='none' type='service'>
+ <service_fmri value='svc:/network/service'/>
+ </dependency>
+ <dependency name='config-file' grouping='require_all' restart_on='none' type='path'>
+ <service_fmri value='file://localhost/@PKG_SYSCONFDIR@/sslh.cfg' />
+ </dependency>
+ <exec_method type='method' name='start' exec='@PREFIX@/sbin/sslh -F@PKG_SYSCONFDIR@/sslh.cfg' timeout_seconds='60' />
+ <exec_method type='method' name='stop' exec=':kill' timeout_seconds='30' />
+ <template>
+ <common_name>
+ <loctext xml:lang='C'>SSL multiplexer service</loctext>
+ </common_name>
+ <documentation>
+ <manpage title='sslh' section='8' />
+ </documentation>
+ </template>
+ </service>
+</service_bundle>
diff --git a/net/sslh/patches/patch-common.c b/net/sslh/patches/patch-common.c
new file mode 100644
index 00000000000..574f4f4e2ce
--- /dev/null
+++ b/net/sslh/patches/patch-common.c
@@ -0,0 +1,51 @@
+$NetBSD: patch-common.c,v 1.1 2017/08/15 13:13:36 jperkin Exp $
+
+Avoid queue variable conflict.
+
+--- common.c.orig 2016-03-29 19:19:05.000000000 +0000
++++ common.c
+@@ -237,7 +237,7 @@ int connect_addr(struct connection *cnx,
+ }
+
+ /* Store some data to write to the queue later */
+-int defer_write(struct queue *q, void* data, int data_size)
++int defer_write(struct sslhqueue *q, void* data, int data_size)
+ {
+ char *p;
+ if (verbose)
+@@ -261,7 +261,7 @@ int defer_write(struct queue *q, void* d
+ * Upon success, the number of bytes written is returned.
+ * Upon failure, -1 returned (e.g. connexion closed)
+ * */
+-int flush_deferred(struct queue *q)
++int flush_deferred(struct sslhqueue *q)
+ {
+ int n;
+
+@@ -313,7 +313,7 @@ void dump_connection(struct connection *
+ * returns FD_STALLED if data was read, could not be written, and has been
+ * stored in temporary buffer.
+ */
+-int fd2fd(struct queue *target_q, struct queue *from_q)
++int fd2fd(struct sslhqueue *target_q, struct sslhqueue *from_q)
+ {
+ char buffer[BUFSIZ];
+ int target, from, size_r, size_w;
+@@ -594,7 +594,7 @@ void setup_syslog(const char* bin_name)
+ int res;
+
+ name1 = strdup(bin_name);
+- res = asprintf(&name2, "%s[%d]", basename(name1), getpid());
++ res = asprintf(&name2, "%s[%d]", basename(name1), (int)getpid());
+ CHECK_RES_DIE(res, "asprintf");
+ openlog(name2, LOG_CONS, LOG_AUTH);
+ free(name1);
+@@ -694,7 +694,7 @@ void write_pid_file(const char* pidfile)
+ exit(3);
+ }
+
+- fprintf(f, "%d\n", getpid());
++ fprintf(f, "%d\n", (int)getpid());
+ fclose(f);
+ }
+
diff --git a/net/sslh/patches/patch-common.h b/net/sslh/patches/patch-common.h
new file mode 100644
index 00000000000..752afd620d0
--- /dev/null
+++ b/net/sslh/patches/patch-common.h
@@ -0,0 +1,44 @@
+$NetBSD: patch-common.h,v 1.1 2017/08/15 13:13:36 jperkin Exp $
+
+Avoid queue variable conflict.
+
+--- common.h.orig 2016-03-29 19:19:05.000000000 +0000
++++ common.h
+@@ -69,7 +69,7 @@ enum connection_state {
+
+ /* A 'queue' is composed of a file descriptor (which can be read from or
+ * written to), and a queue for deferred write data */
+-struct queue {
++struct sslhqueue {
+ int fd;
+ void *begin_deferred_data;
+ void *deferred_data;
+@@ -84,7 +84,7 @@ struct connection {
+ /* q[0]: queue for external connection (client);
+ * q[1]: queue for internal connection (httpd or sshd);
+ * */
+- struct queue q[2];
++ struct sslhqueue q[2];
+ };
+
+ #define FD_CNXCLOSED 0
+@@ -95,7 +95,7 @@ struct connection {
+ /* common.c */
+ void init_cnx(struct connection *cnx);
+ int connect_addr(struct connection *cnx, int fd_from);
+-int fd2fd(struct queue *target, struct queue *from);
++int fd2fd(struct sslhqueue *target, struct sslhqueue *from);
+ char* sprintaddr(char* buf, size_t size, struct addrinfo *a);
+ void resolve_name(struct addrinfo **out, char* fullname);
+ void log_connection(struct connection *cnx);
+@@ -110,8 +110,8 @@ int resolve_split_name(struct addrinfo *
+
+ int start_listen_sockets(int *sockfd[], struct addrinfo *addr_list);
+
+-int defer_write(struct queue *q, void* data, int data_size);
+-int flush_deferred(struct queue *q);
++int defer_write(struct sslhqueue *q, void* data, int data_size);
++int flush_deferred(struct sslhqueue *q);
+
+ extern int probing_timeout, verbose, inetd, foreground,
+ background, transparent, numeric;
diff --git a/net/sslh/patches/patch-sslh-select.c b/net/sslh/patches/patch-sslh-select.c
new file mode 100644
index 00000000000..e30cb96de58
--- /dev/null
+++ b/net/sslh/patches/patch-sslh-select.c
@@ -0,0 +1,25 @@
+$NetBSD: patch-sslh-select.c,v 1.1 2017/08/15 13:13:36 jperkin Exp $
+
+Avoid queue variable conflict.
+
+--- sslh-select.c.orig 2016-03-29 19:19:05.000000000 +0000
++++ sslh-select.c
+@@ -131,7 +131,7 @@ int accept_new_connection(int listen_soc
+ /* Connect queue 1 of connection to SSL; returns new file descriptor */
+ int connect_queue(struct connection *cnx, fd_set *fds_r, fd_set *fds_w)
+ {
+- struct queue *q = &cnx->q[1];
++ struct sslhqueue *q = &cnx->q[1];
+
+ q->fd = connect_addr(cnx, cnx->q[0].fd);
+ if ((q->fd != -1) && fd_is_in_range(q->fd)) {
+@@ -156,7 +156,8 @@ int connect_queue(struct connection *cnx
+ void shovel(struct connection *cnx, int active_fd,
+ fd_set *fds_r, fd_set *fds_w)
+ {
+- struct queue *read_q, *write_q;
++ struct sslhqueue *read_q, *write_q;
++
+
+ read_q = &cnx->q[active_fd];
+ write_q = &cnx->q[1-active_fd];