s3: Lift smbd_server_fd from reload_services()
authorVolker Lendecke <vl@samba.org>
Sun, 15 Aug 2010 14:13:00 +0000 (16:13 +0200)
committerVolker Lendecke <vl@samba.org>
Wed, 18 Aug 2010 09:18:21 +0000 (11:18 +0200)
source3/auth/auth_ntlmssp.c
source3/include/proto.h
source3/rpc_server/srv_spoolss_nt.c
source3/smbd/negprot.c
source3/smbd/process.c
source3/smbd/reply.c
source3/smbd/server.c
source3/smbd/server_reload.c
source3/smbd/sesssetup.c
source3/smbd/smb2_sesssetup.c
source3/torture/vfstest.c

index a910201fcf4a3482f66e0f30ce990b6b01b0feac..d533ac93f560608819b77c451582f0734fa89a22 100644 (file)
@@ -122,7 +122,7 @@ static NTSTATUS auth_ntlmssp_check_password(struct ntlmssp_state *ntlmssp_state,
        /* sub_set_smb_name checks for weird internally */
        sub_set_smb_name(auth_ntlmssp_state->ntlmssp_state->user);
 
-       reload_services(smbd_messaging_context(), True);
+       reload_services(smbd_messaging_context(), smbd_server_fd(), True);
 
        nt_status = make_user_info_map(&user_info, 
                                       auth_ntlmssp_state->ntlmssp_state->user, 
index fe9dec41dbdfe1e1a7e7a9f62e9a880ab4e4cf44..9d4b82b06356e9ead652ea164272dbd4fcf05e0c 100644 (file)
@@ -5786,7 +5786,8 @@ struct event_context *smbd_event_context(void);
 struct messaging_context *smbd_messaging_context(void);
 struct memcache *smbd_memcache(void);
 void reload_printers(struct messaging_context *msg_ctx);
-bool reload_services(struct messaging_context *msg_ctx, bool test);
+bool reload_services(struct messaging_context *msg_ctx, int smb_sock,
+                    bool test);
 void exit_server(const char *const explanation);
 void exit_server_cleanly(const char *const explanation);
 void exit_server_fault(void);
index 893ddce53185815bb896c40f022563dfe62f8758..4854488ba6459413761818527fdcb1fd25829ac8 100644 (file)
@@ -341,7 +341,7 @@ static WERROR delete_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token,
 
        /* go ahead and re-read the services immediately */
        become_root();
-       reload_services(msg_ctx, false);
+       reload_services(msg_ctx, smbd_server_fd(), false);
        unbecome_root();
 
        if ( lp_servicenumber( sharename )  > 0 )
@@ -5724,7 +5724,7 @@ static bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token,
 
        /* reload our services immediately */
        become_root();
-       reload_services(msg_ctx, false);
+       reload_services(msg_ctx, smbd_server_fd(), false);
        unbecome_root();
 
        numlines = 0;
index 9151d1baf1a392a5248aaf6da051caab17f858f9..2908c2613e2158063452153d554f88cad484e597 100644 (file)
@@ -667,7 +667,7 @@ void reply_negprot(struct smb_request *req)
        }
  
        /* possibly reload - change of architecture */
-       reload_services(sconn->msg_ctx, True);
+       reload_services(sconn->msg_ctx, sconn->sock, True);
        
        /* moved from the netbios session setup code since we don't have that 
           when the client connects to port 445.  Of course there is a small
@@ -693,7 +693,7 @@ void reply_negprot(struct smb_request *req)
   
        if(choice != -1) {
                fstrcpy(remote_proto,supported_protocols[protocol].short_name);
-               reload_services(sconn->msg_ctx, True);
+               reload_services(sconn->msg_ctx, sconn->sock, True);
                supported_protocols[protocol].proto_reply_fn(req, choice);
                DEBUG(3,("Selected protocol %s\n",supported_protocols[protocol].proto_name));
        } else {
index 07b53a254d487a9b4f6dd1709cc66f45cd35b78f..d6acc829cf0f8f6d89aef19671a6bcef021e1932 100644 (file)
@@ -928,7 +928,7 @@ static void smbd_sig_hup_handler(struct tevent_context *ev,
                private_data, struct messaging_context);
        change_to_root_user();
        DEBUG(1,("Reloading services after SIGHUP\n"));
-       reload_services(msg_ctx, False);
+       reload_services(msg_ctx, smbd_server_fd(), False);
 }
 
 void smbd_setup_sig_hup_handler(struct tevent_context *ev,
@@ -2237,7 +2237,7 @@ static void check_reload(struct messaging_context *msg_ctx, time_t t)
        }
 
        if (t >= last_smb_conf_reload_time+SMBD_RELOAD_CHECK) {
-               reload_services(msg_ctx, True);
+               reload_services(msg_ctx, smbd_server_fd(), True);
                last_smb_conf_reload_time = t;
        }
 
@@ -2973,7 +2973,7 @@ void smbd_process(struct smbd_server_connection *sconn)
        /* this is needed so that we get decent entries
           in smbstatus for port 445 connects */
        set_remote_machine_name(remaddr, false);
-       reload_services(sconn->msg_ctx, true);
+       reload_services(sconn->msg_ctx, sconn->sock, true);
 
        /*
         * Before the first packet, check the global hosts allow/ hosts deny
index 97269df7c126aec42857d2ba3e3b282c4eaf2002..583c8960f96dd5179a08ab698537fe22b0e1e331 100644 (file)
@@ -548,7 +548,7 @@ void reply_special(struct smbd_server_connection *sconn, char *inbuf)
                        add_session_user(sconn, get_remote_machine_name());
                }
 
-               reload_services(sconn->msg_ctx, True);
+               reload_services(sconn->msg_ctx, sconn->sock, True);
                reopen_logs();
 
                sconn->nbt.got_session = true;
index 7b9075338e60699dd17b8587c230a6b3cf4dd036..8cb2f23e12c6499cde69786c4ac31ce38f801932 100644 (file)
@@ -81,7 +81,7 @@ static void smb_conf_updated(struct messaging_context *msg,
        DEBUG(10,("smb_conf_updated: Got message saying smb.conf was "
                  "updated. Reloading.\n"));
        change_to_root_user();
-       reload_services(msg, False);
+       reload_services(msg, smbd_server_fd(), False);
 }
 
 
@@ -982,7 +982,8 @@ extern void build_options(bool screen);
         * Reloading of the printers will not work here as we don't have a
         * server info and rpc services set up. It will be called later.
         */
-       if (!reload_services(smbd_messaging_context(), False)) {
+       if (!reload_services(smbd_messaging_context(), smbd_server_fd(),
+                            False)) {
                exit(1);
        }
 
index e1d563d09d0481707d3b47365c6d7a8f335318fd..38d1f3a354acb75c76135741e892b0fcd29e25d3 100644 (file)
@@ -88,7 +88,8 @@ void reload_printers(struct messaging_context *msg_ctx)
  Reload the services file.
 **************************************************************************/
 
-bool reload_services(struct messaging_context *msg_ctx, bool test)
+bool reload_services(struct messaging_context *msg_ctx, int smb_sock,
+                    bool test)
 {
        bool ret;
 
@@ -114,15 +115,15 @@ bool reload_services(struct messaging_context *msg_ctx, bool test)
 
        /* perhaps the config filename is now set */
        if (!test)
-               reload_services(msg_ctx, True);
+               reload_services(msg_ctx, smb_sock, True);
 
        reopen_logs();
 
        load_interfaces();
 
-       if (smbd_server_fd() != -1) {
-               set_socket_options(smbd_server_fd(),"SO_KEEPALIVE");
-               set_socket_options(smbd_server_fd(), lp_socket_options());
+       if (smb_sock != -1) {
+               set_socket_options(smb_sock,"SO_KEEPALIVE");
+               set_socket_options(smb_sock, lp_socket_options());
        }
 
        mangle_reset_cache();
index a80e4f0b8cb58888c1e1e03c8775b1fa2dc26cbe..a476ed42ae7cd1f81132afbdf5394aef17e41ba6 100644 (file)
@@ -468,7 +468,7 @@ static void reply_spnego_kerberos(struct smb_request *req,
        /* setup the string used by %U */
 
        sub_set_smb_name( real_username );
-       reload_services(sconn->msg_ctx, True);
+       reload_services(sconn->msg_ctx, sconn->sock, True);
 
        if ( map_domainuser_to_guest ) {
                make_server_info_guest(NULL, &server_info);
@@ -589,7 +589,7 @@ static void reply_spnego_kerberos(struct smb_request *req,
                ret = NT_STATUS_LOGON_FAILURE;
        } else {
                /* current_user_info is changed on new vuid */
-               reload_services(sconn->msg_ctx, True);
+               reload_services(sconn->msg_ctx, sconn->sock, True);
 
                SSVAL(req->outbuf, smb_vwv3, 0);
 
@@ -683,7 +683,7 @@ static void reply_spnego_ntlmssp(struct smb_request *req,
                }
 
                /* current_user_info is changed on new vuid */
-               reload_services(sconn->msg_ctx, True);
+               reload_services(sconn->msg_ctx, sconn->sock, True);
 
                SSVAL(req->outbuf, smb_vwv3, 0);
 
@@ -1707,7 +1707,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
 
        sub_set_smb_name(sub_user);
 
-       reload_services(sconn->msg_ctx, True);
+       reload_services(sconn->msg_ctx, sconn->sock, True);
 
        if (lp_security() == SEC_SHARE) {
                /* In share level we should ignore any passwords */
@@ -1860,7 +1860,7 @@ void reply_sesssetup_and_X(struct smb_request *req)
                }
 
                /* current_user_info is changed on new vuid */
-               reload_services(sconn->msg_ctx, True);
+               reload_services(sconn->msg_ctx, sconn->sock, True);
        }
 
        data_blob_free(&nt_resp);
index 8fc52b25995fa0509766a7e544b7736b750ed481..df00b4f6541e4b32379242b237ea2caf63bb045a 100644 (file)
@@ -327,7 +327,7 @@ static NTSTATUS smbd_smb2_session_setup_krb5(struct smbd_smb2_session *session,
        /* setup the string used by %U */
 
        sub_set_smb_name(real_username);
-       reload_services(smb2req->sconn->msg_ctx, true);
+       reload_services(smb2req->sconn->msg_ctx, smb2req->sconn->sock, true);
 
        if (map_domainuser_to_guest) {
                make_server_info_guest(session, &session->server_info);
index cac4621dd5a9e2283a2945a44a68cf9647be156a..4d537dadcf53834edbcab289aedea5103e72fe5d 100644 (file)
@@ -463,7 +463,7 @@ int main(int argc, char *argv[])
        poptFreeContext(pc);
 
        /* TODO: check output */
-       reload_services(smbd_messaging_context(), False);
+       reload_services(smbd_messaging_context(), smbd_server_fd(), False);
 
        /* the following functions are part of the Samba debugging
           facilities.  See lib/debug.c */