rem: soap_match_tag(struct soap *soap, const char *tag1, const char *tag2)
add: soap_match_tag(struct soap *soap, const char *tag1, const char *tag2_)
context: soap_match_tag(struct soap *soap, const char *tag1, const char *tag2){ register const char *s, *t;  if (!tag1 || !tag2 || !*tag2)    return SOAP_OK;  s = strchr(tag1, ':');  t = strchr(tag2, ':');  if (t)  { if (s)    { if (SOAP_STRCMP(s + 1, t + 1))        return SOAP_TAG_MISMATCH;      if (t != tag2 && soap_match_namespace(soap, tag1, tag2, s - tag1, t - tag2))      { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags '%s' and '%s' match but namespaces differ\n", tag1, tag2));        return SOAP_TAG_MISMATCH;      }    }    else if (SOAP_STRCMP(tag1, t + 1))      return SOAP_TAG_MISMATCH;    else if (t != tag2 && soap_match_namespace(soap, tag1, tag2, 0, t - tag2))    { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags '%s' and '%s' match but namespaces differ\n", tag1, tag2));      return SOAP_TAG_MISMATCH;    }    DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags and (default) namespaces match: '%s' '%s'\n", tag1, tag2));    return SOAP_OK;  }  if (s)  { if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER && soap->encodingStyle))      return SOAP_TAG_MISMATCH;    if (SOAP_STRCMP(s + 1, tag2))      return SOAP_TAG_MISMATCH;    if (!soap->encodingStyle)    { t = soap_default_namespace(soap);      if (!t || soap_match_namespace(soap, tag1, t, s - tag1, strlen(t)))        return SOAP_TAG_MISMATCH;    }  }  else if (SOAP_STRCMP(tag1, tag2))    return SOAP_TAG_MISMATCH;  DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags match: '%s' '%s'\n", tag1, tag2));  return SOAP_OK;}