Merge branch 'v3-2-test' of ssh://git.samba.org/data/git/samba into v3-2-test
[ira/wip.git] / source3 / smbd / oplock.c
index 9ac9d7628400c7bf9671975f22b408e40579ae88..420aa94fe6998eeb5ccdb1ec36d33d901954deb5 100644 (file)
 /* Current number of oplocks we have outstanding. */
 static int32 exclusive_oplocks_open = 0;
 static int32 level_II_oplocks_open = 0;
-BOOL global_client_failed_oplock_break = False;
+bool global_client_failed_oplock_break = False;
 
 extern uint32 global_client_caps;
-extern int smb_read_error;
 
 static struct kernel_oplocks *koplocks;
 
@@ -45,7 +44,7 @@ int32 get_number_of_exclusive_open_oplocks(void)
  Return True if an oplock message is pending.
 ****************************************************************************/
 
-BOOL oplock_message_waiting(fd_set *fds)
+bool oplock_message_waiting(fd_set *fds)
 {
        if (koplocks && koplocks->msg_waiting(fds)) {
                return True;
@@ -103,7 +102,7 @@ void process_kernel_oplocks(struct messaging_context *msg_ctx, fd_set *pfds)
  disabled (just sets flags). Returns True if oplock set.
 ****************************************************************************/
 
-BOOL set_file_oplock(files_struct *fsp, int oplock_type)
+bool set_file_oplock(files_struct *fsp, int oplock_type)
 {
        if (koplocks && !koplocks->set_oplock(fsp, oplock_type)) {
                return False;
@@ -176,13 +175,13 @@ static void downgrade_file_oplock(files_struct *fsp)
  to none even if a "break-to-level II" was sent.
 ****************************************************************************/
 
-BOOL remove_oplock(files_struct *fsp)
+bool remove_oplock(files_struct *fsp)
 {
-       BOOL ret;
+       bool ret;
        struct share_mode_lock *lck;
 
        /* Remove the oplock flag from the sharemode. */
-       lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+       lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
        if (lck == NULL) {
                DEBUG(0,("remove_oplock: failed to lock share entry for "
                         "file %s\n", fsp->fsp_name ));
@@ -202,12 +201,12 @@ BOOL remove_oplock(files_struct *fsp)
 /*
  * Deal with a reply when a break-to-level II was sent.
  */
-BOOL downgrade_oplock(files_struct *fsp)
+bool downgrade_oplock(files_struct *fsp)
 {
-       BOOL ret;
+       bool ret;
        struct share_mode_lock *lck;
 
-       lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+       lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
        if (lck == NULL) {
                DEBUG(0,("downgrade_oplock: failed to lock share entry for "
                         "file %s\n", fsp->fsp_name ));
@@ -253,7 +252,7 @@ static char *new_break_smb_message(TALLOC_CTX *mem_ctx,
        }
 
        memset(result,'\0',smb_size);
-       set_message(result,8,0,True);
+       srv_set_message(result,8,0,true);
        SCVAL(result,smb_com,SMBlockingX);
        SSVAL(result,smb_tid,fsp->conn->cnum);
        SSVAL(result,smb_pid,0xFFFF);
@@ -389,7 +388,7 @@ static void process_oplock_async_level2_break_message(struct messaging_context *
        struct share_mode_entry msg;
        files_struct *fsp;
        char *break_msg;
-       BOOL sign_state;
+       bool sign_state;
 
        if (data->data == NULL) {
                DEBUG(0, ("Got NULL buffer\n"));
@@ -450,8 +449,10 @@ static void process_oplock_async_level2_break_message(struct messaging_context *
        sign_state = srv_oplock_set_signing(False);
 
        show_msg(break_msg);
-       if (!send_smb(smbd_server_fd(), break_msg)) {
-               exit_server_cleanly("oplock_break: send_smb failed.");
+       if (!srv_send_smb(smbd_server_fd(),
+                       break_msg,
+                       IS_CONN_ENCRYPTED(fsp->conn))) {
+               exit_server_cleanly("oplock_break: srv_send_smb failed.");
        }
 
        /* Restore the sign state to what it was. */
@@ -476,8 +477,8 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
        struct share_mode_entry msg;
        files_struct *fsp;
        char *break_msg;
-       BOOL break_to_level2 = False;
-       BOOL sign_state;
+       bool break_to_level2 = False;
+       bool sign_state;
 
        if (data->data == NULL) {
                DEBUG(0, ("Got NULL buffer\n"));
@@ -555,8 +556,10 @@ static void process_oplock_break_message(struct messaging_context *msg_ctx,
        sign_state = srv_oplock_set_signing(False);
 
        show_msg(break_msg);
-       if (!send_smb(smbd_server_fd(), break_msg)) {
-               exit_server_cleanly("oplock_break: send_smb failed.");
+       if (!srv_send_smb(smbd_server_fd(),
+                       break_msg,
+                       IS_CONN_ENCRYPTED(fsp->conn))) {
+               exit_server_cleanly("oplock_break: srv_send_smb failed.");
        }
 
        /* Restore the sign state to what it was. */
@@ -588,7 +591,7 @@ static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
        unsigned long file_id;
        files_struct *fsp;
        char *break_msg;
-       BOOL sign_state;
+       bool sign_state;
 
        if (data->data == NULL) {
                DEBUG(0, ("Got NULL buffer\n"));
@@ -632,8 +635,10 @@ static void process_kernel_oplock_break(struct messaging_context *msg_ctx,
        sign_state = srv_oplock_set_signing(False);
 
        show_msg(break_msg);
-       if (!send_smb(smbd_server_fd(), break_msg)) {
-               exit_server_cleanly("oplock_break: send_smb failed.");
+       if (!srv_send_smb(smbd_server_fd(),
+                       break_msg,
+                       IS_CONN_ENCRYPTED(fsp->conn))) {
+               exit_server_cleanly("oplock_break: srv_send_smb failed.");
        }
 
        /* Restore the sign state to what it was. */
@@ -752,7 +757,7 @@ void release_level_2_oplocks_on_change(files_struct *fsp)
        if (!LEVEL_II_OPLOCK_TYPE(fsp->oplock_type))
                return;
 
-       lck = get_share_mode_lock(NULL, fsp->file_id, NULL, NULL);
+       lck = get_share_mode_lock(talloc_tos(), fsp->file_id, NULL, NULL);
        if (lck == NULL) {
                DEBUG(0,("release_level_2_oplocks_on_change: failed to lock "
                         "share mode entry for file %s.\n", fsp->fsp_name ));
@@ -862,7 +867,7 @@ void message_to_share_mode_entry(struct share_mode_entry *e, char *msg)
  Setup oplocks for this process.
 ****************************************************************************/
 
-BOOL init_oplocks(struct messaging_context *msg_ctx)
+bool init_oplocks(struct messaging_context *msg_ctx)
 {
        DEBUG(3,("init_oplocks: initializing messages.\n"));