]> andersk Git - moira.git/blobdiff - lib/mr_connect.c
Added copyright message; log deadlock errors; use exclusive readlocks
[moira.git] / lib / mr_connect.c
index 1cda2e8504c10e737400ab8036466d26c1c72736..ab0da959a32a43ef661b6af809611ab570d2fb71 100644 (file)
@@ -4,22 +4,26 @@
  *     $Header$
  *
  *     Copyright (C) 1987 by the Massachusetts Institute of Technology
+ *     For copying and distribution information, please see the file
+ *     <mit-copyright.h>.
  *     
  *     This routine is part of the client library.  It handles
- * creating a connection to the sms server.
+ *     creating a connection to the sms server.
  */
 
 #ifndef lint
 static char *rcsid_sms_connect_c = "$Header$";
 #endif lint
 
+#include <mit-copyright.h>
 #include "sms_private.h"
 
 /*
  * Open a connection to the sms server.
  */
 
-int sms_connect()
+int sms_connect(server)
+char *server;
 {
     extern int errno;
        
@@ -27,14 +31,20 @@ int sms_connect()
     if (_sms_conn) return SMS_ALREADY_CONNECTED;
                
     /* 
-     *         * should do a hesiod call to find the sms machine name & service
-     *          * number/name.
-     *          */
-    /* XXX gdb doesn't give real return codes. Can we trust errno?*/
+     * XXX should do a hesiod call to find the sms machine name & service
+     * number/name.
+     */
     errno = 0;
-    _sms_conn = start_server_connection(SMS_GDB_SERV, ""); 
-    if (_sms_conn == NULL) {
+    if (!server || (strlen(server) == 0))
+      server = SMS_GDB_SERV;
+    _sms_conn = start_server_connection(server, ""); 
+    if (_sms_conn == NULL)
        return errno;
+    if (connection_status(_sms_conn) == CON_STOPPED) {
+       register status = connection_errno(_sms_conn);
+       if (!status) status = SMS_CANT_CONNECT;
+       sms_disconnect();
+       return status;
     }
     return 0;
 }
@@ -55,6 +65,7 @@ int sms_noop()
 
     CHECK_CONNECTED;
     params = &param_st;
+    params->sms_version_no = sending_version_no;
     params->sms_procno = SMS_NOOP;
     params->sms_argc = 0;
     params->sms_argl = NULL;
@@ -67,14 +78,3 @@ int sms_noop()
 
     return status;
 }
-
-/*
- * Local Variables:
- * mode: c
- * c-indent-level: 4
- * c-continued-statement-offset: 4
- * c-brace-offset: -4
- * c-argdecl-indent: 4
- * c-label-offset: -4
- * End:
- */
This page took 0.06638 seconds and 4 git commands to generate.