From a08b589d09d5197f9a76d549a189e4686bd2ca8c Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Sun, 13 Nov 2005 19:40:44 +0000 Subject: Applying license to pjproject git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@49 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib/src/pjlib-test/util.c | 251 ++++++++++++++++++++++++-------------------- 1 file changed, 136 insertions(+), 115 deletions(-) (limited to 'pjlib/src/pjlib-test/util.c') diff --git a/pjlib/src/pjlib-test/util.c b/pjlib/src/pjlib-test/util.c index 2d985716..44281e26 100644 --- a/pjlib/src/pjlib-test/util.c +++ b/pjlib/src/pjlib-test/util.c @@ -1,115 +1,136 @@ -/* $Id$ - */ -#include "test.h" -#include - -void app_perror(const char *msg, pj_status_t rc) -{ - char errbuf[256]; - - PJ_CHECK_STACK(); - - pj_strerror(rc, errbuf, sizeof(errbuf)); - PJ_LOG(1,("test", "%s: [pj_status_t=%d] %s", msg, rc, errbuf)); -} - -#define SERVER 0 -#define CLIENT 1 - -pj_status_t app_socket(int family, int type, int proto, int port, - pj_sock_t *ptr_sock) -{ - pj_sockaddr_in addr; - pj_sock_t sock; - pj_status_t rc; - - rc = pj_sock_socket(family, type, proto, &sock); - if (rc != PJ_SUCCESS) - return rc; - - pj_memset(&addr, 0, sizeof(addr)); - addr.sin_family = (pj_uint16_t)family; - addr.sin_port = (short)(port!=-1 ? pj_htons((pj_uint16_t)port) : 0); - rc = pj_sock_bind(sock, &addr, sizeof(addr)); - if (rc != PJ_SUCCESS) - return rc; - - if (type == PJ_SOCK_STREAM) { - rc = pj_sock_listen(sock, 5); - if (rc != PJ_SUCCESS) - return rc; - } - - *ptr_sock = sock; - return PJ_SUCCESS; -} - -pj_status_t app_socketpair(int family, int type, int protocol, - pj_sock_t *serverfd, pj_sock_t *clientfd) -{ - int i; - static unsigned short port = 11000; - pj_sockaddr_in addr; - pj_str_t s; - pj_status_t rc = 0; - pj_sock_t sock[2]; - - /* Create both sockets. */ - for (i=0; i<2; ++i) { - rc = pj_sock_socket(family, type, protocol, &sock[i]); - if (rc != PJ_SUCCESS) { - if (i==1) - pj_sock_close(sock[0]); - return rc; - } - } - - /* Retry bind */ - pj_memset(&addr, 0, sizeof(addr)); - addr.sin_family = PJ_AF_INET; - for (i=0; i<5; ++i) { - addr.sin_port = pj_htons(port++); - rc = pj_sock_bind(sock[SERVER], &addr, sizeof(addr)); - if (rc == PJ_SUCCESS) - break; - } - - if (rc != PJ_SUCCESS) - goto on_error; - - /* For TCP, listen the socket. */ - if (type == PJ_SOCK_STREAM) { - rc = pj_sock_listen(sock[SERVER], PJ_SOMAXCONN); - if (rc != PJ_SUCCESS) - goto on_error; - } - - /* Connect client socket. */ - addr.sin_addr = pj_inet_addr(pj_cstr(&s, "127.0.0.1")); - rc = pj_sock_connect(sock[CLIENT], &addr, sizeof(addr)); - if (rc != PJ_SUCCESS) - goto on_error; - - /* For TCP, must accept(), and get the new socket. */ - if (type == PJ_SOCK_STREAM) { - pj_sock_t newserver; - - rc = pj_sock_accept(sock[SERVER], &newserver, NULL, NULL); - if (rc != PJ_SUCCESS) - goto on_error; - - /* Replace server socket with new socket. */ - pj_sock_close(sock[SERVER]); - sock[SERVER] = newserver; - } - - *serverfd = sock[SERVER]; - *clientfd = sock[CLIENT]; - - return rc; - -on_error: - for (i=0; i<2; ++i) - pj_sock_close(sock[i]); - return rc; -} +/* $Id$ + */ +/* + * PJLIB - PJ Foundation Library + * (C)2003-2005 Benny Prijono + * + * Author: + * Benny Prijono + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "test.h" +#include + +void app_perror(const char *msg, pj_status_t rc) +{ + char errbuf[256]; + + PJ_CHECK_STACK(); + + pj_strerror(rc, errbuf, sizeof(errbuf)); + PJ_LOG(1,("test", "%s: [pj_status_t=%d] %s", msg, rc, errbuf)); +} + +#define SERVER 0 +#define CLIENT 1 + +pj_status_t app_socket(int family, int type, int proto, int port, + pj_sock_t *ptr_sock) +{ + pj_sockaddr_in addr; + pj_sock_t sock; + pj_status_t rc; + + rc = pj_sock_socket(family, type, proto, &sock); + if (rc != PJ_SUCCESS) + return rc; + + pj_memset(&addr, 0, sizeof(addr)); + addr.sin_family = (pj_uint16_t)family; + addr.sin_port = (short)(port!=-1 ? pj_htons((pj_uint16_t)port) : 0); + rc = pj_sock_bind(sock, &addr, sizeof(addr)); + if (rc != PJ_SUCCESS) + return rc; + + if (type == PJ_SOCK_STREAM) { + rc = pj_sock_listen(sock, 5); + if (rc != PJ_SUCCESS) + return rc; + } + + *ptr_sock = sock; + return PJ_SUCCESS; +} + +pj_status_t app_socketpair(int family, int type, int protocol, + pj_sock_t *serverfd, pj_sock_t *clientfd) +{ + int i; + static unsigned short port = 11000; + pj_sockaddr_in addr; + pj_str_t s; + pj_status_t rc = 0; + pj_sock_t sock[2]; + + /* Create both sockets. */ + for (i=0; i<2; ++i) { + rc = pj_sock_socket(family, type, protocol, &sock[i]); + if (rc != PJ_SUCCESS) { + if (i==1) + pj_sock_close(sock[0]); + return rc; + } + } + + /* Retry bind */ + pj_memset(&addr, 0, sizeof(addr)); + addr.sin_family = PJ_AF_INET; + for (i=0; i<5; ++i) { + addr.sin_port = pj_htons(port++); + rc = pj_sock_bind(sock[SERVER], &addr, sizeof(addr)); + if (rc == PJ_SUCCESS) + break; + } + + if (rc != PJ_SUCCESS) + goto on_error; + + /* For TCP, listen the socket. */ + if (type == PJ_SOCK_STREAM) { + rc = pj_sock_listen(sock[SERVER], PJ_SOMAXCONN); + if (rc != PJ_SUCCESS) + goto on_error; + } + + /* Connect client socket. */ + addr.sin_addr = pj_inet_addr(pj_cstr(&s, "127.0.0.1")); + rc = pj_sock_connect(sock[CLIENT], &addr, sizeof(addr)); + if (rc != PJ_SUCCESS) + goto on_error; + + /* For TCP, must accept(), and get the new socket. */ + if (type == PJ_SOCK_STREAM) { + pj_sock_t newserver; + + rc = pj_sock_accept(sock[SERVER], &newserver, NULL, NULL); + if (rc != PJ_SUCCESS) + goto on_error; + + /* Replace server socket with new socket. */ + pj_sock_close(sock[SERVER]); + sock[SERVER] = newserver; + } + + *serverfd = sock[SERVER]; + *clientfd = sock[CLIENT]; + + return rc; + +on_error: + for (i=0; i<2; ++i) + pj_sock_close(sock[i]); + return rc; +} -- cgit v1.2.3