[Opensrf-commits] r1528 - trunk/src/libopensrf
svn at svn.open-ils.org
svn at svn.open-ils.org
Mon Dec 15 16:30:58 EST 2008
Author: erickson
Date: 2008-12-15 16:30:54 -0500 (Mon, 15 Dec 2008)
New Revision: 1528
Modified:
trunk/src/libopensrf/osrf_stack.c
Log:
protect against unknown clients, except when running in migratable mode
Modified: trunk/src/libopensrf/osrf_stack.c
===================================================================
--- trunk/src/libopensrf/osrf_stack.c 2008-12-09 00:57:37 UTC (rev 1527)
+++ trunk/src/libopensrf/osrf_stack.c 2008-12-15 21:30:54 UTC (rev 1528)
@@ -1,5 +1,6 @@
#include <opensrf/osrf_stack.h>
#include <opensrf/osrf_application.h>
+#include <opensrf/osrf_settings.h>
/* the max number of oilsMessage blobs present in any one root packet */
#define OSRF_MAX_MSGS_PER_PACKET 256
@@ -65,9 +66,24 @@
osrfAppSession* session = osrf_app_session_find_session( msg->thread );
- if( !session && my_service )
- session = osrf_app_server_session_init( msg->thread, my_service, msg->sender);
+ if(my_service) {
+ if(session) {
+ if(strcmp(msg->sender, session->remote_id) != 0) {
+ /* unexpected client connection. See if we are running in "migratable" mode */
+ char* mable = osrf_settings_host_value("/apps/%s/migratable", my_service);
+ if(!mable) {
+ osrfLogError("Connection to service %s from unknown client %s", my_service, msg->sender);
+ return NULL;
+ }
+ free(mable);
+ }
+
+ } else {
+ session = osrf_app_server_session_init(msg->thread, my_service, msg->sender);
+ }
+ }
+
if( !session ) {
message_free( msg );
return NULL;
More information about the opensrf-commits
mailing list