From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16254 invoked by alias); 3 Jan 2008 11:55:34 -0000 Received: (qmail 16245 invoked by uid 22791); 3 Jan 2008 11:55:31 -0000 X-Spam-Check-By: sourceware.org Received: from londo.lunn.ch (HELO londo.lunn.ch) (80.238.139.98) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 03 Jan 2008 11:50:39 +0000 Received: from lunn by londo.lunn.ch with local (Exim 3.36 #1 (Debian)) id 1JAOa3-0001f8-00; Thu, 03 Jan 2008 12:49:47 +0100 Date: Thu, 03 Jan 2008 11:55:00 -0000 From: Andrew Lunn To: NGUYEN Thanh SILICOMP Cc: ecos-discuss@ecos.sourceware.org Message-ID: <20080103114947.GH4550@lunn.ch> Mail-Followup-To: NGUYEN Thanh SILICOMP , ecos-discuss@ecos.sourceware.org References: <477B6E1E.1080206@orange-ftgroup.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <477B6E1E.1080206@orange-ftgroup.com> User-Agent: Mutt/1.5.17 (2007-11-01) X-IsSubscribed: yes Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Subject: Re: [ECOS] Application is blocked on the while loop within bsd_connect() function X-SW-Source: 2008-01/txt/msg00003.txt.bz2 On Wed, Jan 02, 2008 at 11:57:34AM +0100, NGUYEN Thanh SILICOMP wrote: > Hi all, > > Firstly, happy new year & best wished to all. > > I'm working on an application connecting to FTP server using ecos ftpclient > package. I constate that the application waits for ever on a blocking > semaphore of cyg_tsleep() function when there is no ftp server available. > > In fact, for connecting to ftp server, ftpclient uses connect() that calls > itself bas_connect() in which the while loop is used for waiting for the > connection etablishment or an error occurring : > > while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) { > error = tsleep((caddr_t)&so->so_timeo, PSOCK | PCATCH, > netcon, 0); > > if (error) > break; > > } > > The paramter timo of tsleep set to 0 makes cyg_tsleep waiting for a > blocking semaphore at line 325 of the file synch.c > (net/tcpip/current/src/ecos/synch.c). And the wait time is usually long and > triggers the watchdog process in my application. > > I would like to know that there is any way to set up a timeout on socket > before calling connect() so that the application will be able to get out > this blocking situation ? > > Any idea or sugestion will be appreciated. Take a look at http://www.developerweb.net/forum/showthread.php?p=13486. You will need to modify the ftpclient code to implement this scheme for connect. Andrew -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss