SOAP_FMAC1 void SOAP_FMAC2 soap_fault(struct soap *soap) { if (!soap->fault) { soap->fault = (struct SOAP_ENV__Fault*)soap_malloc(soap, sizeof(struct SOAP_ENV__Fault)); soap_default_SOAP_ENV__Fault(soap, soap->fault); } }
static struct SOAP_ENV__Fault* allocate_fault(struct soap *s, const char *faultcode, const char *faultstring) { struct SOAP_ENV__Fault *fault; /* require a faultcode */ if (faultcode == NULL) { return NULL; } fault = (struct SOAP_ENV__Fault*)soap_malloc(s, sizeof(struct SOAP_ENV__Fault)); if (fault == NULL) { return NULL; } soap_default_SOAP_ENV__Fault(s, fault); fault->faultcode = soap_strdup(s, faultcode); if (faultstring) { fault->faultstring = soap_strdup(s, faultstring); } fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(s, sizeof(struct SOAP_ENV__Detail)); if (fault->detail) { soap_default_SOAP_ENV__Detail(s, fault->detail); } return fault; }
SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) { if (!soap->fault) { soap->fault = (struct SOAP_ENV__Fault*)soap_malloc(soap, sizeof(struct SOAP_ENV__Fault)); soap_default_SOAP_ENV__Fault(soap, soap->fault); } if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) { soap->fault->SOAP_ENV__Code = (struct SOAP_ENV__Code*)soap_malloc(soap, sizeof(struct SOAP_ENV__Code)); soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); } if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) { soap->fault->SOAP_ENV__Reason = (struct SOAP_ENV__Reason*)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason)); soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); } }
SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) { if (!soap->fault) { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); soap_default_SOAP_ENV__Fault(soap, soap->fault); } if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); } if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); } }
SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) { short soap_flag_faultcode = 1, soap_flag_faultstring = 1, soap_flag_faultactor = 1, soap_flag_detail = 1; if (soap_element_begin_in(soap, tag)) return NULL; if (*soap->type && soap_match_tag(soap, soap->type, type)) { soap->error = SOAP_TYPE_MISMATCH; soap_revert(soap); return NULL; } if (soap->null) { if (soap->enable_null) { soap->error = SOAP_NULL; return NULL; } else return a; } if (soap->body && !*soap->href) { a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0); if (!a) return NULL; if (soap->alloced) soap_default_SOAP_ENV__Fault(soap, a); for (;;) { soap->error = SOAP_TAG_MISMATCH; if (soap_flag_faultcode && soap->error == SOAP_TAG_MISMATCH) if (soap_in_string(soap, "faultcode", &a->faultcode, "")) { soap_flag_faultcode = 0; continue; } if (soap_flag_faultstring && soap->error == SOAP_TAG_MISMATCH) if (soap_in_string(soap, "faultstring", &a->faultstring, "")) { soap_flag_faultstring = 0; continue; } if (soap_flag_faultactor && soap->error == SOAP_TAG_MISMATCH) if (soap_in_string(soap, "faultactor", &a->faultactor, "")) { soap_flag_faultactor = 0; continue; } if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) if (soap_in_string(soap, "detail", &a->detail, "")) { soap_flag_detail = 0; continue; } if (soap->error == SOAP_TAG_MISMATCH) soap->error = soap_ignore_element(soap); if (soap->error == SOAP_NO_TAG) break; if (soap->error) { return NULL; } } if (soap_element_end_in(soap, tag)) return NULL; } else { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void**)soap_id_enter(soap, soap->id, a, SOAP_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0), SOAP_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault)); if (soap->alloced) soap_default_SOAP_ENV__Fault(soap, a); if (soap->body && soap_element_end_in(soap, tag)) return NULL; } return a; }