From patchwork Thu Jul 2 12:13:16 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: jonathan mzengeza X-Patchwork-Id: 5108 Return-Path: Received: from mail-qy0-f188.google.com (mail-qy0-f188.google.com [209.85.221.188]) by open-mesh.net (Postfix) with ESMTP id 5F21F1543A3 for ; Thu, 2 Jul 2009 12:35:16 +0000 (UTC) Received: by qyk26 with SMTP id 26so374186qyk.5 for ; Thu, 02 Jul 2009 05:13:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=G1KPS7flbKOHBx8f9KC0nlh/jmJVS1goQiEYpqYkI4M=; b=a5MeIG/o6h/E04uJ6rAv3lDZiJnArtPrOpfePExSDg5qUxhRLyTPwkiB+ZMPquFXLb YHXdIY8PfwBr6WB+oX0NwnPIx81OWDnSgzfNLLS+XaUXwjCOZvoIVmE6p1yY5o11gJg8 S918D5UjY7ZVl5YvvGNb163gt7qHASzXb8Ydo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=wJEoxoy9SvZMMtdtgvm7bFr0VlXSAhJ+Wev4MBLXn5jdhoPzwZ+ANTVjnoZO4h6Dr0 6zS+vQeqi0Qb2Ulo5SPb0/9ODw1/XojxexDeMX3yR/eLoy6Mcnq7TjHCPQe8zc3U9uYQ dSPgzS+izkpQze2NrmWBpxjuFDSTXns5/CZQc= MIME-Version: 1.0 Received: by 10.229.95.77 with SMTP id c13mr4681qcn.2.1246536796092; Thu, 02 Jul 2009 05:13:16 -0700 (PDT) Date: Thu, 2 Jul 2009 14:13:16 +0200 Message-ID: <1739bfe0907020513m78e06c83s980ce88b5cb5cca5@mail.gmail.com> From: jonathan mzengeza To: b.a.t.m.a.n@lists.open-mesh.net Subject: [B.A.T.M.A.N.] [PATCH] json output from vis server would fail with incomplete writes X-BeenThere: b.a.t.m.a.n@lists.open-mesh.net X-Mailman-Version: 2.1.11 Precedence: list Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Jul 2009 12:35:16 -0000 Hi Jonathan here I am attending a code sprint here at CSIR in South Africa. We are using B.A.T.M.A.N as a mesh networking software. We ran into a bug which occurred with web browser whereby the data written back through the socket was not complete thereby causing an error with our program. The fix works by making sure that all the data that is to be sent in the send_buffer is sent. It checks the value of ret until it equals the size of the data to be sent. --- if( ret != strlen( send_buffer ) || (thread_data->format == json) ) { pthread_mutex_lock( ¤t->mutex ); Index: vis.c =================================================================== --- vis.c (revision 1336) +++ vis.c (working copy) @@ -580,8 +580,18 @@ } else { send_buffer = current->json_buffer; } + + ret = write( thread_data->socket, send_buffer, strlen( send_buffer )); - ret = write( thread_data->socket, send_buffer, strlen( send_buffer ) ); + while(ret != strlen( send_buffer )) { + send_buffer += ret; + + if ( fsync(thread_data->socket) != 0 ) { + ret = write(thread_data->socket, send_buffer, strlen( send_buffer )); + } + + } +