Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Aug 2005 23:29:29 -0600
From:      Travis Poppe <tlp@liquidx.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/85340: [PORT FIX] Fix net/naim so it will connect again
Message-ID:  <200508262329.29862.tlp@liquidx.org>
Resent-Message-ID: <200508270530.j7R5U8Fl009748@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         85340
>Category:       ports
>Synopsis:       [PORT FIX] Fix net/naim so it will connect again
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          maintainer-update
>Submitter-Id:   current-users
>Arrival-Date:   Sat Aug 27 05:30:08 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator:     Travis Poppe
>Release:        
>Organization:
>Environment:
>Description:
I was notified today that net/naim no longer connects to AIM. This is
not a problem specific to FreeBSD.

I've been provided an unofficial patch that fixes the problem (there will not
likely be an official update for quite some time, as the author probably
won't be available any time soon). I've included a diff containing the
fix/patch.

Patch author: Dane Wagner

Additional discussion at: http://naimdoc.net/index.php/TOC_Issues
>How-To-Repeat:
>Fix:
diff -ruN naim.orig/Makefile naim/Makefile
--- naim.orig/Makefile	Mon Apr 11 21:26:14 2005
+++ naim/Makefile	Fri Aug 26 23:13:23 2005
@@ -7,6 +7,7 @@
 
 PORTNAME=	naim
 PORTVERSION=	0.11.7.3.1
+PORTREVISION=	1
 CATEGORIES=	net irc
 MASTER_SITES=	http://shell.n.ml.org/n/naim/
 
diff -ruN naim.orig/files/patch-toc.c naim/files/patch-toc.c
--- naim.orig/files/patch-toc.c	Wed Dec 31 17:00:00 1969
+++ naim/files/patch-toc.c	Fri Aug 26 23:13:01 2005
@@ -0,0 +1,92 @@
+--- firetalk/toc.c.orig	Sun Jul 18 21:10:04 2004
++++ firetalk/toc.c	Fri Aug 26 13:09:16 2005
+@@ -1415,28 +1415,28 @@
+ 	} else if (strcmp(arg0, "PAUSE") == 0) {
+ 		c->connectstate = 1;
+ 		firetalk_internal_set_connectstate(c, FCS_WAITING_SIGNON);
+-	} else if (strcmp(arg0, "IM_IN") == 0) {
+-		args = toc_parse_args(data, 4);
++	} else if (strcmp(arg0, "IM_IN2") == 0) {
++		args = toc_parse_args(data, 5);
+ 		if ((args[1] == NULL) || (args[2] == NULL) || (args[3] == NULL)) {
+ 			(void)toc_internal_disconnect(c, FE_INVALIDFORMAT);
+ 			return FE_INVALIDFORMAT;
+ 		}
+-		(void)aim_handle_ect(c, args[1], args[3], args[2][0] == 'T'?1:0);
+-		if (strlen(args[3]) > 0) {
++		(void)aim_handle_ect(c, args[1], args[4], args[2][0] == 'T'?1:0);
++		if (strlen(args[4]) > 0) {
+ 			char *mestart;
+ 
+-			if (strncasecmp(args[3],"/me ",4) == 0)
+-				firetalk_callback_im_getaction(c, args[1], args[2][0] == 'T'?1:0, &args[3][4]);
+-			else if ((mestart = strstr(args[3],">/me ")) != NULL)
++			if (strncasecmp(args[4],"/me ",4) == 0)
++				firetalk_callback_im_getaction(c, args[1], args[2][0] == 'T'?1:0, &args[4][4]);
++			else if ((mestart = strstr(args[4],">/me ")) != NULL)
+ 				firetalk_callback_im_getaction(c, args[1], args[2][0] == 'T'?1:0, &mestart[5]);
+ 			else {
+ 				if (args[2][0] == 'T') /* interpolate only auto-messages */
+-					firetalk_callback_im_getmessage(c, args[1], 1, aim_interpolate_variables(args[3], c->nickname));
++					firetalk_callback_im_getmessage(c, args[1], 1, aim_interpolate_variables(args[4], c->nickname));
+ 				else
+-					firetalk_callback_im_getmessage(c, args[1], 0, args[3]);
++					firetalk_callback_im_getmessage(c, args[1], 0, args[4]);
+ 			}
+ 		}
+-	} else if (strcmp(arg0, "UPDATE_BUDDY") == 0) {
++	} else if (strcmp(arg0, "UPDATE_BUDDY2") == 0) {
+ 		args = toc_parse_args(data,7);
+ 		if (!args[1] || !args[2] || !args[3] || !args[4] || !args[5] || !args[6]) {
+ 			(void)toc_internal_disconnect(c, FE_INVALIDFORMAT);
+@@ -1609,6 +1609,7 @@
+ 	char *tempchr2;
+ 	int permit_mode;
+ 	firetalk_t fchandle;
++	int magicnum;
+ 
+   got_data_connecting_start:
+ 	r = toc_find_packet(c,buffer,bufferpos,data,c->connectstate == 0 ? SFLAP_FRAME_SIGNON : SFLAP_FRAME_DATA,&length);
+@@ -1641,7 +1642,23 @@
+ 			firetalk_callback_needpass(c,password,128);
+ 
+ 			c->connectstate = 1;
+-			r = toc_send_printf(c,"toc_signon login.oscar.aol.com 5190 %s %s english \"" PACKAGE_NAME ":" PACKAGE_VERSION ":contact " PACKAGE_BUGREPORT "\"",c->nickname,toc_hash_password(password));
++
++			magicnum = 0;
++			{
++				/* see www.snaphat.com/toc2.txt */
++				int a, b, cnum, sn, pw;
++
++				sn = c->nickname[0] - 96;
++				pw = (int)(password[0]) - 96;
++
++				a = sn * 7696 + 738816;
++				b = sn * 746512;
++				cnum = pw * a;
++
++				magicnum = cnum - a + b + 71665152;
++			}
++
++			r = toc_send_printf(c,"toc2_signon login.oscar.aol.com 5190 %s %s english \"TIC:naim\" 160 %d",c->nickname,toc_hash_password(password), magicnum);
+ 			if (r != FE_SUCCESS) {
+ 				firetalk_callback_connectfailed(c,r,"Error sending login string");
+ 				return r;
+@@ -1701,7 +1718,7 @@
+ 						abort();
+ 				}
+ 				c->connectstate = 3;
+-			} else if (strcmp(arg0,"CONFIG") == 0) {
++			} else if (strcmp(arg0,"CONFIG2") == 0) {
+ 				char	*group;
+ 
+ 				group = strdup("Saved buddy");
+@@ -1711,7 +1728,7 @@
+ 				fchandle = firetalk_find_handle(c);
+ 				args = toc_parse_args(data,2);
+ 				if (!args[1]) {
+-					firetalk_callback_connectfailed(c,FE_INVALIDFORMAT,"CONFIG");
++					firetalk_callback_connectfailed(c,FE_INVALIDFORMAT,"CONFIG2");
+ 					return FE_INVALIDFORMAT;
+ 				}
+ 				tempchr1 = args[1];
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200508262329.29862.tlp>