IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 18, 2006, 6:58:54 AM (20 years ago)
Author:
eugene
Message:

updates to fix comm problems with buffers (motivated by opihi gprint)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/pantasks/SocketOps.c

    r7917 r7929  
    3030  Address[0].sin_addr.s_addr = INADDR_ANY; // use this line to bind any address / port?
    3131
     32retry_server:
     33
    3234# if (0) 
    3335  status = inet_aton (hostip, &Address[0].sin_addr);
     
    4951  status = bind (InitSocket, (struct sockaddr *) Address, length);
    5052  if (status == -1) {
     53    fprintf (stderr, "errno: %d\n", errno);
     54    fprintf (stderr, "EACCES: %d\n", EACCES);
     55    fprintf (stderr, "EBADF: %d\n", EBADF);
     56    fprintf (stderr, "EINVAL: %d\n", EINVAL);
     57    fprintf (stderr, "ENOTSOCK: %d\n", ENOTSOCK);
     58    fprintf (stderr, "EFAULT: %d\n", EFAULT);
     59    fprintf (stderr, "ELOOP: %d\n", ELOOP);
     60    fprintf (stderr, "ENAMETOOLONG: %d\n", ENAMETOOLONG);
     61    fprintf (stderr, "ENOENT: %d\n", ENOENT);
     62    fprintf (stderr, "ENOMEM: %d\n", ENOMEM);
     63    fprintf (stderr, "ENOTDIR: %d\n", ENOTDIR);
     64    fprintf (stderr, "EROFS: %d\n", EROFS);
     65
     66    Address[0].sin_port ++;
     67    if (Address[0].sin_port > MY_PORT + 10) exit (2);
     68    fprintf (stderr, "trying next port: %d\n", Address[0].sin_port);
     69    goto retry_server;
     70
    5171    perror ("bind: ");
    5272    exit (2);
    5373  }
     74  /* repeated starts of the server are limited by xinetd or something:
     75     requires 60sec timeout of the selected socket */
    5476
    5577  status = listen (InitSocket, 10);
     
    140162  Address.sin_family = AF_INET;
    141163  Address.sin_port   = MY_PORT;
     164
     165retry_client:
    142166  status = inet_aton (hostip, &Address.sin_addr);
    143167  if (!status) {
     
    156180  status = connect (InitSocket, (struct sockaddr *) &Address, length);
    157181  if (status == -1) {
     182    if (errno == ECONNREFUSED) {
     183      Address.sin_port ++;
     184      if (Address.sin_port > MY_PORT + 10) exit (2);
     185      fprintf (stderr, "trying next port: %d\n", Address.sin_port);
     186      goto retry_client;
     187    }
    158188    perror ("connect: ");
    159189    exit (2);
Note: See TracChangeset for help on using the changeset viewer.