]> git.evergreen-ils.org Git - Evergreen.git/blob - OpenSRF/src/libstack/osrf_system.c
fixed problem where a NULL unixconfig was causing segfault
[Evergreen.git] / OpenSRF / src / libstack / osrf_system.c
1 #include "osrf_system.h"
2
3 transport_client* global_client;
4
5 transport_client* osrf_system_get_transport_client() {
6         return global_client;
7 }
8
9 int osrf_system_bootstrap_client( char* config_file, char* contextnode ) {
10
11         if( config_file == NULL )
12                 fatal_handler("No Config File Specified\n" );
13
14         config_reader_init( "opensrf.bootstrap", config_file ); 
15         
16         osrf_config_context = contextnode;
17
18         char* log_file          = config_value( "opensrf.bootstrap", "//%s/logfile", contextnode );
19         char* log_level = config_value( "opensrf.bootstrap", "//%s/loglevel", contextnode );
20         char* domain            = config_value( "opensrf.bootstrap", "//%s/domains/domain1", contextnode ); /* just the first for now */
21         char* username          = config_value( "opensrf.bootstrap", "//%s/username", contextnode );
22         char* password          = config_value( "opensrf.bootstrap", "//%s/passwd", contextnode );
23         char* port                      = config_value( "opensrf.bootstrap", "//%s/port", contextnode );
24         char* unixpath          = config_value( "opensrf.bootstrap", "//%s/unixpath", contextnode );
25
26         int llevel = 0;
27         int iport = 0;
28         if(port) iport = atoi(port);
29         if(log_level) llevel = atoi(log_level);
30
31         log_init( llevel, log_file );
32
33         info_handler("Bootstrapping system with domain %s, port %d, and unixpath %s", domain, iport, unixpath );
34
35         transport_client* client = client_init( domain, iport, unixpath, 0 );
36         
37         char buf[256];
38         memset(buf,0,256);
39         char* host = getenv("HOSTNAME");
40         sprintf(buf, "client_%s_%d", host, getpid() );
41
42         if(client_connect( client, username, password, buf, 10, AUTH_DIGEST )) {
43                 global_client = client;
44         }
45
46         free(log_level);
47         free(log_file);
48         free(domain);
49         free(username);
50         free(password);
51         free(port);     
52         free(unixpath);
53
54         if(global_client)
55                 return 1;
56
57         return 0;
58 }
59
60 int osrf_system_shutdown() {
61         config_reader_free();
62         log_free();
63         client_disconnect( global_client );
64         client_free( global_client );
65         global_client = NULL;
66         return 1;
67 }
68
69
70
71