]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_ident.cpp
Started on -Wall - safe compile
[user/henk/code/inspircd.git] / src / modules / m_ident.cpp
index bf4e66a6c4023e4dfd5fb588da2598c436f73415..45be7e874a44a527c25fb56472fc71f946532c3b 100644 (file)
@@ -14,6 +14,8 @@
  * ---------------------------------------------------
  */
 
+using namespace std;
+
 #include <stdio.h>
 #include <string>
 #include <stdlib.h>
@@ -54,21 +56,24 @@ Server *Srv;
 class RFC1413
 {
  protected:
-       int fd;                 // file descriptor
-       userrec* u;             // user record that the lookup is associated with
-       sockaddr_in addr;       // address we're connecting to
-       in_addr addy;           // binary ip address
-       int state;              // state (this class operates on a state engine)
-       char ibuf[MAXBUF];      // input buffer
-       sockaddr_in sock_us;    // our port number
-       sockaddr_in sock_them;  // their port number
-       socklen_t uslen;        // length of our port number
-       socklen_t themlen;      // length of their port number
-       int nrecv;              // how many bytes we've received
-       time_t timeout_end;     // how long until the operation times out
-       bool timeout;           // true if we've timed out and should bail
+       int fd;                  // file descriptor
+       userrec* u;              // user record that the lookup is associated with
+       sockaddr_in addr;        // address we're connecting to
+       in_addr addy;            // binary ip address
+       int state;               // state (this class operates on a state engine)
+       char ibuf[MAXBUF];       // input buffer
+       sockaddr_in sock_us;     // our port number
+       sockaddr_in sock_them;   // their port number
+       socklen_t uslen;         // length of our port number
+       socklen_t themlen;       // length of their port number
+       int nrecv;               // how many bytes we've received
+       time_t timeout_end;      // how long until the operation times out
+       bool timeout;            // true if we've timed out and should bail
+       char ident_request[128]; // buffer used to make up the request string
  public:
 
+       // The destructor makes damn sure the socket is freed :)
+
        ~RFC1413()
        {
                if (this->fd != -1)
@@ -157,7 +162,6 @@ class RFC1413
                        switch (this->state)
                        {
                                case IDENT_STATE_CONNECT:
-                                       Srv->Log(DEBUG,"*** IDENT IN STATE 1");
                                        uslen = sizeof(sock_us);
                                        themlen = sizeof(sock_them);
                                        if ((getsockname(this->u->fd,(sockaddr*)&sock_us,&uslen) || getpeername(this->u->fd, (sockaddr*)&sock_them, &themlen)))
@@ -171,13 +175,13 @@ class RFC1413
                                        else
                                        {
                                                // send the request in the following format: theirsocket,oursocket
-                                               Write(this->fd,"%d,%d",ntohs(sock_them.sin_port),ntohs(sock_us.sin_port));
+                                               snprintf(ident_request,127,"%d,%d\r\n",ntohs(sock_them.sin_port),ntohs(sock_us.sin_port));
+                                               send(this->fd,ident_request,strlen(ident_request),0);
                                                Srv->Log(DEBUG,"Sent ident request, moving to state 2");
                                                state = IDENT_STATE_WAITDATA;
                                        }
                                break;
                                case IDENT_STATE_WAITDATA:
-                                       Srv->Log(DEBUG,"*** IDENT IN STATE 2");
                                        nrecv = recv(this->fd,ibuf,sizeof(ibuf),0);
                                        if (nrecv > 0)
                                        {
@@ -233,6 +237,7 @@ class RFC1413
                                break;
                        }
                }
+               return true;
        }
 
        // returns true if the operation is completed,