[BACK]Return to oxmisc.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / plugin

Diff for /OpenXM/src/kan96xx/plugin/oxmisc.c between version 1.9 and 1.14

version 1.9, 2001/05/04 01:06:30 version 1.14, 2002/11/07 23:52:20
Line 1 
Line 1 
 /*  $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc.c,v 1.8 2000/12/03 07:29:39 takayama Exp $ */  /*  $OpenXM: OpenXM/src/kan96xx/plugin/oxmisc.c,v 1.13 2002/11/07 13:32:06 takayama Exp $ */
 #include <stdio.h>  #include <stdio.h>
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/stat.h>  #include <sys/stat.h>
Line 611  int oxIsThereErrorClient(oxclientp client) {
Line 611  int oxIsThereErrorClient(oxclientp client) {
 oxclientp oxCreateClient(char *sname,int portStream,int portControl)  oxclientp oxCreateClient(char *sname,int portStream,int portControl)
      /* you also need to change oxCreateClient2. */       /* you also need to change oxCreateClient2. */
 {  {
   static int clnum = 0;  
   int v = 0;    int v = 0;
   int fdControl = -1;    int fdControl = -1;
   int fdStream = -1;    int fdStream = -1;
Line 654  oxclientp oxCreateClient(char *sname,int portStream,in
Line 653  oxclientp oxCreateClient(char *sname,int portStream,in
   client->dataport = portStream;    client->dataport = portStream;
   client->controlport = portControl;    client->controlport = portControl;
   client->controlfd = fdControl;    client->controlfd = fdControl;
   client->id = clnum; clnum++;    client->id = oxGetClientID();
   client->type = CLIENT_SOCKET; /* socket */    client->type = CLIENT_SOCKET; /* socket */
   client->engineByteOrder = engineByteOrder;    client->engineByteOrder = engineByteOrder;
   client->controlByteOrder = controlByteOrder;    client->controlByteOrder = controlByteOrder;
Line 883  char *oxGenPass(void) {
Line 882  char *oxGenPass(void) {
   
   
 static void cancelConnection() {  static void cancelConnection() {
   #if defined(__CYGWIN__)
     extern sigjmp_buf MyEnv_oxmisc;
   #else
   extern jmp_buf MyEnv_oxmisc;    extern jmp_buf MyEnv_oxmisc;
   #endif
   signal(SIGALRM,SIG_IGN);    signal(SIGALRM,SIG_IGN);
   fprintf(stderr,"Time out in TCP/IP connection.\n");    fprintf(stderr,"Time out in TCP/IP connection.\n");
   #if defined(__CYGWIN__)
     siglongjmp(MyEnv_oxmisc,1);
   #else
   longjmp(MyEnv_oxmisc,1);    longjmp(MyEnv_oxmisc,1);
   #endif
 }  }
   
 oxclientp oxCreateClient2(int fdstream,int portStream,  oxclientp oxCreateClient2(int fdstream,int portStream,
                           int fdcontrol,int portControl,int ipmask,char *pass)                            int fdcontrol,int portControl,int ipmask,char *pass)
 {  {
   static int clnum = 0;  
   int v = 0;    int v = 0;
   int fdControl = -1;    int fdControl = -1;
   int fdStream = -1;    int fdStream = -1;
Line 900  oxclientp oxCreateClient2(int fdstream,int portStream,
Line 906  oxclientp oxCreateClient2(int fdstream,int portStream,
   
   char *s;    char *s;
   oxclientp client;    oxclientp client;
   extern jmp_buf MyEnv_oxmisc ;  #if defined(__CYGWIN__)
     extern sigjmp_buf MyEnv_oxmisc;
   #else
     extern jmp_buf MyEnv_oxmisc;
   #endif
   int controlByteOrder, engineByteOrder;    int controlByteOrder, engineByteOrder;
   
   v = !Quiet;    v = !Quiet;
   #if defined(__CYGWIN__)
     if (sigsetjmp(MyEnv_oxmisc,1)) {
   #else
   if (setjmp(MyEnv_oxmisc)) {    if (setjmp(MyEnv_oxmisc)) {
   #endif
     return(NULL);      return(NULL);
   }else{    }else{
   }    }
   alarm((unsigned int) 10);  /* setup timeout. */    alarm((unsigned int) 20);  /* setup timeout. */
   signal(SIGALRM,cancelConnection);    signal(SIGALRM,cancelConnection);
   
   switch(ipmask) {    switch(ipmask) {
Line 931  oxclientp oxCreateClient2(int fdstream,int portStream,
Line 945  oxclientp oxCreateClient2(int fdstream,int portStream,
   
   /* Authentication by password. */    /* Authentication by password. */
   m = strlen(pass);    m = strlen(pass);
   s = (char *)mymalloc(sizeof(char)*(m+1));    if (m > 0) {
   read(fdControl,s,m+1); s[m] = '\0';      s = (char *)mymalloc(sizeof(char)*(m+1));
   if (strcmp(s,pass) != 0) {      read(fdControl,s,m+1); s[m] = '\0';
     fprintf(stderr,"oxCreateClient2(): password authentication failed for control channel.\n");      if (strcmp(s,pass) != 0) {
     close(fdControl);        fprintf(stderr,"oxCreateClient2(): password authentication failed for control channel.\n");
     return(NULL);        close(fdControl);
         return(NULL);
       }
       read(fdStream,s,m+1); s[m] = '\0';
       if (strcmp(s,pass) != 0) {
         fprintf(stderr,"oxCreateClient2(): password authentication failed for data channel.\n");
         close(fdStream);
         return(NULL);
       }
   }    }
   read(fdStream,s,m+1); s[m] = '\0';  
   if (strcmp(s,pass) != 0) {  
     fprintf(stderr,"oxCreateClient2(): password authentication failed for data channel.\n");  
     close(fdStream);  
     return(NULL);  
   }  
   signal(SIGALRM,SIG_IGN);    signal(SIGALRM,SIG_IGN);
   
   controlByteOrder = oxSetByteOrder(fdControl);    controlByteOrder = oxSetByteOrder(fdControl);
Line 968  oxclientp oxCreateClient2(int fdstream,int portStream,
Line 984  oxclientp oxCreateClient2(int fdstream,int portStream,
   client->dataport = portStream;    client->dataport = portStream;
   client->controlport = portControl;    client->controlport = portControl;
   client->controlfd = fdControl;    client->controlfd = fdControl;
   client->id = clnum; clnum++;    client->id = oxGetClientID();
   client->type = CLIENT_SOCKET; /* socket */    client->type = CLIENT_SOCKET; /* socket */
   client->engineByteOrder = engineByteOrder;    client->engineByteOrder = engineByteOrder;
   client->controlByteOrder = controlByteOrder;    client->controlByteOrder = controlByteOrder;
Line 1006  int oxTellMyByteOrder(int fd) {  
Line 1022  int oxTellMyByteOrder(int fd) {  
 }  }
   
   
   struct object OxClientList[MAX_N_OF_CLIENT];
   int OxClientListn = 0;
   
   int oxGetClientID() {
     extern struct object OxClientList[];
     extern int OxClientListn;
     extern struct object Nobj;
     int i;
     for (i=0; i<OxClientListn; i++) {
           if ((OxClientList[i]).tag == Snull) {
             return i;
           }
     }
     i = OxClientListn;
     (OxClientList[i]).tag = Snull;
     if (OxClientListn < MAX_N_OF_CLIENT-1) {
           OxClientListn++;
           return i;
     }else{
           fprintf(MyErrorOut,"oxGetClientID(): the client table is full. Returns ID = 0.\n");
           return 0;
     }
   }
   

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.14

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>