summaryrefslogtreecommitdiffstats
path: root/network/tnfsd/remove_broken_tcp_support.diff
diff options
context:
space:
mode:
Diffstat (limited to 'network/tnfsd/remove_broken_tcp_support.diff')
-rw-r--r--network/tnfsd/remove_broken_tcp_support.diff168
1 files changed, 168 insertions, 0 deletions
diff --git a/network/tnfsd/remove_broken_tcp_support.diff b/network/tnfsd/remove_broken_tcp_support.diff
new file mode 100644
index 0000000000..010f04baf4
--- /dev/null
+++ b/network/tnfsd/remove_broken_tcp_support.diff
@@ -0,0 +1,168 @@
+diff -Naur tnfsd-23.0207.1_95c5b55/config.h tnfsd-23.0207.1_95c5b55.patched/config.h
+--- tnfsd-23.0207.1_95c5b55/config.h 2023-02-08 13:35:32.000000000 -0500
++++ tnfsd-23.0207.1_95c5b55.patched/config.h 2023-02-08 13:37:37.069280883 -0500
+@@ -28,7 +28,6 @@
+ #define MAX_DHND_PER_CONN 8 /* max open directories per client */
+ #define MAX_CLIENTS 4096 /* maximum number of UDP clients */
+ #define MAX_CLIENTS_PER_IP 4096 /* maximum number of UDP clients from single IP */
+-#define MAX_TCP_CONN 256 /* Maximum number of TCP clients */
+ #define SESSION_TIMEOUT 21600 /* Sessions are thrown out after no contact for this many seconds. 0 = no timeout */
+ #define TNFS_HEADERSZ 4 /* minimum header size */
+ #define TNFS_MAX_PAYLOAD (MAXMSGSZ - TNFS_HEADERSZ - 1) /* Maximum usuable payload in a UDP datagram (-1 for status byte) */
+diff -Naur tnfsd-23.0207.1_95c5b55/datagram.c tnfsd-23.0207.1_95c5b55.patched/datagram.c
+--- tnfsd-23.0207.1_95c5b55/datagram.c 2023-02-08 13:35:32.000000000 -0500
++++ tnfsd-23.0207.1_95c5b55.patched/datagram.c 2023-02-08 13:40:57.701262001 -0500
+@@ -50,7 +50,6 @@
+ #include "tnfs_file.h"
+
+ int sockfd; /* UDP global socket file descriptor */
+-int tcplistenfd; /* TCP listening socket file descriptor */
+
+ tnfs_cmdfunc dircmd[NUM_DIRCMDS] =
+ {&tnfs_opendir, &tnfs_readdir, &tnfs_closedir,
+@@ -141,23 +140,6 @@
+ if (bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
+ die("Unable to bind");
+
+- /* Create the TCP socket */
+- tcplistenfd = socket(AF_INET, SOCK_STREAM, 0);
+- if (tcplistenfd < 0)
+- {
+- die("Unable to create TCP socket");
+- }
+-
+- memset(&servaddr, 0, sizeof(servaddr));
+- servaddr.sin_family = AF_INET;
+- servaddr.sin_addr.s_addr = htons(INADDR_ANY);
+- servaddr.sin_port = htons(TNFSD_PORT);
+- if (bind(tcplistenfd, (struct sockaddr *)&servaddr,
+- sizeof(servaddr)) < 0)
+- {
+- die("Unable to bind TCP socket");
+- }
+- listen(tcplistenfd, 5);
+ }
+
+ void tnfs_mainloop()
+@@ -165,25 +147,13 @@
+ int readyfds, i;
+ fd_set fdset;
+ fd_set errfdset;
+- int tcpsocks[MAX_TCP_CONN];
+-
+- memset(&tcpsocks, 0, sizeof(tcpsocks));
+
+ while (1)
+ {
+ FD_ZERO(&fdset);
+
+- /* add UDP socket and TCP listen socket to fdset */
++ /* add UDP socket to fdset */
+ FD_SET(sockfd, &fdset);
+- FD_SET(tcplistenfd, &fdset);
+-
+- for (i = 0; i < MAX_TCP_CONN; i++)
+- {
+- if (tcpsocks[i])
+- {
+- FD_SET(tcpsocks[i], &fdset);
+- }
+- }
+
+ FD_COPY(&fdset, &errfdset);
+ if ((readyfds = select(FD_SETSIZE, &fdset, NULL, &errfdset, NULL)) != 0)
+@@ -199,55 +169,10 @@
+ {
+ tnfs_handle_udpmsg();
+ }
+- /* Incoming TCP connection? */
+- else if (FD_ISSET(tcplistenfd, &fdset))
+- {
+- tcp_accept(&tcpsocks[0]);
+- }
+- else
+- {
+- for (i = 0; i < MAX_TCP_CONN; i++)
+- {
+- if (tcpsocks[i])
+- {
+- if (FD_ISSET(tcpsocks[i], &fdset))
+- {
+- tnfs_handle_tcpmsg(tcpsocks[i]);
+- }
+- }
+- }
+- }
+ }
+ }
+ }
+
+-void tcp_accept(int *socklist)
+-{
+- int acc_fd, i;
+- struct sockaddr_in cli_addr;
+- socklen_t cli_len = sizeof(cli_addr);
+- int *fdptr;
+-
+- acc_fd = accept(tcplistenfd, (struct sockaddr *)&cli_addr, &cli_len);
+- if (acc_fd < 1)
+- {
+- fprintf(stderr, "WARNING: unable to accept TCP connection\n");
+- return;
+- }
+-
+- fdptr = socklist;
+- for (i = 0; i < MAX_TCP_CONN; i++)
+- {
+- if (*fdptr == 0)
+- {
+- *fdptr = acc_fd;
+- return;
+- }
+- }
+-
+- /* tell the client 'too many connections' */
+-}
+-
+ void tnfs_handle_udpmsg()
+ {
+ socklen_t len;
+@@ -273,15 +198,6 @@
+ *(rxbuf + rxbytes) = 0;
+ }
+
+-void tnfs_handle_tcpmsg(int cli_fd)
+-{
+- char buf[255];
+- int sz;
+-
+- sz = read(cli_fd, buf, sizeof(buf));
+- printf("DEBUG: rx of tcpmsg: %d bytes: %s\n", sz, buf);
+-}
+-
+ void tnfs_decode(struct sockaddr_in *cliaddr, int rxbytes, unsigned char *rxbuf)
+ {
+ Header hdr;
+diff -Naur tnfsd-23.0207.1_95c5b55/datagram.h tnfsd-23.0207.1_95c5b55.patched/datagram.h
+--- tnfsd-23.0207.1_95c5b55/datagram.h 2023-02-08 13:35:32.000000000 -0500
++++ tnfsd-23.0207.1_95c5b55.patched/datagram.h 2023-02-08 13:39:55.229267881 -0500
+@@ -51,8 +51,6 @@
+ void tnfs_sockinit();
+ void tnfs_mainloop();
+ void tnfs_handle_udpmsg();
+-void tcp_accept(int *fdlist);
+-void tnfs_handle_tcpmsg(int cli_fd);
+ void tnfs_decode(struct sockaddr_in *cliaddr,
+ int rxbytes, unsigned char *rxbuf);
+ void tnfs_invalidsession(Header *hdr);
+diff -Naur tnfsd-23.0207.1_95c5b55/tnfs.h tnfsd-23.0207.1_95c5b55.patched/tnfs.h
+--- tnfsd-23.0207.1_95c5b55/tnfs.h 2023-02-08 13:35:32.000000000 -0500
++++ tnfsd-23.0207.1_95c5b55.patched/tnfs.h 2023-02-08 13:40:15.637265960 -0500
+@@ -136,7 +136,6 @@
+ #endif
+ int lastmsgsz; /* last message's size inc. hdr */
+ uint8_t lastseqno; /* last sequence number */
+- uint8_t isTCP; /* uses the TCP transport */
+ } Session;
+
+ typedef struct _header