tube.c (256281) | tube.c (269257) |
---|---|
1/* 2 * util/tube.c - pipe service 3 * 4 * Copyright (c) 2008, NLnet Labs. All rights reserved. 5 * 6 * This software is open source. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 7 unchanged lines hidden (view full) --- 16 * this list of conditions and the following disclaimer in the documentation 17 * and/or other materials provided with the distribution. 18 * 19 * Neither the name of the NLNET LABS nor the names of its contributors may 20 * be used to endorse or promote products derived from this software without 21 * specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 1/* 2 * util/tube.c - pipe service 3 * 4 * Copyright (c) 2008, NLnet Labs. All rights reserved. 5 * 6 * This software is open source. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 7 unchanged lines hidden (view full) --- 16 * this list of conditions and the following disclaimer in the documentation 17 * and/or other materials provided with the distribution. 18 * 19 * Neither the name of the NLNET LABS nor the names of its contributors may 20 * be used to endorse or promote products derived from this software without 21 * specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 25 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 26 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE 27 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 28 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 29 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 30 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 31 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 32 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33 * POSSIBILITY OF SUCH DAMAGE. | 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 27 * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 29 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 30 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 31 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 32 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
34 */ 35 36/** 37 * \file 38 * 39 * This file contains pipe service functions. 40 */ 41#include "config.h" --- 321 unchanged lines hidden (view full) --- 363 log_assert(*len < 65536*2); 364 *buf = (uint8_t*)malloc(*len); 365 if(!*buf) { 366 log_err("tube read out of memory"); 367 (void)fd_set_nonblock(fd); 368 return 0; 369 } 370 d = 0; | 34 */ 35 36/** 37 * \file 38 * 39 * This file contains pipe service functions. 40 */ 41#include "config.h" --- 321 unchanged lines hidden (view full) --- 363 log_assert(*len < 65536*2); 364 *buf = (uint8_t*)malloc(*len); 365 if(!*buf) { 366 log_err("tube read out of memory"); 367 (void)fd_set_nonblock(fd); 368 return 0; 369 } 370 d = 0; |
371 while(d != (ssize_t)*len) { | 371 while(d < (ssize_t)*len) { |
372 if((r=read(fd, (*buf)+d, (size_t)((ssize_t)*len)-d)) == -1) { 373 log_err("tube msg read failed: %s", strerror(errno)); 374 (void)fd_set_nonblock(fd); 375 free(*buf); 376 return 0; 377 } 378 if(r == 0) { /* EOF */ 379 (void)fd_set_nonblock(fd); --- 348 unchanged lines hidden --- | 372 if((r=read(fd, (*buf)+d, (size_t)((ssize_t)*len)-d)) == -1) { 373 log_err("tube msg read failed: %s", strerror(errno)); 374 (void)fd_set_nonblock(fd); 375 free(*buf); 376 return 0; 377 } 378 if(r == 0) { /* EOF */ 379 (void)fd_set_nonblock(fd); --- 348 unchanged lines hidden --- |