Adding soap fault messages to message receiver

diff --git a/src/msgreceivers/savan_msg_recv.c b/src/msgreceivers/savan_msg_recv.c
index 3f853f7..33281ae 100644
--- a/src/msgreceivers/savan_msg_recv.c
+++ b/src/msgreceivers/savan_msg_recv.c
@@ -106,6 +106,7 @@
     axis2_msg_ctx_t *new_msg_ctx)
 {
     savan_message_types_t msg_type = SAVAN_MSG_TYPE_UNKNOWN;
+    axis2_status_t status = AXIS2_SUCCESS;
     
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
             "[savan] Entry:savan_msg_recv_invoke_business_logic_sync");
@@ -114,31 +115,45 @@
     msg_type = savan_util_get_message_type(msg_ctx, env);
     if (msg_type == SAVAN_MSG_TYPE_SUB)
     {
-        savan_msg_recv_handle_sub_request(env, msg_ctx, new_msg_ctx);
+        status = savan_msg_recv_handle_sub_request(env, msg_ctx, new_msg_ctx);
     }
     else if (msg_type == SAVAN_MSG_TYPE_UNSUB)
     {
-        savan_msg_recv_handle_unsub_request(env, msg_ctx, new_msg_ctx);
+        status = savan_msg_recv_handle_unsub_request(env, msg_ctx, new_msg_ctx);
     }
     else if (msg_type == SAVAN_MSG_TYPE_RENEW)
     {
-        savan_msg_recv_handle_renew_request(env, msg_ctx, new_msg_ctx);
+        status = savan_msg_recv_handle_renew_request(env, msg_ctx, new_msg_ctx);
     }
     else if (msg_type == SAVAN_MSG_TYPE_GET_STATUS)
     {
-        savan_msg_recv_handle_get_status_request(env, msg_ctx, new_msg_ctx);
+        status = savan_msg_recv_handle_get_status_request(env, msg_ctx, new_msg_ctx); 
     }
     else
     {
-        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Unhandled message type"); 
+        status = AXIS2_FAILURE;
+        AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[savan] Unhandled message type");
         AXIS2_ERROR_SET(env->error, SAVAN_ERROR_UNHANDLED_MSG_TYPE, AXIS2_FAILURE);
-        return AXIS2_FAILURE;
     }
     
+    if(AXIS2_SUCCESS != status)
+    {
+        axis2_char_t *reason = NULL;
+
+        axutil_error_set_error_number(env->error, SAVAN_ERROR_REQUESTED_DELIVERY_MODE_NOT_SUPPORTED); 
+        reason = (axis2_char_t *) axutil_error_get_message(env->error);
+        savan_util_create_fault_envelope(msg_ctx, env,
+                                         SAVAN_FAULT_ESUP_CODE, 
+                                         SAVAN_FAULT_ESUP_SUB_CODE,
+                                         reason, 
+                                         SAVAN_FAULT_ESUP_DETAIL);
+        return status;
+    }
+
     AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, 
             "[savan] Entry:savan_msg_recv_invoke_business_logic_sync");
 
-    return AXIS2_SUCCESS;    
+    return status;    
 }
 
 axis2_status_t AXIS2_CALL