This page has moved to NAT IRC DCC resume patch for FreeBSD


I use a FreeBSD firewall at home. I was always bothered that I couldn't get DCC resume to work, so I took some tcpdumps and looked for the problem only to find out the natd code in FreeBSD was at fault. It tried to be too intelligent and masquerade all host connections. At the IRC layer this involved the IPs and such. This doesn't always work. I submitted a small patch to fix the problem.

You can find the complete description and followups on the FreeBSD bug database for Problem Report bin/50310

This is the code for the patch

--- libalias_dcc_resume.diff begins here ---
--- alias_irc.c.backup  Tue Mar 25 01:28:12 2003
+++ alias_irc.c Tue Mar 25 02:39:39 2003
@@ -140,6 +140,20 @@
                         }
                 }

+
+                if( sptr[i+0] == 'R' &&
+                    sptr[i+1] == 'E' &&
+                    sptr[i+2] == 'S' &&
+                    sptr[i+3] == 'U' &&
+                    sptr[i+4] == 'M' &&
+                    sptr[i+5] == 'E' &&
+                    sptr[i+6] == ' '){
+                        /* It's a resume packet, let it through, lBAD_CTCP
+                         * will copy the rest of the packet */
+                        DBprintf(("RESUME command...\n"));
+                        goto lBAD_CTCP;
+                }
+
                 DBprintf(("Transferring command...\n"));
                 while(sptr[i] != ' ') {
                         newpacket[iCopy++] = sptr[i];
--- libalias_dcc_resume.diff ends here ---

Ignacio Solis - [ @igso ] [ @ucsc ] [ @sluglug ] [ knowledgebase ] [ blog ]
Mail any questions or comments to isolis @ igso.net
Last updated June 30, 2003