From bf6837a9d0ab1fcedea5efda8caf6331340d6b4b Mon Sep 17 00:00:00 2001 From: ehouse Date: Wed, 30 Mar 2005 01:52:10 +0000 Subject: [PATCH] this file owns thread creation now --- relay/ctrl.cpp | 26 ++++++++++++++++++++------ relay/ctrl.h | 4 +--- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/relay/ctrl.cpp b/relay/ctrl.cpp index eaff3edfa..6ad8d8e9d 100644 --- a/relay/ctrl.cpp +++ b/relay/ctrl.cpp @@ -106,23 +106,37 @@ handle_command( const char* buf, int sock ) return 1; } -void* +static void* ctrl_thread_main( void* arg ) { - ThreadData* localStorage = (ThreadData*)arg; + int socket = (int)arg; for ( ; ; ) { char buf[512]; - ssize_t nGot = recv( localStorage->socket, buf, sizeof(buf)-1, 0 ); + ssize_t nGot = recv( socket, buf, sizeof(buf)-1, 0 ); if ( nGot <= 1 ) { /* break when just \n comes in */ break; } buf[nGot-2] = '\0'; /* kill \r\n stuff */ - if ( !handle_command( buf, localStorage->socket ) ) { + if ( !handle_command( buf, socket ) ) { break; } } - close ( localStorage->socket ); - delete localStorage; + close ( socket ); +} + +void +run_ctrl_thread( int ctrl_listener ) +{ + logf( "calling accept on socket %d\n", ctrl_listener ); + + sockaddr newaddr; + socklen_t siz = sizeof(newaddr); + int newSock = accept( ctrl_listener, &newaddr, &siz ); + logf( "got one for ctrl: %d", newSock ); + + pthread_t thread; + int result = pthread_create( &thread, NULL, + ctrl_thread_main, (void*)newSock ); } diff --git a/relay/ctrl.h b/relay/ctrl.h index e3363c0c9..108ec8aee 100644 --- a/relay/ctrl.h +++ b/relay/ctrl.h @@ -22,8 +22,6 @@ #ifndef _CTRL_H_ #define _CTRL_H_ -void* ctrl_thread_main( void* arg ); - - +void run_ctrl_thread( int ctrl_listener ); #endif