<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/notifications/.XMPP.cpp.swp</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -28,24 +28,36 @@ void XMPP::updateSettings(XMPPData myXMPPData){
 	xmppData = myXMPPData;
 }
 
-#define XMPPBUFSIZE 1024
-
-char xmppBuf[XMPPBUFSIZE];
 int xmppSock;
 
-bool sendXMPP(string msg){
+bool XMPP::sendSocket(string msg){
 	ssize_t len;
 	len = write(xmppSock,msg.c_str(),strlen(msg.c_str()));
-	if(len &lt;= 0)
+	if(len &lt;= 0){
+    p_debug-&gt;log(CONV_DEBUG_DIRECTION_SENT, CONV_DEBUG_ERROR_SENT);
 		return 0;
+  }
+  p_debug-&gt;log(CONV_DEBUG_DIRECTION_SENT, noNewLineS(msg));
 	return 1;
 }
 
-bool readXMPP(){
+#define XMPPBUFSIZE 1024
+char buffer[XMPPBUFSIZE] = &quot;&quot;;
+
+bool XMPP::readSocket(){
 	ssize_t len;
-	len = read(xmppSock,xmppBuf,XMPPBUFSIZE-1);
-	if(len &lt;= 0)
+	len = read(xmppSock,buffer, XMPPBUFSIZE-1);
+  
+	if(len &lt;= 0){
+    p_debug-&gt;log(CONV_DEBUG_DIRECTION_RECV, CONV_DEBUG_ERROR_RECV);
 		return 0;
+  }
+
+  // Terminate the buffer.
+  buffer[XMPPBUFSIZE-1] = '\0';
+
+  p_debug-&gt;log(CONV_DEBUG_DIRECTION_RECV, noNewLine(buffer, strlen(buffer)));
+
 	return 1;
 }
 
@@ -82,6 +94,7 @@ bool XMPP::sendMessage(string myMessage, string receiver){
 
 	struct sockaddr_in address;
 	if((xmppSock = socket(AF_INET, SOCK_STREAM,0)) &gt; 0){
+
 		// Socket created.
 		address.sin_family = AF_INET;
 		address.sin_port = htons(xmppData.xmppPort);
@@ -89,6 +102,9 @@ bool XMPP::sendMessage(string myMessage, string receiver){
 		if(connect(xmppSock,(struct sockaddr *) &amp;address, sizeof(address)) == 0){
 			// Connected to server.
 
+      ConversationDebug debug(dbData, &quot;xmpp&quot;, xmppData.xmppServer);
+      p_debug = &amp;debug;
+
 			stringstream message;
 			stringstream reply;
 
@@ -98,7 +114,7 @@ bool XMPP::sendMessage(string myMessage, string receiver){
 					&lt;&lt; &quot;' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams'&gt;&quot; &lt;&lt; endl;
 
 			// Send stream initialization.
-			if(!sendXMPP(message.str())){
+			if(!sendSocket(message.str())){
 				close(xmppSock);
 				return 0;
 			}
@@ -112,19 +128,19 @@ bool XMPP::sendMessage(string myMessage, string receiver){
 					&lt;&lt; &quot;' id='auth1'&gt;&lt;query xmlns='jabber:iq:auth'/&gt;&lt;/iq&gt;&quot; &lt;&lt; endl;
 
 			// Send iq request.
-			if(!sendXMPP(message.str())){
+			if(!sendSocket(message.str())){
 				close(xmppSock);
 				return 0;
 			}
 
 			// Read reply.
-			if(!readXMPP()){
+			if(!readSocket()){
 				close(xmppSock);
 				return 0;
 			}
 
 			// See if an error occured.
-			reply &lt;&lt; xmppBuf;
+			reply &lt;&lt; buffer;
 			if(reply.str().find(&quot;&lt;stream:error&gt;&quot;, 0) != string::npos){
 
 				// There was an error. Abort.
@@ -155,19 +171,19 @@ bool XMPP::sendMessage(string myMessage, string receiver){
 					&lt;&lt; endl;
 
 			// Send login message.
-			if(!sendXMPP(message.str())){
+			if(!sendSocket(message.str())){
 				close(xmppSock);
 				return 0;
 			}
 
 			// Read reply.
-			if(!readXMPP()){
+			if(!readSocket()){
 				close(xmppSock);
 				return 0;
 			}
 
 			// See if an error occured.
-			reply &lt;&lt; xmppBuf;
+			reply &lt;&lt; buffer;
 
 			if(reply.str().find(&quot;&lt;error&quot;, 0) != string::npos){
 				// There was an error. Abort.
@@ -198,18 +214,18 @@ bool XMPP::sendMessage(string myMessage, string receiver){
 					&lt;&lt; &quot;&lt;/body&gt;&lt;/message&gt;&quot;
 					&lt;&lt; endl;
 
-			if(!sendXMPP(message.str())){
+			if(!sendSocket(message.str())){
 				close(xmppSock);
 				return 0;
 			}
 
-			if(!readXMPP()){
+			if(!readSocket()){
 				close(xmppSock);
 				return 0;
 			}
 
 			// See if an error occurred.
-			reply &lt;&lt; xmppBuf;
+			reply &lt;&lt; buffer;
 
 			if(reply.str().find(&quot;&lt;error&quot;, 0) != string::npos){
 				// There was an error. Abort.
@@ -224,7 +240,7 @@ bool XMPP::sendMessage(string myMessage, string receiver){
 			}
 
 			// Close this session.
-			sendXMPP(&quot;&lt;/stream&gt;&quot;);
+			sendSocket(&quot;&lt;/stream&gt;&quot;);
 
 			close(xmppSock);
 			return 1;</diff>
      <filename>src/notifications/XMPP.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,7 @@
 #define XMPP_H_
 
 #include &quot;../internal.h&quot;
+#include &quot;../log/ConversationDebug.h&quot;
 
 class XMPP{
 	private:
@@ -33,6 +34,12 @@ class XMPP{
 
 		//! Holds login and connection information of MySQL database.
 		mySQLData dbData;
+
+    ConversationDebug* p_debug;
+    
+    bool sendSocket(string msg);
+    bool readSocket();
+
 	public:
 		XMPP(XMPPData xmppData, mySQLData myDBData);
 </diff>
      <filename>src/notifications/XMPP.h</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c2a3f79903dbaeb6b5f82098a09e0449f2942638</id>
    </parent>
  </parents>
  <author>
    <name>lennartkoopmann</name>
    <login>lennartkoopmann</login>
    <email>lennart@scopeport.org</email>
  </author>
  <url>http://github.com/lennartkoopmann/scopeport-server/commit/47cefb44b801d837966a5715cd0dca174d7dbf83</url>
  <id>47cefb44b801d837966a5715cd0dca174d7dbf83</id>
  <committed-date>2009-07-12T13:52:12-07:00</committed-date>
  <authored-date>2009-07-12T13:52:12-07:00</authored-date>
  <message>Now also able to debug XMPP sessions</message>
  <tree>7383856c15b9a32dc62a500d64d3b6fa8523e325</tree>
  <committer>
    <name>lennartkoopmann</name>
    <login>lennartkoopmann</login>
    <email>lennart@scopeport.org</email>
  </committer>
</commit>
