r23015: Make message_(de)register static to messages.c
authorVolker Lendecke <vlendec@samba.org>
Sat, 19 May 2007 21:53:28 +0000 (21:53 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:22:15 +0000 (12:22 -0500)
(This used to be commit a8082a3c7c3d1e68c27fc3bf42f3d44402cc6f9f)

source3/lib/dmallocmsg.c
source3/lib/events.c
source3/lib/messages.c
source3/nmbd/nmbd.c
source3/nmbd/nmbd_elections.c
source3/nmbd/nmbd_winsserver.c
source3/nsswitch/winbindd_cm.c
source3/rpc_server/srv_spoolss_nt.c
source3/smbd/blocking.c

index bccede3515c0be46de564052d42b86e2097b3baa..7e52e93a1032a320e5d5bb14f88ea959fcbd0d23 100644 (file)
@@ -35,10 +35,11 @@ static unsigned long our_dm_mark = 0;
  * Respond to a POOL_USAGE message by sending back string form of memory
  * usage stats.
  **/
-static void msg_req_dmalloc_mark(int UNUSED(msg_type),
-                                struct server_id UNUSED(src_pid),
-                                void *UNUSED(buf), size_t UNUSED(len),
-                                void *private_data)
+static void msg_req_dmalloc_mark(struct messaging_context *msg,
+                                void *private_data,
+                                uint32_t msg_type,
+                                struct server_id server_id,
+                                DATA_BLOB *data)
 {
 #ifdef ENABLE_DMALLOC
        our_dm_mark = dmalloc_mark();
@@ -50,10 +51,11 @@ static void msg_req_dmalloc_mark(int UNUSED(msg_type),
 
 
 
-static void msg_req_dmalloc_log_changed(int UNUSED(msg_type),
-                                       struct server_id UNUSED(src_pid),
-                                       void *UNUSED(buf), size_t UNUSED(len),
-                                       void *private_data)
+static void msg_req_dmalloc_log_changed(struct messaging_context *msg,
+                                       void *private_data,
+                                       uint32_t msg_type,
+                                       struct server_id server_id,
+                                       DATA_BLOB *data)
 {
 #ifdef ENABLE_DMALLOC
        dmalloc_log_changed(our_dm_mark, True, True, True);
@@ -67,10 +69,11 @@ static void msg_req_dmalloc_log_changed(int UNUSED(msg_type),
 /**
  * Register handler for MSG_REQ_POOL_USAGE
  **/
-void register_dmalloc_msgs(void)
+void register_dmalloc_msgs(struct messaging_context *msg_ctx)
 {
-       message_register(MSG_REQ_DMALLOC_MARK, msg_req_dmalloc_mark, NULL);
-       message_register(MSG_REQ_DMALLOC_LOG_CHANGED,
-                        msg_req_dmalloc_log_changed, NULL);
+       messaging_register(msg_ctx, NULL, MSG_REQ_DMALLOC_MARK,
+                          msg_req_dmalloc_mark);
+       messaging_register(msg_ctx, NULL, MSG_REQ_DMALLOC_LOG_CHANGED,
+                          msg_req_dmalloc_log_changed);
        DEBUG(2, ("Registered MSG_REQ_DMALLOC_MARK and LOG_CHANGED\n"));
 }      
index 77d18ec13d057ef6e71c92e511f1b1307ff35505..9b0a2b6712609750227bc92fb28d186eb5de45ca 100644 (file)
@@ -224,6 +224,21 @@ BOOL event_add_to_select_args(struct event_context *event_ctx,
        return True;
 }
 
+BOOL events_pending(struct event_context *event_ctx)
+{
+       struct fd_event *fde;
+
+       if (event_ctx->timed_events != NULL) {
+               return True;
+       }
+       for (fde = event_ctx->fd_events; fde; fde = fde->next) {
+               if (fde->flags & (EVENT_FD_READ|EVENT_FD_WRITE)) {
+                       return True;
+               }
+       }
+       return False;
+}
+
 BOOL run_events(struct event_context *event_ctx,
                int selrtn, fd_set *read_fds, fd_set *write_fds)
 {
index 4cbdda61ee91c385a0cf07242265a9953d9682d5..667571a75d8adc95f9981ca3140eb345d5682695 100644 (file)
@@ -71,6 +71,12 @@ static struct dispatch_fns {
        void *private_data;
 } *dispatch_fns;
 
+static void message_register(int msg_type, 
+                            void (*fn)(int msg_type, struct server_id pid,
+                                       void *buf, size_t len,
+                                       void *private_data),
+                            void *private_data);
+
 /****************************************************************************
  Free global objects.
 ****************************************************************************/
@@ -147,7 +153,7 @@ static BOOL message_init(struct messaging_context *msg_ctx)
        /* Register some debugging related messages */
 
        register_msg_pool_usage(msg_ctx);
-       register_dmalloc_msgs();
+       register_dmalloc_msgs(msg_ctx);
        debug_register_msgs(msg_ctx);
 
        return True;
@@ -545,11 +551,11 @@ void message_dispatch(void)
  messages on an *odd* byte boundary.
 ****************************************************************************/
 
-void message_register(int msg_type, 
-                     void (*fn)(int msg_type, struct server_id pid,
-                                void *buf, size_t len,
-                                void *private_data),
-                     void *private_data)
+static void message_register(int msg_type, 
+                            void (*fn)(int msg_type, struct server_id pid,
+                                       void *buf, size_t len,
+                                       void *private_data),
+                            void *private_data)
 {
        struct dispatch_fns *dfn;
 
@@ -582,7 +588,7 @@ void message_register(int msg_type,
  De-register the function for a particular message type.
 ****************************************************************************/
 
-void message_deregister(int msg_type)
+static void message_deregister(int msg_type)
 {
        struct dispatch_fns *dfn, *next;
 
index ba05316d71278f2c1d9373f68f7d24bbd1cd0f19..405aed3428c9bb81758237bfa270ae4258fa3c08 100644 (file)
@@ -88,8 +88,11 @@ static void terminate(void)
  Handle a SHUTDOWN message from smbcontrol.
  **************************************************************************** */
 
-static void nmbd_terminate(int msg_type, struct server_id src,
-                          void *buf, size_t len, void *private_data)
+static void nmbd_terminate(struct messaging_context *msg,
+                          void *private_data,
+                          uint32_t msg_type,
+                          struct server_id server_id,
+                          DATA_BLOB *data)
 {
        terminate();
 }
@@ -283,33 +286,39 @@ static BOOL reload_nmbd_services(BOOL test)
  * detects that there are no subnets.
  **************************************************************************** */
 
-static void msg_reload_nmbd_services(int msg_type, struct server_id src,
-                                    void *buf, size_t len, void *private_data)
+static void msg_reload_nmbd_services(struct messaging_context *msg,
+                                    void *private_data,
+                                    uint32_t msg_type,
+                                    struct server_id server_id,
+                                    DATA_BLOB *data)
 {
        write_browse_list( 0, True );
        dump_all_namelists();
        reload_nmbd_services( True );
        reopen_logs();
        
-       if(buf) {
+       if (data->data) {
                /* We were called from process() */
                /* If reload_interfaces() returned True */
                /* we need to shutdown if there are no subnets... */
                /* pass this info back to process() */
-               *((BOOL*)buf) = reload_interfaces(0);  
+               *((BOOL*)data->data) = reload_interfaces(0);  
        }
 }
 
-static void msg_nmbd_send_packet(int msg_type, struct server_id src,
-                                void *buf, size_t len, void *private_data)
+static void msg_nmbd_send_packet(struct messaging_context *msg,
+                                void *private_data,
+                                uint32_t msg_type,
+                                struct server_id src,
+                                DATA_BLOB *data)
 {
-       struct packet_struct *p = (struct packet_struct *)buf;
+       struct packet_struct *p = (struct packet_struct *)data->data;
        struct subnet_record *subrec;
        struct in_addr *local_ip;
 
        DEBUG(10, ("Received send_packet from %d\n", procid_to_pid(&src)));
 
-       if (len != sizeof(struct packet_struct)) {
+       if (data->length != sizeof(struct packet_struct)) {
                DEBUG(2, ("Discarding invalid packet length from %d\n",
                          procid_to_pid(&src)));
                return;
@@ -568,9 +577,13 @@ static void process(void)
                 */
 
                if(reload_after_sighup) {
+                       DATA_BLOB blob = data_blob_const(&no_subnets,
+                                                        sizeof(no_subnets));
                        DEBUG( 0, ( "Got SIGHUP dumping debug info.\n" ) );
-                       msg_reload_nmbd_services(MSG_SMB_CONF_UPDATED,
-                                                pid_to_procid(0), (void*) &no_subnets, 0, NULL);
+                       msg_reload_nmbd_services(nmbd_messaging_context(),
+                                                NULL, MSG_SMB_CONF_UPDATED,
+                                                procid_self(), &blob);
+
                        if(no_subnets)
                                return;
                        reload_after_sighup = 0;
@@ -770,14 +783,19 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
        }
 
        pidfile_create("nmbd");
-       message_register(MSG_FORCE_ELECTION, nmbd_message_election, NULL);
+       messaging_register(nmbd_messaging_context(), NULL,
+                          MSG_FORCE_ELECTION, nmbd_message_election);
 #if 0
        /* Until winsrepl is done. */
-       message_register(MSG_WINS_NEW_ENTRY, nmbd_wins_new_entry, NULL);
+       messaging_register(nmbd_messaging_context(), NULL,
+                          MSG_WINS_NEW_ENTRY, nmbd_wins_new_entry);
 #endif
-       message_register(MSG_SHUTDOWN, nmbd_terminate, NULL);
-       message_register(MSG_SMB_CONF_UPDATED, msg_reload_nmbd_services, NULL);
-       message_register(MSG_SEND_PACKET, msg_nmbd_send_packet, NULL);
+       messaging_register(nmbd_messaging_context(), NULL,
+                          MSG_SHUTDOWN, nmbd_terminate);
+       messaging_register(nmbd_messaging_context(), NULL,
+                          MSG_SMB_CONF_UPDATED, msg_reload_nmbd_services);
+       messaging_register(nmbd_messaging_context(), NULL,
+                          MSG_SEND_PACKET, msg_nmbd_send_packet);
 
        TimeInit();
 
index a053d0803b0cc99ca4db05f97b23e566c36a5c07..bd4308674c6d3e0e9fb85754e971cb09378cb2fb 100644 (file)
@@ -378,8 +378,11 @@ yet registered on subnet %s\n", nmb_namestr(&nmbname), subrec->subnet_name ));
  Process a internal Samba message forcing an election.
 ***************************************************************************/
 
-void nmbd_message_election(int msg_type, struct server_id src,
-                          void *buf, size_t len, void *private_data)
+void nmbd_message_election(struct messaging_context *msg,
+                          void *private_data,
+                          uint32_t msg_type,
+                          struct server_id server_id,
+                          DATA_BLOB *data)
 {
        struct subnet_record *subrec;
 
index fc9b95491c56d09f2efbc8e76c106a8ae8b6a5b2..0f27351d2d324650ff16b2f3d6372530bf32c7d0 100644 (file)
@@ -2370,8 +2370,11 @@ void wins_write_database(time_t t, BOOL background)
  Process a internal Samba message receiving a wins record.
 ***************************************************************************/
 
-void nmbd_wins_new_entry(int msg_type, struct server_id src,
-                        void *buf, size_t len, void *private_data)
+void nmbd_wins_new_entry(struct messaging_context *msg,
+                                       void *private_data,
+                                       uint32_t msg_type,
+                                       struct server_id server_id,
+                                       DATA_BLOB *data)
 {
        WINS_RECORD *record;
        struct name_record *namerec = NULL;
index ec1531ac3d7f9dcf88fe52a51ee0f07e016ad443..1e9292b690713c2fcd556fcfde4f41fc116dfa0a 100644 (file)
@@ -435,8 +435,10 @@ static void set_domain_online(struct winbindd_domain *domain)
        }
 
        /* Ensure we ignore any pending child messages. */
-       message_deregister(MSG_WINBIND_TRY_TO_GO_ONLINE);
-       message_deregister(MSG_WINBIND_FAILED_TO_GO_ONLINE);
+       messaging_deregister(winbind_messaging_context(),
+                            MSG_WINBIND_TRY_TO_GO_ONLINE, NULL);
+       messaging_deregister(winbind_messaging_context(),
+                            MSG_WINBIND_FAILED_TO_GO_ONLINE, NULL);
 
        domain->online = True;
 
index 49782dca43d4c153bf595dd6fb90ae0ab279e6d0..890d2e08855f52f1afe67c74f2f6e8158c1e96d7 100644 (file)
@@ -166,7 +166,8 @@ static void srv_spoolss_replycloseprinter(int snum, POLICY_HND *handle)
                cli_shutdown( notify_cli_pipe->cli );
                notify_cli_pipe = NULL; /* The above call shuts downn the pipe also. */
 
-               message_deregister(MSG_PRINTER_NOTIFY2);
+               messaging_deregister(smbd_messaging_context(),
+                                    MSG_PRINTER_NOTIFY2, NULL);
 
                /* Tell the connections db we're no longer interested in
                 * printer notify messages. */
@@ -1110,19 +1111,21 @@ static BOOL notify2_unpack_msg( SPOOLSS_NOTIFY_MSG *msg, struct timeval *tv, voi
  Receive a notify2 message list
  ********************************************************************/
 
-static void receive_notify2_message_list(int msg_type, struct server_id src,
-                                        void *msg, size_t len,
-                                        void *private_data)
+static void receive_notify2_message_list(struct messaging_context *msg,
+                                        void *private_data,
+                                        uint32_t msg_type,
+                                        struct server_id server_id,
+                                        DATA_BLOB *data)
 {
        size_t                  msg_count, i;
-       char                    *buf = (char *)msg;
+       char                    *buf = (char *)data->data;
        char                    *msg_ptr;
        size_t                  msg_len;
        SPOOLSS_NOTIFY_MSG      notify;
        SPOOLSS_NOTIFY_MSG_CTR  messages;
        int                     num_groups;
 
-       if (len < 4) {
+       if (data->length < 4) {
                DEBUG(0,("receive_notify2_message_list: bad message format (len < 4)!\n"));
                return;
        }
@@ -1152,7 +1155,7 @@ static void receive_notify2_message_list(int msg_type, struct server_id src,
        for ( i=0; i<msg_count; i++ ) {
                struct timeval msg_tv;
 
-               if (msg_ptr + 4 - buf > len) {
+               if (msg_ptr + 4 - buf > data->length) {
                        DEBUG(0,("receive_notify2_message_list: bad message format (len > buf_size) !\n"));
                        return;
                }
@@ -1160,7 +1163,7 @@ static void receive_notify2_message_list(int msg_type, struct server_id src,
                msg_len = IVAL(msg_ptr,0);
                msg_ptr += 4;
 
-               if (msg_ptr + msg_len - buf > len) {
+               if (msg_ptr + msg_len - buf > data->length) {
                        DEBUG(0,("receive_notify2_message_list: bad message format (bad len) !\n"));
                        return;
                }
@@ -2616,8 +2619,9 @@ static BOOL srv_spoolss_replyopenprinter(int snum, const char *printer,
                if ( !spoolss_connect_to_client( &notify_cli_pipe, client_ip, unix_printer ))
                        return False;
                        
-               message_register(MSG_PRINTER_NOTIFY2,
-                                receive_notify2_message_list, NULL);
+               messaging_register(smbd_messaging_context(), NULL,
+                                  MSG_PRINTER_NOTIFY2,
+                                  receive_notify2_message_list);
                /* Tell the connections db we're now interested in printer
                 * notify messages. */
                register_message_flags( True, FLAG_MSG_PRINT_NOTIFY );
index 43b2633b9af7cf92891d59c5a3f7d71dabef1096..6a892b477d99190938a5377cb3095ddf761fac1d 100644 (file)
@@ -74,9 +74,11 @@ static BOOL in_chained_smb(void)
        return (chain_size != 0);
 }
 
-static void received_unlock_msg(int msg_type, struct server_id src,
-                               void *buf, size_t len,
-                               void *private_data);
+static void received_unlock_msg(struct messaging_context *msg,
+                               void *private_data,
+                               uint32_t msg_type,
+                               struct server_id server_id,
+                               DATA_BLOB *data);
 static void process_blocking_lock_queue(void);
 
 static void brl_timeout_fn(struct event_context *event_ctx,
@@ -231,8 +233,8 @@ BOOL push_blocking_lock_request( struct byte_range_lock *br_lck,
 
        /* Ensure we'll receive messages when this is unlocked. */
        if (!set_lock_msg) {
-               message_register(MSG_SMB_UNLOCK, received_unlock_msg,
-                                NULL);
+               messaging_register(smbd_messaging_context(), NULL,
+                                  MSG_SMB_UNLOCK, received_unlock_msg);
                set_lock_msg = True;
        }
 
@@ -665,9 +667,11 @@ BOOL blocking_lock_was_deferred(int mid)
   Set a flag as an unlock request affects one of our pending locks.
 *****************************************************************************/
 
-static void received_unlock_msg(int msg_type, struct server_id src,
-                               void *buf, size_t len,
-                               void *private_data)
+static void received_unlock_msg(struct messaging_context *msg,
+                               void *private_data,
+                               uint32_t msg_type,
+                               struct server_id server_id,
+                               DATA_BLOB *data)
 {
        DEBUG(10,("received_unlock_msg\n"));
        process_blocking_lock_queue();
@@ -826,22 +830,23 @@ static void process_blocking_lock_queue(void)
 
 #define MSG_BLOCKING_LOCK_CANCEL_SIZE (sizeof(blocking_lock_record *) + sizeof(NTSTATUS))
 
-static void process_blocking_lock_cancel_message(int msg_type,
-                                                struct server_id src,
-                                                void *buf, size_t len,
-                                                void *private_data)
+static void process_blocking_lock_cancel_message(struct messaging_context *ctx,
+                                                void *private_data,
+                                                uint32_t msg_type,
+                                                struct server_id server_id,
+                                                DATA_BLOB *data)
 {
        NTSTATUS err;
-       const char *msg = (const char *)buf;
+       const char *msg = (const char *)data->data;
        blocking_lock_record *blr;
 
-       if (buf == NULL) {
+       if (data->data == NULL) {
                smb_panic("process_blocking_lock_cancel_message: null msg\n");
        }
 
-       if (len != MSG_BLOCKING_LOCK_CANCEL_SIZE) {
+       if (data->length != MSG_BLOCKING_LOCK_CANCEL_SIZE) {
                DEBUG(0, ("process_blocking_lock_cancel_message: "
-                       "Got invalid msg len %d\n", (int)len));
+                         "Got invalid msg len %d\n", (int)data->length));
                smb_panic("process_blocking_lock_cancel_message: bad msg\n");
         }
 
@@ -874,9 +879,9 @@ BOOL blocking_lock_cancel(files_struct *fsp,
 
        if (!initialized) {
                /* Register our message. */
-               message_register(MSG_SMB_BLOCKING_LOCK_CANCEL,
-                                process_blocking_lock_cancel_message,
-                                NULL);
+               messaging_register(smbd_messaging_context(), NULL,
+                                  MSG_SMB_BLOCKING_LOCK_CANCEL,
+                                  process_blocking_lock_cancel_message);
 
                initialized = True;
        }