From 6563259c7f0d1db37e46aa0bc3b7f9d086f27dc0 Mon Sep 17 00:00:00 2001
From: Erik Alexandre Pucci <eap08@c3sl.ufpr.br>
Date: Fri, 19 Mar 2010 10:11:31 -0300
Subject: [PATCH] client.c: Added more server responses checks

check_version() verifies more server responses:
- If versionFromServer is NULL;
- If the server read an invalid version file (versionFromServer contains
"Invalid version");
- And if the server could not find the version file (versionFromServer
contains "Version file not found").

Signed-off-by: Erik Alexandre Pucci <eap08@c3sl.ufpr.br>
Acked-by: Diego Giovane Pasqualin <dgp06@c3sl.ufpr.br>
Signed-off-by: Danilo K. S. Yorinori <danilok@c3sl.ufpr.br>
---
 src/client.c | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/client.c b/src/client.c
index 4a1ee5e..5016cbf 100644
--- a/src/client.c
+++ b/src/client.c
@@ -32,6 +32,9 @@
  *          4) Client out-of-date
  *          5) Server returned an error
  *          6) Unexpected server result
+ *          7) Server returned an empty version string
+ *          8) Server returned an invalid version string
+ *          9) Server did not find the version file
  */
 int main(int argc, char **argv)
 {
@@ -204,8 +207,27 @@ void check_version(struct soap *soap, char *url, char *clientVersion)
         printf("Version from server: %s\n", versionFromServer);
     }
 
+    /* Check server version string for errors */
+    if (versionFromServer == NULL)
+    {
+        fprintf(stderr, "Server returned an empty version string.\n");
+        /* Empty version */
+        exit(7);
+    }
+    else if (strcmp(versionFromServer, "Invalid version") == 0)
+    {
+        fprintf(stderr, "Server returned an invalid version string.\n");
+        /* Invalid version */
+        exit(8);
+    }
+    else if (strcmp(versionFromServer, "Version file not found") == 0)
+    {
+        fprintf(stderr, "Server did not find the version file.\n");
+        /* Version file not found (server) */
+        exit(9);
+    }
     /* Compare client and server versions */
-    if (strcmp(clientVersion, versionFromServer) != 0)
+    else if (strcmp(clientVersion, versionFromServer) != 0)
     {
         fprintf(stderr, "Client version out-of-date. Update client.\n");
         /* Client out-of-date version */
-- 
GitLab