Update of /cvsroot/playerstage/code/player/libplayersd
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7578

Modified Files:
        playersd_mdns.c 
Log Message:


Index: playersd_mdns.c
===================================================================
RCS file: /cvsroot/playerstage/code/player/libplayersd/playersd_mdns.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** playersd_mdns.c     25 Sep 2007 19:59:05 -0000      1.1
--- playersd_mdns.c     25 Sep 2007 20:41:08 -0000      1.2
***************
*** 152,155 ****
--- 152,156 ----
    player_sd_mdns_t* mdns = (player_sd_mdns_t*)(sd->sdRef);
    player_sd_mdns_dev_t* dev;
+   char nameBuf[PLAYER_SD_NAME_MAXLEN];
  
    // Find a spot for this device
***************
*** 195,231 ****
    }
  
!   if((sdErr = DNSServiceRegister(&(dev->regRef), 
!                                  0,
!                                  0,
!                                  name,
!                                  PLAYER_SD_SERVICENAME,
!                                  NULL,
!                                  NULL,
!                                  addr.robot,
!                                  TXTRecordGetLength(&(dev->txtRecord)),
!                                  TXTRecordGetBytesPtr(&(dev->txtRecord)),
!                                  registerCB,
!                                  (void*)dev)) != kDNSServiceErr_NoError)
!   {
!     PLAYER_ERROR1("DNSServiceRegister returned error: %d", sdErr);
!     return(-1);
!   }
  
!   while(!dev->valid && !dev->fail)
    {
!     if((sdErr = DNSServiceProcessResult(dev->regRef)) != 
kDNSServiceErr_NoError)
      {
!       PLAYER_ERROR1("DNSServiceProcessResult returned error: %d", sdErr);
!       return(-1);
      }
    }
  
!   if(dev->fail)
    {
!     PLAYER_ERROR1("Registration of %s failed", name);
      return(-1);
    }
    else
    {
      PLAYER_MSG1(2,"Registration of %s successful", name);
      return(0);
--- 196,237 ----
    }
  
!   memset(nameBuf,0,sizeof(nameBuf));
!   strncpy(nameBuf,name,sizeof(nameBuf)-1);
!   sdErr = kDNSServiceErr_NameConflict;
  
!   while(sdErr == kDNSServiceErr_NameConflict)
    {
!     sdErr = DNSServiceRegister(&(dev->regRef), 
!                                0,
!                                0,
!                                nameBuf,
!                                PLAYER_SD_SERVICENAME,
!                                NULL,
!                                NULL,
!                                addr.robot,
!                                TXTRecordGetLength(&(dev->txtRecord)),
!                                TXTRecordGetBytesPtr(&(dev->txtRecord)),
!                                registerCB,
!                                (void*)dev);
! 
!     if(sdErr == kDNSServiceErr_NameConflict)
      {
!       // Pick a new name
!       memset(nameBuf,0,sizeof(nameBuf));
!       snprintf(nameBuf,sizeof(nameBuf),"%s (%d)",
!                name,dev->nameIdx++);
      }
    }
  
!   if(sdErr != kDNSServiceErr_NoError)
    {
!     PLAYER_ERROR1("DNSServiceRegister returned error: %d", sdErr);
      return(-1);
    }
    else
    {
+     if(strcmp(nameBuf,name))
+       PLAYER_WARN2("Changing service name of %s to %s\n",
+                    name,nameBuf);
      PLAYER_MSG1(2,"Registration of %s successful", name);
      return(0);
***************
*** 242,248 ****
             void *context)
  {
    DNSServiceErrorType sdErr;
    player_sd_mdns_dev_t* dev = (player_sd_mdns_dev_t*)context;
!   char nameBuf[PLAYER_SD_NAME_MAXLEN];
  
    if(errorCode == kDNSServiceErr_NoError)
--- 248,260 ----
             void *context)
  {
+   // It seems that Avahi returns the NameConflict immediately from
+   // DNSServiceRegister(), and that mDNSResponder never complains about it,
+   // even in the callback (!).  However, we have to keep this callback
+   // defined, because Avahi will abort if we pass NULL.
+ #if 0
    DNSServiceErrorType sdErr;
    player_sd_mdns_dev_t* dev = (player_sd_mdns_dev_t*)context;
! 
!   puts("registerCB");
  
    if(errorCode == kDNSServiceErr_NoError)
***************
*** 286,288 ****
--- 298,301 ----
      dev->fail = 1;
    }
+ #endif
  }


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to