summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libpiano/src/main.c4
-rw-r--r--libpiano/src/piano.h3
-rw-r--r--libpiano/src/xml.c3
3 files changed, 9 insertions, 1 deletions
diff --git a/libpiano/src/main.c b/libpiano/src/main.c
index 33cd5df..f7aebc5 100644
--- a/libpiano/src/main.c
+++ b/libpiano/src/main.c
@@ -853,6 +853,10 @@ const char *PianoErrorToStr (PianoReturn_t ret) {
return "Not authorized.";
break;
+ case PIANO_RET_PROTOCOL_INCOMPATIBLE:
+ return "Protocol incompatible. Please upgrade " PACKAGE_NAME ".";
+ break;
+
default:
return "No error message available.";
break;
diff --git a/libpiano/src/piano.h b/libpiano/src/piano.h
index ae4b18b..8160b2c 100644
--- a/libpiano/src/piano.h
+++ b/libpiano/src/piano.h
@@ -152,7 +152,8 @@ typedef struct PianoSearchResult PianoSearchResult_t;
/* FIXME: more error types (http failed, e.g.) later */
enum PianoReturn {PIANO_RET_OK, PIANO_RET_ERR, PIANO_RET_XML_INVALID,
PIANO_RET_AUTH_TOKEN_INVALID, PIANO_RET_AUTH_USER_PASSWORD_INVALID,
- PIANO_RET_NET_ERROR, PIANO_RET_NOT_AUTHORIZED};
+ PIANO_RET_NET_ERROR, PIANO_RET_NOT_AUTHORIZED,
+ PIANO_RET_PROTOCOL_INCOMPATIBLE};
typedef enum PianoReturn PianoReturn_t;
void PianoInit (PianoHandle_t *);
diff --git a/libpiano/src/xml.c b/libpiano/src/xml.c
index 25cd8f8..f43d4a8 100644
--- a/libpiano/src/xml.c
+++ b/libpiano/src/xml.c
@@ -65,6 +65,9 @@ void PianoXmlIsFaultCb (const char *key, const xmlNode *value, void *data) {
} else if (strcmp ("LISTENER_NOT_AUTHORIZED",
matchStr) == 0) {
*ret = PIANO_RET_NOT_AUTHORIZED;
+ } else if (strcmp ("INCOMPATIBLE_VERSION",
+ matchStr) == 0) {
+ *ret = PIANO_RET_PROTOCOL_INCOMPATIBLE;
} else {
*ret = PIANO_RET_ERR;
printf (PACKAGE ": Unknown error %s in %s\n",