The branch, master has been updated
       via  7f25723... s4:wrepl_server: use tsocket_address functions to get 
the peer ip
       via  9dd4419... s4:smb_server: use tsocket_address_string() for 
debugging the client address
      from  54abb07... s4:smb_server: use tsocket_address_string() to display 
the client address

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


- Log -----------------------------------------------------------------
commit 7f25723cf504b3cdc0db68ff4125539baa486975
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Apr 27 16:17:28 2010 +0200

    s4:wrepl_server: use tsocket_address functions to get the peer ip
    
    metze

commit 9dd4419ebe12d8a4eb467cf26640de5575e04e83
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Apr 27 16:05:08 2010 +0200

    s4:smb_server: use tsocket_address_string() for debugging the client address
    
    metze

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

Summary of changes:
 source4/smb_server/management.c            |   17 +++++++++--------
 source4/wrepl_server/wrepl_in_connection.c |   19 +++++++++++++++----
 2 files changed, 24 insertions(+), 12 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/smb_server/management.c b/source4/smb_server/management.c
index e58c278..b8e42ae 100644
--- a/source4/smb_server/management.c
+++ b/source4/smb_server/management.c
@@ -25,6 +25,7 @@
 #include "lib/messaging/irpc.h"
 #include "librpc/gen_ndr/ndr_irpc.h"
 #include "auth/auth.h"
+#include "lib/tsocket/tsocket.h"
 
 /*
   return a list of open sessions
@@ -34,9 +35,15 @@ static NTSTATUS smbsrv_session_information(struct 
irpc_message *msg,
 {
        struct smbsrv_connection *smb_conn = talloc_get_type(msg->private_data,
                                             struct smbsrv_connection);
+       struct tsocket_address *client_addr = 
smb_conn->connection->remote_address;
+       char *client_addr_string;
        int i=0, count=0;
        struct smbsrv_session *sess;
 
+       /* This is for debugging only! */
+       client_addr_string = tsocket_address_string(client_addr, r);
+       NT_STATUS_HAVE_NO_MEMORY(client_addr_string);
+
        /* count the number of sessions */
        for (sess=smb_conn->sessions.list; sess; sess=sess->next) {
                count++;
@@ -48,14 +55,8 @@ static NTSTATUS smbsrv_session_information(struct 
irpc_message *msg,
 
        for (sess=smb_conn->sessions.list; sess; sess=sess->next) {
                struct smbsrv_session_info *info = 
&r->out.info.sessions.sessions[i];
-               struct socket_address *client_addr;
-               client_addr = 
socket_get_peer_addr(smb_conn->connection->socket, r);
-               
-               if (client_addr) {
-                       info->client_ip = client_addr->addr;
-               } else {
-                       info->client_ip = NULL;
-               }
+
+               info->client_ip    = client_addr_string;
 
                info->vuid         = sess->vuid;
                info->account_name = 
sess->session_info->server_info->account_name;
diff --git a/source4/wrepl_server/wrepl_in_connection.c 
b/source4/wrepl_server/wrepl_in_connection.c
index ff0bb6c..09fb325 100644
--- a/source4/wrepl_server/wrepl_in_connection.c
+++ b/source4/wrepl_server/wrepl_in_connection.c
@@ -103,7 +103,8 @@ static void wreplsrv_accept(struct stream_connection *conn)
 {
        struct wreplsrv_service *service = talloc_get_type(conn->private_data, 
struct wreplsrv_service);
        struct wreplsrv_in_connection *wrepl_conn;
-       struct socket_address *peer_ip;
+       struct tsocket_address *peer_addr;
+       char *peer_ip;
        struct tevent_req *subreq;
        int rc, fd;
 
@@ -151,14 +152,24 @@ static void wreplsrv_accept(struct stream_connection 
*conn)
        wrepl_conn->conn = conn;
        wrepl_conn->service = service;
 
-       peer_ip = socket_get_peer_addr(conn->socket, wrepl_conn);
+       peer_addr = conn->remote_address;
+
+       if (!tsocket_address_is_inet(peer_addr, "ipv4")) {
+               DEBUG(0,("wreplsrv_accept: non ipv4 peer addr '%s'\n",
+                       tsocket_address_string(peer_addr, wrepl_conn)));
+               wreplsrv_terminate_in_connection(wrepl_conn, "wreplsrv_accept: "
+                               "invalid peer IP");
+               return;
+       }
+
+       peer_ip = tsocket_address_inet_addr_string(peer_addr, wrepl_conn);
        if (peer_ip == NULL) {
                wreplsrv_terminate_in_connection(wrepl_conn, "wreplsrv_accept: "
-                               "could not obtain peer IP from kernel");
+                               "could not convert peer IP into a string");
                return;
        }
 
-       wrepl_conn->partner = wreplsrv_find_partner(service, peer_ip->addr);
+       wrepl_conn->partner = wreplsrv_find_partner(service, peer_ip);
        irpc_add_name(conn->msg_ctx, "wreplsrv_connection");
 
        /*


-- 
Samba Shared Repository

Reply via email to