diff options
author | Volker Stolz <vs@FreeBSD.org> | 2005-03-17 14:10:03 +0000 |
---|---|---|
committer | Volker Stolz <vs@FreeBSD.org> | 2005-03-17 14:10:03 +0000 |
commit | 31e5f22cd00025c2a1c6a10be6fd7a361a72edc9 (patch) | |
tree | 5370c4c911c2b2d8fc1eebe347824e10117ba920 /comms | |
parent | Update to 1.3.6 (diff) |
Bug in code meant it would timeout as it would not reply to a
"heartbeat" check. There is no way the original linux version would work
properly without this code.
PR: ports/78574
Submitted by: Diane Bruce (maintainer)
Notes
Notes:
svn path=/head/; revision=131503
Diffstat (limited to 'comms')
-rw-r--r-- | comms/echolinux/Makefile | 2 | ||||
-rw-r--r-- | comms/echolinux/files/patch-echolinux_control.c | 84 |
2 files changed, 84 insertions, 2 deletions
diff --git a/comms/echolinux/Makefile b/comms/echolinux/Makefile index 2836c697454e..333905ed5701 100644 --- a/comms/echolinux/Makefile +++ b/comms/echolinux/Makefile @@ -7,7 +7,7 @@ PORTNAME= echolinux PORTVERSION= 0.16a -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= comms MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= cqinet diff --git a/comms/echolinux/files/patch-echolinux_control.c b/comms/echolinux/files/patch-echolinux_control.c index c1645e7e1ac2..98201ab20344 100644 --- a/comms/echolinux/files/patch-echolinux_control.c +++ b/comms/echolinux/files/patch-echolinux_control.c @@ -1,5 +1,14 @@ --- echolinux/control.c.orig Mon Feb 2 22:29:46 2004 -+++ echolinux/control.c Fri Jul 2 00:58:38 2004 ++++ echolinux/control.c Mon Mar 7 15:52:46 2005 +@@ -13,7 +13,7 @@ + #include <stdio.h> + #include <stdlib.h> + #include <sys/ioctl.h> +-#include <linux/soundcard.h> ++#include <sys/soundcard.h> + #include <sys/types.h> + #include <sys/stat.h> + #include <sys/ioctl.h> @@ -24,7 +24,8 @@ #include <arpa/inet.h> #include <netdb.h> @@ -10,3 +19,76 @@ #include <signal.h> #include <string.h> #include <sys/time.h> +@@ -354,7 +355,7 @@ + timeout.tv_sec = 10; + timeout.tv_usec = 0; + } +- ++ + if((i == 0) && (audioPid > 0)){ // timeout & connected + connectTimeout++; + if(connectTimeout == CONNECT_TRY){ +@@ -388,28 +389,32 @@ + disconnect(FALSE); + } + if(isRTCPSdespacket(inBuffer, length)){ +- if((audioPid > 0) && +- (inAddr.sin_addr.s_addr == destAddr.sin_addr.s_addr)){ +- sdesItems.nitems = 1; +- sdesItems.item[0].r_item = RTCP_SDES_NAME; +- sdesItems.item[0].r_text = NULL; +- remoteName[0] = 0; +- parseSDES(inBuffer, &sdesItems); +- if(sdesItems.item[0].r_text != NULL){ +- copySDESitem(sdesItems.item[0].r_text, &remoteName[2]); +- } +- remoteName[0] = CONNECT; +- remoteName[1] = ' '; +- puts(remoteName); +- if(atemptingConnect){ +- atemptingConnect = 0; +- fputs("P connect.wav\n", audioOutFd); +- fputs("I\n", audioOutFd); +- } +- connectTimeout = 0; // reset the counter +- } +- else { +- if(audioPid<=0){ ++ if (audioPid > 0) { ++ sendto(outControlSocket, ++ *sdesPacket, ++ sdesLength, ++ 0, ++ (struct sockaddr *)&destAddr, ++ sizeof destAddr); ++ if(inAddr.sin_addr.s_addr == destAddr.sin_addr.s_addr){ ++ sdesItems.nitems = 1; ++ sdesItems.item[0].r_item = RTCP_SDES_NAME; ++ sdesItems.item[0].r_text = NULL; ++ remoteName[0] = 0; ++ parseSDES(inBuffer, &sdesItems); ++ if(sdesItems.item[0].r_text != NULL){ ++ copySDESitem(sdesItems.item[0].r_text, &remoteName[2]); ++ } ++ remoteName[0] = CONNECT; ++ remoteName[1] = ' '; ++ puts(remoteName); ++ if(atemptingConnect){ ++ atemptingConnect = 0; ++ fputs("P connect.wav\n", audioOutFd); ++ fputs("I\n", audioOutFd); ++ } ++ connectTimeout = 0; // reset the counter ++ } else { /* audioPid <= 0 */ + sdesItems.nitems = 1; + sdesItems.item[0].r_item = RTCP_SDES_NAME; + sdesItems.item[0].r_text = NULL; +@@ -424,8 +429,6 @@ + makeConnection(inet_ntoa(inAddr.sin_addr)); + fputs("P connect.wav\n", audioOutFd); + fputs("I\n", audioOutFd); +- } +- else { + } + } + } |