+/*
+ * Simple LD_PRELOAD wrapper for connect() which uses tlsproxy as proxy for
+ * programs which don't support setting a TLS proxy.
+ *
+ * The following environment variables can be used:
+ *
+ * - TLSPROXYHELPER_PORT: port where tlsproxy is running (default 9000)
+ *
+ * If an error occurs -1 is returned and errno is set (either EAFNOSUPPORT if
+ * another protocol besides IPv4/IPv6 was used, or EINVAL if another error
+ * occurred). The error is written to stderr with "tlsproxyhelper:" as prefix.
+ */
+
/*
* Copyright (C) 2011-2013 Simon Ruderich
*
return -1;
}
if (optval != 0) {
- fprintf(stderr, LOG_PREFIX "connect() failed (SO_ERROR)");
+ fprintf(stderr, LOG_PREFIX "connect() failed (SO_ERROR)\n");
errno = EINVAL;
return -1;
}
fds[0].fd = sockfd;
fds[0].events = POLLERR | POLLHUP;
/* Either poll for read or write possibility. */
- if (1 == mode) {
+ if (mode == 1) {
fds[0].events |= POLLIN | POLLPRI;
- } else if (0 == mode) {
+ } else if (mode == 0) {
fds[0].events |= POLLOUT;
} else {
abort();
return -1;
}
- if (fds[0].revents & POLLERR || fds[0].revents & POLLHUP) {
- fprintf(stderr, LOG_PREFIX "poll(): POLLERR | POLLHUP\n");
+ if (fds[0].revents & POLLERR) {
+ fprintf(stderr, LOG_PREFIX "poll(): POLLERR\n");
+ return -1;
+ }
+ if (fds[0].revents & POLLHUP) {
+ fprintf(stderr, LOG_PREFIX "poll(): POLLHUP\n");
return -1;
}