The branch, master has been updated
       via  357631b s3-nmbd: don't discard DGRAM frames from local addresses 
when we are a DC
       via  9b43ad4 s3-pid: Catch with pid filename's change when config file 
is not smb.conf
      from  db869c5 selftest: Fix the exit code of make test when run in 
buildfarm

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 357631b8b9da95c5cd43e05e8ad9d7ef43fb67da
Author: Matthieu Patou <[email protected]>
Date:   Fri Jan 27 16:12:52 2012 -0800

    s3-nmbd: don't discard DGRAM frames from local addresses when we are a DC
    
    Winbind use netbios to locate the DC, if samba is also a DC then nmbd
    receive request from Winbind that are from a local address, those
    requests must not be discarded otherwise winbind can't find the DC and
    won't try another method.
    
    Autobuild-User: Matthieu Patou <[email protected]>
    Autobuild-Date: Fri Feb  3 11:09:29 CET 2012 on sn-devel-104

commit 9b43ad4fcac1eb6796973336c5614b18a054080d
Author: Matthieu Patou <[email protected]>
Date:   Tue Jan 24 21:29:11 2012 -0800

    s3-pid: Catch with pid filename's change when config file is not smb.conf
    
    This is what is done in pidfile_create

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/pidfile.c       |   26 +++++++++++++++++++++++++-
 source3/nmbd/nmbd_packets.c |   32 +++++++++++++++++---------------
 2 files changed, 42 insertions(+), 16 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/pidfile.c b/source3/lib/pidfile.c
index 88d0fb0..06fca91 100644
--- a/source3/lib/pidfile.c
+++ b/source3/lib/pidfile.c
@@ -30,18 +30,42 @@ static char *pidFile_name = NULL;
 
 /* return the pid in a pidfile. return 0 if the process (or pidfile)
    does not exist */
-pid_t pidfile_pid(const char *name)
+pid_t pidfile_pid(const char *program_name)
 {
        int fd;
        char pidstr[20];
        pid_t pid;
        unsigned int ret;
+       char *name;
+       const char *short_configfile;
        char * pidFile;
 
+       /* Add a suffix to the program name if this is a process with a
+        * none default configuration file name. */
+       if (strcmp( CONFIGFILE, get_dyn_CONFIGFILE()) == 0) {
+               name = SMB_STRDUP(program_name);
+       } else {
+               short_configfile = strrchr( get_dyn_CONFIGFILE(), '/');
+               if (short_configfile == NULL) {
+                       /* conf file in current directory */
+                       short_configfile = get_dyn_CONFIGFILE();
+               } else {
+                       /* full/relative path provided */
+                       short_configfile++;
+               }
+               if (asprintf(&name, "%s-%s", program_name,
+                               short_configfile) == -1) {
+                       smb_panic("asprintf failed");
+               }
+       }
+
        if (asprintf(&pidFile, "%s/%s.pid", lp_piddir(), name) == -1) {
+               SAFE_FREE(name);
                return 0;
        }
 
+       SAFE_FREE(name);
+
        fd = sys_open(pidFile, O_NONBLOCK | O_RDONLY, 0644);
        if (fd == -1) {
                SAFE_FREE(pidFile);
diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c
index da38dcf..edac6f6 100644
--- a/source3/nmbd/nmbd_packets.c
+++ b/source3/nmbd/nmbd_packets.c
@@ -1995,21 +1995,23 @@ bool listen_for_packets(struct messaging_context *msg, 
bool run_election)
                        continue;
                }
 
-               if ((is_loopback_ip_v4(packet->ip) || ismyip_v4(packet->ip)) &&
-                   packet->port == client_port)
-               {
-                       if (client_port == DGRAM_PORT) {
-                               DEBUG(7,("discarding own dgram packet from 
%s:%d\n",
-                                       inet_ntoa(packet->ip),packet->port));
-                               free_packet(packet);
-                               continue;
-                       }
-
-                       if (packet->packet.nmb.header.nm_flags.bcast) {
-                               DEBUG(7,("discarding own nmb bcast packet from 
%s:%d\n",
-                                       inet_ntoa(packet->ip),packet->port));
-                               free_packet(packet);
-                               continue;
+               if (!IS_DC) {
+                       if ((is_loopback_ip_v4(packet->ip) || 
ismyip_v4(packet->ip)) &&
+                       packet->port == client_port)
+                       {
+                               if (client_port == DGRAM_PORT) {
+                                       DEBUG(7,("discarding own dgram packet 
from %s:%d\n",
+                                               
inet_ntoa(packet->ip),packet->port));
+                                       free_packet(packet);
+                                       continue;
+                               }
+
+                               if (packet->packet.nmb.header.nm_flags.bcast) {
+                                       DEBUG(7,("discarding own nmb bcast 
packet from %s:%d\n",
+                                               
inet_ntoa(packet->ip),packet->port));
+                                       free_packet(packet);
+                                       continue;
+                               }
                        }
                }
 


-- 
Samba Shared Repository

Reply via email to