From 6c9d46845fbaa89dc5481fb8d0d1c78728628122 Mon Sep 17 00:00:00 2001 From: David Troy Date: Tue, 4 Apr 2006 20:38:07 +0000 Subject: git-svn-id: http://svncommunity.digium.com/svn/astmanproxy/branches/1.20pre@80 f02b47b9-160a-0410-81a6-dc3441afb0ec --- TODO | 2 ++ src/astmanproxy.c | 6 +++--- src/include/ssl.h | 2 +- src/ssl.c | 17 ++++++++++------- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/TODO b/TODO index 5febf5a..439c6d8 100644 --- a/TODO +++ b/TODO @@ -1,3 +1,5 @@ +fix non-blocking in ast_connect + 'connected' flag; do not set until we get "authentication accepted' back from server Check for module versions; do not run without modules installed use a key? see loader.c in * diff --git a/src/astmanproxy.c b/src/astmanproxy.c index ac30b1b..9481610 100644 --- a/src/astmanproxy.c +++ b/src/astmanproxy.c @@ -663,13 +663,13 @@ int main(int argc, char *argv[]) /* Read initial state for user permissions */ ReadPerms(); + /* Initialize SSL Client-Side Context */ + client_init_secure(); + /* Initialize global client/server list */ sessions = NULL; LaunchAsteriskThreads(); - /* Initialize SSL Client-Side Context */ - client_init_secure(); - /* Setup listener socket to setup new sessions... */ if ((asock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { fprintf(stderr,"Cannot create listener socket!\n"); diff --git a/src/include/ssl.h b/src/include/ssl.h index a52b424..19c74a7 100644 --- a/src/include/ssl.h +++ b/src/include/ssl.h @@ -28,7 +28,7 @@ extern "C" { The negative fd is used as an index into this data structure (after processing). Choose SEC_MAX to be impossibly large for the application. */ -#define SEC_MAX 8 +#define SEC_MAX 16 struct { int fd; SSL* ssl; diff --git a/src/ssl.c b/src/ssl.c index ce38814..c77d57a 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -108,9 +108,10 @@ int client_init_secure(void) SSL_load_error_strings(); cctx = SSL_CTX_new (meth); - if (!cctx) { - fprintf(stderr, "Failed to create a client ssl context!\n"); - } + if (!cctx) + debugmsg("Failed to create a client ssl context!"); + else + debugmsg("Client SSL Context Initialized"); return 0; } @@ -346,10 +347,12 @@ int ast_connect(struct mansession *a) { sec_channel[s].ssl = ssl; SSL_set_fd(ssl, fd); /* and attach the real fd */ err = SSL_connect(ssl); /* now try and connect */ - } + } else + debugmsg("couldn't create ssl client context"); fd = -(s+2); /* offset by two and negate */ /* this tells us it is a ssl fd */ - } + } else + debugmsg("couldn't get SSL slot!"); if (err==-1) { close_sock(fd); /* that frees the ssl too */ @@ -370,8 +373,8 @@ int connect_nonb(struct mansession *a) s = get_real_fd(a->fd); - flags = fcntl(s, F_GETFL, 0); - fcntl(s, F_SETFL, flags | O_NONBLOCK); +/* flags = fcntl(s, F_GETFL, 0); + fcntl(s, F_SETFL, flags | O_NONBLOCK); */ if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&one, sizeof(one))==-1) { (void)close(s); -- cgit