]> arthur.barton.de Git - netatalk.git/commitdiff
Merge remote-tracking branch 'remotes/origin/branch-netatalk-2-1'
authorHAT <hat@fa2.so-net.ne.jp>
Tue, 8 Mar 2011 17:18:43 +0000 (02:18 +0900)
committerHAT <hat@fa2.so-net.ne.jp>
Tue, 8 Mar 2011 17:18:43 +0000 (02:18 +0900)
1  2 
etc/afpd/status.c

diff --combined etc/afpd/status.c
index 28408658162948749d230d94f8f1c1764299a83a,e43460a14056ec4d2c9a5b398b4bb8b53b548881..f666147c497f7e847610f4911bc1cd670ca69192
@@@ -46,26 -46,32 +46,26 @@@ static   size_t maxstatuslen = 0
  static void status_flags(char *data, const int notif, const int ipok,
                           const unsigned char passwdbits, const int dirsrvcs _U_, int flags)
  {
 -    u_int16_t           status;
 +    uint16_t           status;
 +
 +    status = AFPSRVRINFO_COPY
 +           | AFPSRVRINFO_SRVSIGNATURE
 +           | AFPSRVRINFO_SRVMSGS
 +           | AFPSRVRINFO_FASTBOZO
 +           | AFPSRVRINFO_SRVRDIR
 +           | AFPSRVRINFO_SRVUTF8
 +           | AFPSRVRINFO_EXTSLEEP;
  
 -    status = AFPSRVRINFO_COPY;
      if (passwdbits & PASSWD_SET) /* some uams may not allow this. */
          status |= AFPSRVRINFO_PASSWD;
      if (passwdbits & PASSWD_NOSAVE)
          status |= AFPSRVRINFO_NOSAVEPASSWD;
 -    status |= AFPSRVRINFO_SRVSIGNATURE;
 -    /* only advertise tcp/ip if we have a valid address */
 -    if (ipok)
 +    if (ipok) /* only advertise tcp/ip if we have a valid address */        
          status |= AFPSRVRINFO_TCPIP;
 -    status |= AFPSRVRINFO_SRVMSGS;
 -    /* Allow the user to decide if we should support server notifications.
 -     * With this turned off, the clients will poll for directory changes every
 -     * 10 seconds.  This might be too costly to network resources, so make
 -     * this an optional thing.  Default will be to _not_ support server
 -     * notifications. */
 -    if (notif) {
 +    if (notif) /* Default is yes */        
          status |= AFPSRVRINFO_SRVNOTIFY;
 -    }
 -    status |= AFPSRVRINFO_FASTBOZO;
 -    status |= AFPSRVRINFO_SRVRDIR; /* AFP 3.1 specs says we need to specify this, but may set the count to 0 */
 -    /* We don't set the UTF8 name flag here, we don't know whether we have enough space ... */
 -
 -    if (flags & OPTION_UUID)  /* 05122008 FIXME: can we set AFPSRVRINFO_UUID here ? see AFPSRVRINFO_SRVRDIR*/
 -      status |= AFPSRVRINFO_UUID;
 +    if (flags & OPTION_UUID)
 +        status |= AFPSRVRINFO_UUID;
  
      status = htons(status);
      memcpy(data + AFPSTATUS_FLAGOFF, &status, sizeof(status));
@@@ -391,6 -397,13 +391,6 @@@ static size_t status_utf8servername(cha
        data += len;
        offset = htons(offset);
        memcpy(begin + *nameoffset, &offset, sizeof(u_int16_t));
 -        
 -        /* Now set the flag ... */
 -      memcpy(&status, begin + AFPSTATUS_FLAGOFF, sizeof(status));
 -      status = ntohs(status);
 -      status |= AFPSRVRINFO_SRVUTF8;
 -      status = htons(status);
 -      memcpy(begin + AFPSTATUS_FLAGOFF, &status, sizeof(status));
      }
  
      /* return length of buffer */
@@@ -547,7 -560,7 +547,7 @@@ void set_signature(struct afp_options *
      char *servername_conf;
      int header = 0;
      char buf[1024], *p;
 -    FILE *fp, *randomp;
 +    FILE *fp = NULL, *randomp;
      size_t len;
      char *server_tmp;
      
@@@ -650,14 -663,14 +650,14 @@@ server_signature_auto
                  options->sigconffile, strerror(errno));
              goto server_signature_random;
          }
-     } else { /* conf file don't exist */
+     } else {                                                          /* conf file don't exist */
          if (( fd = creat(options->sigconffile, 0644 )) < 0 ) {
-             LOG(log_error, logtype_atalkd, "Cannot create %s (%s). Using one-time signature.",
+             LOG(log_error, logtype_afpd, "ERROR: Cannot create %s (%s). Using one-time signature.",
                  options->sigconffile, strerror(errno));
              goto server_signature_random;
          }
          if (( fp = fdopen( fd, "w" )) == NULL ) {
-             LOG(log_error, logtype_atalkd, "Cannot fdopen %s (%s). Using one-time signature.",
+             LOG(log_error, logtype_afpd, "ERROR: Cannot fdopen %s (%s). Using one-time signature.",
                  options->sigconffile, strerror(errno));
              close(fd);
              goto server_signature_random;
  server_signature_random:
      
      /* generate signature from random number */
 -    if ((randomp = fopen("/dev/urandom", "r")) != NULL) {   /* generate from /dev/urandom */
 -        for (i=0 ; i<16 ; i++) {
 -            (options->signature)[i] = fgetc(randomp);
 -        }
 -        LOG(log_note, logtype_afpd,
 -            "generate %s's signature %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X from /dev/urandom",
 -            server_tmp,
 -            (options->signature)[ 0], (options->signature)[ 1],
 -            (options->signature)[ 2], (options->signature)[ 3],
 -            (options->signature)[ 4], (options->signature)[ 5],
 -            (options->signature)[ 6], (options->signature)[ 7],
 -            (options->signature)[ 8], (options->signature)[ 9],
 -            (options->signature)[10], (options->signature)[11],
 -            (options->signature)[12], (options->signature)[13],
 -            (options->signature)[14], (options->signature)[15]);
 -        
 -    } else {                                   /* genarate from random() because cannot open /dev/urandom */
 -        srandom((unsigned int)time(NULL) + (unsigned int)options + (unsigned int)server_tmp);
 -        for (i=0 ; i<16 ; i++) {
 -            (options->signature)[i] = random() & 0xFF;
 -        }
 -        LOG(log_note, logtype_afpd,
 -            "generate %s's signature %02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X from random()",
 -            server_tmp,
 -            (options->signature)[ 0], (options->signature)[ 1],
 -            (options->signature)[ 2], (options->signature)[ 3],
 -            (options->signature)[ 4], (options->signature)[ 5],
 -            (options->signature)[ 6], (options->signature)[ 7],
 -            (options->signature)[ 8], (options->signature)[ 9],
 -            (options->signature)[10], (options->signature)[11],
 -            (options->signature)[12], (options->signature)[13],
 -            (options->signature)[14], (options->signature)[15]);
 -    }
 +    randombytes(options->signature, 16);
  
 -    if (fp && header) {                                     /* conf file is created or size=0 */
 +    if (fp && header) { /* conf file is created or size=0 */
          fprintf(fp, "# DON'T TOUCH NOR COPY THOUGHTLESSLY!\n");
          fprintf(fp, "# This file is auto-generated by afpd.\n");
          fprintf(fp, "# \n");