<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -29,21 +29,26 @@ Mediafly* Mediafly::getMediafly()
  *   &lt;err code=&quot;14&quot; message=&quot;Request must be made over a secure connection.&quot; /&gt;
  * &lt;/response&gt;
  */
-bool Mediafly::checkResponse(QDomDocument&amp; doc, QString&amp; data, QString&amp; errorMsg)
+bool Mediafly::checkResponse(QDomDocument&amp; doc, QString&amp; data, QString&amp; errorMsg, bool&amp; expiredToken)
 {
+	expiredToken = false;
+
 	if (!doc.setContent(data, &amp;errorMsg))
 		return false;
 
 	QDomElement docResponse = doc.firstChildElement(&quot;response&quot;);
 	if (docResponse.isNull()) {
-		errorMsg = doc.toString();
+		errorMsg = data;
 		return false;
 	}
+
 	QString statusAttribute = docResponse.attribute(&quot;status&quot;);
 	if (statusAttribute == &quot;fail&quot;) {
 		QDomElement docErr = docResponse.firstChildElement(&quot;err&quot;);
 		QString errCode = docErr.attribute(&quot;code&quot;);
 		QString errMessage = docErr.attribute(&quot;message&quot;);
+		if ((errCode.toInt() == -1) &amp;&amp; (errMessage == &quot;Token invalid.&quot;))
+			expiredToken = true;
 		errorMsg = &quot;[&quot; + errCode + &quot;] &quot; + errMessage;
 		return false;
 	} else if (statusAttribute != &quot;ok&quot;) {
@@ -69,15 +74,19 @@ void Mediafly::handleRequestFinished(int id, bool error)
 
 			qDebug() &lt;&lt; data;
 
-			if (!checkResponse(doc, data, errorMsg))
+			bool expiredToken;
+			if (!checkResponse(doc, data, errorMsg, expiredToken))
 			{
-				// We count only with token expired error for now.
-				//
-
-				// Acquire new session info and restart the operation.
-				//
-				Authentication_GetToken();
-				m_request &lt;&lt; requestInfo;
+				if (expiredToken)
+				{
+					// Acquire new session info and restart
+					// the operation.
+
+					Authentication_GetToken();
+					m_request &lt;&lt; requestInfo;
+				}
+				else
+					emit readError(errorMsg);
 			}
 			else
 				requestInfo.m_consumer-&gt;read(doc);
@@ -108,7 +117,7 @@ Mediafly::Mediafly()
 	// Get token as soon as possible. It will be neccessary
 	// anyway...
 
-//	Authentication_GetToken();
+	Authentication_GetToken();
 }
 
 void Mediafly::abort()</diff>
      <filename>mediaflyplayer/src/Mediafly.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -52,12 +52,11 @@ private:
 
 	QString makePath(QString&amp; method, QStringList&amp; parameters);
 	void Query(MediaflyConsumer *consumer, QString method, QMap&lt;QString, QString&gt;&amp; firstMap, QMap&lt;QString, QString&gt;&amp; map, bool useHttps = false);
-	void checkResponse(QDomDocument&amp; doc);
 	QString computeHash(QMap&lt;QString, QString&gt;&amp; map, QString token_id);
 	QStringList makeParams(QMap&lt;QString, QString&gt;&amp; map);
 	void Query(MediaflyConsumer *consumer, QString function, QMap&lt;QString, QString&gt;&amp; map);
 	void Query(MediaflyConsumer *consumer, QString function, QMap&lt;QString, QString&gt;&amp; map, const MediaflySessionInfo&amp; session);
-	bool checkResponse(QDomDocument&amp; doc, QString&amp; data, QString&amp; errorMsg);
+	bool checkResponse(QDomDocument&amp; doc, QString&amp; data, QString&amp; errorMsg, bool&amp; expiredToken);
 	void Query (RequestInfo&amp; requestInfo);
 	void Query (RequestInfoBinary&amp; requestInfoBinary);
 	void Query (MediaflyConsumerBinary *modelData, const QString&amp; path);</diff>
      <filename>mediaflyplayer/src/Mediafly.h</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ab79d94bb3efb619ff72cdee8c0aee5e02db6d22</id>
    </parent>
  </parents>
  <author>
    <name>Milan Svoboda</name>
    <email>milan.svoboda@centrum.cz</email>
  </author>
  <url>http://github.com/tex/mediafly/commit/2bf585da6ab65912f5aae28b787c1df8475b5b04</url>
  <id>2bf585da6ab65912f5aae28b787c1df8475b5b04</id>
  <committed-date>2008-10-10T09:48:00-07:00</committed-date>
  <authored-date>2008-10-10T09:48:00-07:00</authored-date>
  <message>Better error handling in Mediafly class. Detect token expiration explicitly. Get the token as soon as possible.</message>
  <tree>103c48310fda8b26710c5479a8e67899d1716055</tree>
  <committer>
    <name>Milan Svoboda</name>
    <email>milan.svoboda@centrum.cz</email>
  </committer>
</commit>
