[Opensrf-commits] r1235 - trunk/src/libopensrf
svn at svn.open-ils.org
svn at svn.open-ils.org
Thu Jan 31 14:35:15 EST 2008
Author: miker
Date: 2008-01-31 14:07:30 -0500 (Thu, 31 Jan 2008)
New Revision: 1235
Modified:
trunk/src/libopensrf/osrf_app_session.c
Log:
Patch from Scott McKellar:
1. I replaced the following identifiers with their camel-case
equivalents:
osrf_message ==> osrfMessage
osrf_message_free ==> osrfMessageFree
string_array ==> osrfStringArray
string_array_get_string ==> osrfStringArrayGetString
2. In osrf_app_server_session_init() we were leaking session in the
case of an early return. I stuck in a free().
3. Likewise in osrfAppSessionMakeLocaleRequest() we were leaking req
in the case of an early return. I plugged that one too.
4. In osrfAppRequestRespondComplete() we were leaking payload in one
branch of an if/else. I moved the osrfMessageFree() beyond both
branches so that it would be unconditional.
Modified: trunk/src/libopensrf/osrf_app_session.c
===================================================================
--- trunk/src/libopensrf/osrf_app_session.c 2008-01-31 19:05:18 UTC (rev 1234)
+++ trunk/src/libopensrf/osrf_app_session.c 2008-01-31 19:07:30 UTC (rev 1235)
@@ -2,11 +2,11 @@
#include <time.h>
/** Send the given message */
-static int _osrf_app_session_send( osrfAppSession*, osrf_message* msg );
+static int _osrf_app_session_send( osrfAppSession*, osrfMessage* msg );
static int osrfAppSessionMakeLocaleRequest(
osrfAppSession* session, const jsonObject* params, const char* method_name,
- int protocol, string_array* param_strings, char* locale );
+ int protocol, osrfStringArray* param_strings, char* locale );
/* the global app_session cache */
osrfHash* osrfAppSessionCache = NULL;
@@ -18,7 +18,7 @@
/** Allocates and initializes a new app_request object */
static osrfAppRequest* _osrf_app_request_init(
- osrfAppSession* session, osrf_message* msg ) {
+ osrfAppSession* session, osrfMessage* msg ) {
osrfAppRequest* req =
(osrfAppRequest*) safe_malloc(sizeof(osrfAppRequest));
@@ -43,12 +43,12 @@
static void _osrf_app_request_free( void * req ){
if( req == NULL ) return;
osrfAppRequest* r = (osrfAppRequest*) req;
- if( r->payload ) osrf_message_free( r->payload );
+ if( r->payload ) osrfMessageFree( r->payload );
free( r );
}
/** Pushes the given message onto the list of 'responses' to this request */
-static void _osrf_app_request_push_queue( osrfAppRequest* req, osrf_message* result ){
+static void _osrf_app_request_push_queue( osrfAppRequest* req, osrfMessage* result ){
if(req == NULL || result == NULL) return;
osrfLogDebug( OSRF_LOG_MARK, "App Session pushing request [%d] onto request queue", result->thread_trace );
if(req->result == NULL) {
@@ -56,8 +56,8 @@
} else {
- osrf_message* ptr = req->result;
- osrf_message* ptr2 = req->result->next;
+ osrfMessage* ptr = req->result;
+ osrfMessage* ptr2 = req->result->next;
while( ptr2 ) {
ptr = ptr2;
ptr2 = ptr2->next;
@@ -90,13 +90,13 @@
* seconds for a message to appear in the receive queue. Once it arrives it is returned.
* If no messages arrive in the timeout provided, null is returned.
*/
-static osrf_message* _osrf_app_request_recv( osrfAppRequest* req, int timeout ) {
+static osrfMessage* _osrf_app_request_recv( osrfAppRequest* req, int timeout ) {
if(req == NULL) return NULL;
if( req->result != NULL ) {
/* pop off the first message in the list */
- osrf_message* tmp_msg = req->result;
+ osrfMessage* tmp_msg = req->result;
req->result = req->result->next;
return tmp_msg;
}
@@ -113,8 +113,8 @@
if( req->result != NULL ) { /* if we received anything */
/* pop off the first message in the list */
osrfLogDebug( OSRF_LOG_MARK, "app_request_recv received a message, returning it");
- osrf_message* ret_msg = req->result;
- osrf_message* tmp_msg = ret_msg->next;
+ osrfMessage* ret_msg = req->result;
+ osrfMessage* tmp_msg = ret_msg->next;
req->result = tmp_msg;
if (ret_msg->sender_locale) {
if (req->session->session_locale)
@@ -132,8 +132,8 @@
if( req->result != NULL ) { /* if we received anything */
/* pop off the first message in the list */
osrfLogDebug( OSRF_LOG_MARK, "app_request_recv received a message, returning it");
- osrf_message* ret_msg = req->result;
- osrf_message* tmp_msg = ret_msg->next;
+ osrfMessage* ret_msg = req->result;
+ osrfMessage* tmp_msg = ret_msg->next;
req->result = tmp_msg;
if (ret_msg->sender_locale) {
if (req->session->session_locale)
@@ -309,6 +309,7 @@
session->transport_handle = osrfSystemGetTransportClient();
if( session->transport_handle == NULL ) {
osrfLogWarning( OSRF_LOG_MARK, "No transport client for service '%s'", our_app );
+ free(session);
return NULL;
}
@@ -368,7 +369,7 @@
int osrfAppSessionMakeRequest(
osrfAppSession* session, const jsonObject* params,
- const char* method_name, int protocol, string_array* param_strings ) {
+ const char* method_name, int protocol, osrfStringArray* param_strings ) {
return osrfAppSessionMakeLocaleRequest( session, params,
method_name, protocol, param_strings, NULL );
@@ -376,13 +377,13 @@
static int osrfAppSessionMakeLocaleRequest(
osrfAppSession* session, const jsonObject* params, const char* method_name,
- int protocol, string_array* param_strings, char* locale ) {
+ int protocol, osrfStringArray* param_strings, char* locale ) {
if(session == NULL) return -1;
osrfLogMkXid();
- osrf_message* req_msg = osrf_message_init( REQUEST, ++(session->thread_trace), protocol );
+ osrfMessage* req_msg = osrf_message_init( REQUEST, ++(session->thread_trace), protocol );
osrf_message_set_method(req_msg, method_name);
if (locale) {
@@ -400,7 +401,7 @@
int i;
for(i = 0; i!= param_strings->size ; i++ ) {
osrf_message_add_param(req_msg,
- string_array_get_string(param_strings,i));
+ osrfStringArrayGetString(param_strings,i));
}
}
}
@@ -408,6 +409,7 @@
osrfAppRequest* req = _osrf_app_request_init( session, req_msg );
if(_osrf_app_session_send( session, req_msg ) ) {
osrfLogWarning( OSRF_LOG_MARK, "Error sending request message [%d]", session->thread_trace );
+ _osrf_app_request_free(req);
return -1;
}
@@ -458,7 +460,7 @@
/** pushes the given message into the result list of the app_request
with the given request_id */
int osrf_app_session_push_queue(
- osrfAppSession* session, osrf_message* msg ){
+ osrfAppSession* session, osrfMessage* msg ){
if(session == NULL || msg == NULL) return 0;
osrfAppRequest* req = OSRF_LIST_GET_INDEX( session->request_queue, msg->thread_trace );
@@ -488,11 +490,11 @@
osrfLogDebug( OSRF_LOG_MARK, "AppSession connecting to %s", session->remote_id );
/* defaulting to protocol 1 for now */
- osrf_message* con_msg = osrf_message_init( CONNECT, session->thread_trace, 1 );
+ osrfMessage* con_msg = osrf_message_init( CONNECT, session->thread_trace, 1 );
osrf_app_session_reset_remote( session );
session->state = OSRF_SESSION_CONNECTING;
int ret = _osrf_app_session_send( session, con_msg );
- osrf_message_free(con_msg);
+ osrfMessageFree(con_msg);
if(ret) return 0;
time_t start = time(NULL);
@@ -531,11 +533,11 @@
osrfLogDebug(OSRF_LOG_MARK, "AppSession disconnecting from %s", session->remote_id );
- osrf_message* dis_msg = osrf_message_init( DISCONNECT, session->thread_trace, 1 );
+ osrfMessage* dis_msg = osrf_message_init( DISCONNECT, session->thread_trace, 1 );
_osrf_app_session_send( session, dis_msg );
session->state = OSRF_SESSION_DISCONNECTED;
- osrf_message_free( dis_msg );
+ osrfMessageFree( dis_msg );
osrf_app_session_reset_remote( session );
return 1;
}
@@ -546,7 +548,7 @@
}
-static int osrfAppSessionSendBatch( osrfAppSession* session, osrf_message* msgs[], int size ) {
+static int osrfAppSessionSendBatch( osrfAppSession* session, osrfMessage* msgs[], int size ) {
if( !(session && msgs && size > 0) ) return 0;
int retval = 0;
@@ -603,7 +605,7 @@
-static int _osrf_app_session_send( osrfAppSession* session, osrf_message* msg ){
+static int _osrf_app_session_send( osrfAppSession* session, osrfMessage* msg ){
if( !(session && msg) ) return 0;
osrfMessage* a[1];
a[0] = msg;
@@ -634,16 +636,16 @@
session->remote_service, session->session_id );
if(session->type == OSRF_SESSION_CLIENT
&& session->state != OSRF_SESSION_DISCONNECTED ) { /* disconnect if we're a client */
- osrf_message* dis_msg = osrf_message_init( DISCONNECT, session->thread_trace, 1 );
+ osrfMessage* dis_msg = osrf_message_init( DISCONNECT, session->thread_trace, 1 );
_osrf_app_session_send( session, dis_msg );
- osrf_message_free(dis_msg);
+ osrfMessageFree(dis_msg);
}
osrfHashRemove( osrfAppSessionCache, session->session_id );
_osrf_app_session_free( session );
}
-osrf_message* osrfAppSessionRequestRecv(
+osrfMessage* osrfAppSessionRequestRecv(
osrfAppSession* session, int req_id, int timeout ) {
if(req_id < 0 || session == NULL)
return NULL;
@@ -656,7 +658,7 @@
int osrfAppRequestRespond( osrfAppSession* ses, int requestId, const jsonObject* data ) {
if(!ses || ! data ) return -1;
- osrf_message* msg = osrf_message_init( RESULT, requestId, 1 );
+ osrfMessage* msg = osrf_message_init( RESULT, requestId, 1 );
osrf_message_set_status_info( msg, NULL, "OK", OSRF_STATUS_OK );
char* json = jsonObjectToJSON( data );
@@ -664,7 +666,7 @@
_osrf_app_session_send( ses, msg );
free(json);
- osrf_message_free( msg );
+ osrfMessageFree( msg );
return 0;
}
@@ -673,10 +675,10 @@
int osrfAppRequestRespondComplete(
osrfAppSession* ses, int requestId, const jsonObject* data ) {
- osrf_message* payload = osrf_message_init( RESULT, requestId, 1 );
+ osrfMessage* payload = osrf_message_init( RESULT, requestId, 1 );
osrf_message_set_status_info( payload, NULL, "OK", OSRF_STATUS_OK );
- osrf_message* status = osrf_message_init( STATUS, requestId, 1);
+ osrfMessage* status = osrf_message_init( STATUS, requestId, 1);
osrf_message_set_status_info( status, "osrfConnectStatus", "Request Complete", OSRF_STATUS_COMPLETE );
if (data) {
@@ -689,13 +691,12 @@
ms[1] = status;
osrfAppSessionSendBatch( ses, ms, 2 );
-
- osrf_message_free( payload );
} else {
osrfAppSessionSendBatch( ses, &status, 1 );
}
- osrf_message_free( status );
+ osrfMessageFree( payload );
+ osrfMessageFree( status );
return 0;
}
@@ -704,10 +705,10 @@
const char* name, int reqId, const char* message ) {
if(ses) {
- osrf_message* msg = osrf_message_init( STATUS, reqId, 1);
+ osrfMessage* msg = osrf_message_init( STATUS, reqId, 1);
osrf_message_set_status_info( msg, name, message, type );
_osrf_app_session_send( ses, msg );
- osrf_message_free( msg );
+ osrfMessageFree( msg );
return 0;
}
return -1;
More information about the opensrf-commits
mailing list