ports/net/tsocks/files/patch-tsocks.c
Emanuel Haupt d9f28ee265 net/tsocks: Fix erroneous substitution
When patching the wrapper script for /usr to ${PREFIX} a part in a sed
statement gets substituted that should be escaped. Adjust sed statement
in a way that it doesn't break after patching ${PREFIX}.

While here:

- move a REINPLACE_CMD operation to a pre-existing patch file
- pacify portclippy
- reformat with portfmt

PR:		267670
Reported by:	chris@mumac.de
2022-11-10 08:49:19 +01:00

133 lines
4.9 KiB
C

--- tsocks.c.orig 2002-07-15 22:50:52 UTC
+++ tsocks.c
@@ -531,12 +531,12 @@ int poll(POLL_SIGNATURE) {
/* If we're not currently managing any requests we can just
* leave here */
if (!requests)
- return(realpoll(ufds, nfds, timeout));
+ return(realpoll(fds, nfds, timeout));
get_environment();
show_msg(MSGDEBUG, "Intercepted call to poll with %d fds, "
- "0x%08x timeout %d\n", nfds, ufds, timeout);
+ "0x%08x timeout %d\n", nfds, fds, timeout);
for (conn = requests; conn != NULL; conn = conn->next)
conn->selectevents = 0;
@@ -544,16 +544,16 @@ int poll(POLL_SIGNATURE) {
/* Record what events on our sockets the caller was interested
* in */
for (i = 0; i < nfds; i++) {
- if (!(conn = find_socks_request(ufds[i].fd, 0)))
+ if (!(conn = find_socks_request(fds[i].fd, 0)))
continue;
show_msg(MSGDEBUG, "Have event checks for socks enabled socket %d\n",
conn->sockid);
- conn->selectevents = ufds[i].events;
+ conn->selectevents = fds[i].events;
monitoring = 1;
}
if (!monitoring)
- return(realpoll(ufds, nfds, timeout));
+ return(realpoll(fds, nfds, timeout));
/* This is our poll loop. In it we repeatedly call poll(). We
* pass select the same event list as provided by the caller except we
@@ -566,25 +566,25 @@ int poll(POLL_SIGNATURE) {
do {
/* Enable our sockets for the events WE want to hear about */
for (i = 0; i < nfds; i++) {
- if (!(conn = find_socks_request(ufds[i].fd, 0)))
+ if (!(conn = find_socks_request(fds[i].fd, 0)))
continue;
/* We always want to know about socket exceptions but they're
* always returned (i.e they don't need to be in the list of
* wanted events to be returned by the kernel */
- ufds[i].events = 0;
+ fds[i].events = 0;
/* If we're waiting for a connect or to be able to send
* on a socket we want to get write events */
if ((conn->state == SENDING) || (conn->state == CONNECTING))
- ufds[i].events |= POLLOUT;
+ fds[i].events |= POLLOUT;
/* If we're waiting to receive data we want to get
* read events */
if (conn->state == RECEIVING)
- ufds[i].events |= POLLIN;
+ fds[i].events |= POLLIN;
}
- nevents = realpoll(ufds, nfds, timeout);
+ nevents = realpoll(fds, nfds, timeout);
/* If there were no events we must have timed out or had an error */
if (nevents <= 0)
break;
@@ -597,29 +597,29 @@ int poll(POLL_SIGNATURE) {
continue;
/* Find the socket in the poll list */
- for (i = 0; ((i < nfds) && (ufds[i].fd != conn->sockid)); i++)
+ for (i = 0; ((i < nfds) && (fds[i].fd != conn->sockid)); i++)
/* Empty Loop */;
if (i == nfds)
continue;
show_msg(MSGDEBUG, "Checking socket %d for events\n", conn->sockid);
- if (!ufds[i].revents) {
+ if (!fds[i].revents) {
show_msg(MSGDEBUG, "No events on socket\n");
continue;
}
/* Clear any read or write events on the socket, we'll reset
* any that are necessary later. */
- setevents = ufds[i].revents;
+ setevents = fds[i].revents;
if (setevents & POLLIN) {
show_msg(MSGDEBUG, "Socket had read event\n");
- ufds[i].revents &= ~POLLIN;
+ fds[i].revents &= ~POLLIN;
nevents--;
}
if (setevents & POLLOUT) {
show_msg(MSGDEBUG, "Socket had write event\n");
- ufds[i].revents &= ~POLLOUT;
+ fds[i].revents &= ~POLLOUT;
nevents--;
}
if (setevents & (POLLERR | POLLNVAL | POLLHUP))
@@ -669,10 +669,10 @@ int poll(POLL_SIGNATURE) {
/* Now restore the events polled in each of the blocks */
for (i = 0; i < nfds; i++) {
- if (!(conn = find_socks_request(ufds[i].fd, 1)))
+ if (!(conn = find_socks_request(fds[i].fd, 1)))
continue;
- ufds[i].events = conn->selectevents;
+ fds[i].events = conn->selectevents;
}
return(nevents);
@@ -852,7 +852,7 @@ static int connect_server(struct connreq *conn) {
sizeof(conn->serveraddr));
show_msg(MSGDEBUG, "Connect returned %d, errno is %d\n", rc, errno);
- if (rc) {
+ if (rc && errno != EISCONN) {
if (errno != EINPROGRESS) {
show_msg(MSGERR, "Error %d attempting to connect to SOCKS "
"server (%s)\n", errno, strerror(errno));
@@ -862,6 +862,7 @@ static int connect_server(struct connreq *conn) {
conn->state = CONNECTING;
}
} else {
+ rc = 0;
show_msg(MSGDEBUG, "Socket %d connected to SOCKS server\n", conn->sockid);
conn->state = CONNECTED;
}