diff options
author | Jeremy Allison <jra@samba.org> | 2002-09-05 12:55:56 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2002-09-05 12:55:56 +0000 |
commit | 4cf52385994b62de71240b894b37f82b6daa6ee2 (patch) | |
tree | adf33971f3f9b28d0f8de8e7abbe116a02404f31 | |
parent | 4af9c9ce3b312131ba767ba27b5cd5b12d6a6007 (diff) | |
download | samba-4cf52385994b62de71240b894b37f82b6daa6ee2.tar.gz samba-4cf52385994b62de71240b894b37f82b6daa6ee2.tar.bz2 samba-4cf52385994b62de71240b894b37f82b6daa6ee2.zip |
Revert the "reverse" change to rpc_server/srv_spoolss_nt.c, simply
add then entries to the end of the list in printing/notify.c using
DLIST_ADD_END.
Jeremy.
(This used to be commit 047d6a05fb60172a2607bb7d7d03dda5403c61fa)
-rw-r--r-- | source3/printing/notify.c | 8 | ||||
-rw-r--r-- | source3/rpc_server/srv_spoolss_nt.c | 33 |
2 files changed, 9 insertions, 32 deletions
diff --git a/source3/printing/notify.c b/source3/printing/notify.c index 728ef47d8a..003718ed72 100644 --- a/source3/printing/notify.c +++ b/source3/printing/notify.c @@ -102,7 +102,7 @@ static void send_spoolss_notify2_msg(struct spoolss_notify_msg *msg) { char *buf = NULL; size_t buflen = 0, len; - struct notify_queue *pnqueue; + struct notify_queue *pnqueue, *tmp_ptr; /* Let's not waste any time with this */ @@ -155,7 +155,11 @@ again: DEBUG(5, ("send_spoolss_notify2_msg: appending message 0x%02x/0x%02x to notify_queue_head\n", msg->type, msg->field)); - DLIST_ADD(notify_queue_head, pnqueue); + /* Note we add to the end of the list to ensure + * the messages are sent in the order they were received. JRA. + */ + DLIST_ADD_END(notify_queue_head, pnqueue, tmp_ptr); + return; fail: diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index aa63284322..3a2bde2d05 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -889,9 +889,9 @@ static void receive_notify2_message(void *buf, size_t len) static void receive_notify2_message_list(int msg_type, pid_t src, void *msg, size_t len) { - size_t msg_count, *msg_len_array, i; + size_t msg_count, i; char *buf = (char *)msg; - char *msg_ptr, **msg_ptr_array; + char *msg_ptr; if (len < 4) goto bad_msg; @@ -904,24 +904,6 @@ static void receive_notify2_message_list(int msg_type, pid_t src, void *msg, siz if (msg_count == 0) goto bad_msg; - /* Process notifies in *reverse* order in which they are sent - in the message. This is because a DLIST_ADD is used by the - message sender which results in the first (post!) message - being at the end of the list. Notify messages must be - delivered in the order the events occur in otherwise the - port monitor gets confused. */ - - if (!(msg_len_array = (size_t *)malloc(sizeof(size_t) * msg_count))) { - DEBUG(0, ("receive_notify2_message_list: out of memory\n")); - return; - } - - if (!(msg_ptr_array = (char **)malloc(sizeof(char *) * msg_count))) { - SAFE_FREE(msg_len_array); - DEBUG(0, ("receive_notify2_message_list: out of memory\n")); - return; - } - for (i = 0; i < msg_count; i++) { size_t msg_len; @@ -933,19 +915,10 @@ static void receive_notify2_message_list(int msg_type, pid_t src, void *msg, siz if (msg_ptr + msg_len - buf > len) goto bad_msg; - - msg_len_array[i] = msg_len; - msg_ptr_array[i] = msg_ptr; - + receive_notify2_message(msg_ptr, msg_len); msg_ptr += msg_len; } - for(i = msg_count; i > 0; i--) - receive_notify2_message(msg_ptr_array[i - 1], msg_len_array[i - 1]); - - SAFE_FREE(msg_len_array); - SAFE_FREE(msg_ptr_array); - DEBUG(10,("receive_notify2_message_list: processed %u messages\n", (unsigned int)msg_count )); return; |