From 51b8862cbaf9eae0b74021f33901c8d1985f4003 Mon Sep 17 00:00:00 2001 From: miker Date: Mon, 7 Jan 2008 02:08:10 +0000 Subject: [PATCH] Patch from Scott McKellar: 1. I moved almost everything from the header into the implementation file, since it isn't referenced elsewhere. All that's left is one prototype and some nested #includes. 2. I moved the nested #includes inside the compilation guard. 3. Except for osrf_stack_transport_handler(), all functions are now static. 4. I applied the const qualifier to the second parameter of osrf_stack_transport_handler(). 5. I plugged a memory leak in osrf_stack_transport_handler(). When unable to open a session, we were returning without freeing the input message. git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@1209 9efc2488-bf62-4759-914b-345cdb29e865 --- include/opensrf/osrf_stack.h | 18 +++++------------- src/libopensrf/osrf_stack.c | 31 +++++++++++++++++++++---------- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/include/opensrf/osrf_stack.h b/include/opensrf/osrf_stack.h index da2db3d..a898751 100644 --- a/include/opensrf/osrf_stack.h +++ b/include/opensrf/osrf_stack.h @@ -1,19 +1,11 @@ -#include -#include -#include - #ifndef OSRF_STACK_H #define OSRF_STACK_H -/* the max number of oilsMessage blobs present in any one root packet */ -#define OSRF_MAX_MSGS_PER_PACKET 256 -// ----------------------------------------------------------------------------- - -int osrf_stack_process( transport_client* client, int timeout, int* msg_received ); -osrfAppSession* osrf_stack_transport_handler( transport_message* msg, char* my_service ); -int osrf_stack_message_handler( osrf_app_session* session, osrf_message* msg ); -int osrf_stack_application_handler( osrf_app_session* session, osrf_message* msg ); - +#include +#include +#include +osrfAppSession* osrf_stack_transport_handler( transport_message* msg, + const char* my_service ); #endif diff --git a/src/libopensrf/osrf_stack.c b/src/libopensrf/osrf_stack.c index 7a7ed16..cd8cac6 100644 --- a/src/libopensrf/osrf_stack.c +++ b/src/libopensrf/osrf_stack.c @@ -1,13 +1,20 @@ #include #include -osrf_message* _do_client( osrf_app_session*, osrf_message* ); -osrf_message* _do_server( osrf_app_session*, osrf_message* ); +/* the max number of oilsMessage blobs present in any one root packet */ +#define OSRF_MAX_MSGS_PER_PACKET 256 +// ----------------------------------------------------------------------------- + +static int osrf_stack_process( transport_client* client, int timeout, int* msg_received ); +static int osrf_stack_message_handler( osrf_app_session* session, osrf_message* msg ); +static int osrf_stack_application_handler( osrf_app_session* session, osrf_message* msg ); +static osrf_message* _do_client( osrf_app_session*, osrf_message* ); +static osrf_message* _do_server( osrf_app_session*, osrf_message* ); /* tell osrf_app_session where the stack entry is */ int (*osrf_stack_entry_point) (transport_client*, int, int*) = &osrf_stack_process; -int osrf_stack_process( transport_client* client, int timeout, int* msg_received ) { +static int osrf_stack_process( transport_client* client, int timeout, int* msg_received ) { if( !client ) return -1; transport_message* msg = NULL; if(msg_received) *msg_received = 0; @@ -34,7 +41,8 @@ int osrf_stack_process( transport_client* client, int timeout, int* msg_received // ----------------------------------------------------------------------------- // Entry point into the stack // ----------------------------------------------------------------------------- -osrfAppSession* osrf_stack_transport_handler( transport_message* msg, char* my_service ) { +osrfAppSession* osrf_stack_transport_handler( transport_message* msg, + const char* my_service ) { if(!msg) return NULL; @@ -60,8 +68,11 @@ osrfAppSession* osrf_stack_transport_handler( transport_message* msg, char* my_s if( !session && my_service ) session = osrf_app_server_session_init( msg->thread, my_service, msg->sender); - if( !session ) return NULL; - + if( !session ) { + message_free( msg ); + return NULL; + } + if(!msg->is_error) osrfLogDebug( OSRF_LOG_MARK, "Session [%s] found or built", session->session_id ); @@ -108,7 +119,7 @@ osrfAppSession* osrf_stack_transport_handler( transport_message* msg, char* my_s return session; } -int osrf_stack_message_handler( osrf_app_session* session, osrf_message* msg ) { +static int osrf_stack_message_handler( osrf_app_session* session, osrf_message* msg ) { if(session == NULL || msg == NULL) return 0; @@ -133,7 +144,7 @@ int osrf_stack_message_handler( osrf_app_session* session, osrf_message* msg ) { /** If we return a message, that message should be passed up the stack, * if we return NULL, we're finished for now... */ -osrf_message* _do_client( osrf_app_session* session, osrf_message* msg ) { +static osrf_message* _do_client( osrf_app_session* session, osrf_message* msg ) { if(session == NULL || msg == NULL) return NULL; @@ -201,7 +212,7 @@ osrf_message* _do_client( osrf_app_session* session, osrf_message* msg ) { /** If we return a message, that message should be passed up the stack, * if we return NULL, we're finished for now... */ -osrf_message* _do_server( osrf_app_session* session, osrf_message* msg ) { +static osrf_message* _do_server( osrf_app_session* session, osrf_message* msg ) { if(session == NULL || msg == NULL) return NULL; @@ -240,7 +251,7 @@ osrf_message* _do_server( osrf_app_session* session, osrf_message* msg ) { -int osrf_stack_application_handler( osrf_app_session* session, osrf_message* msg ) { +static int osrf_stack_application_handler( osrf_app_session* session, osrf_message* msg ) { if(session == NULL || msg == NULL) return 0; if(msg->m_type == RESULT && session->type == OSRF_SESSION_CLIENT) { -- 2.43.2