rem: if (soap->dime_buflen || soap->dime_chunksize) { if (soap_move(soap, (long)(soap->dime_size - soap_tell(soap))))
add: if (soap->dime.buflen || soap->dime.chunksize) { if (soap_move(soap, (long)(soap->dime.size - soap_tell(soap))))
context: soap_getdimehdr(struct soap *soap){ register wchar c;  register char *s;  register int i;  unsigned char tmp[12];  size_t optlen, idlen, typelen;  if (!(soap->mode & SOAP_ENC_DIME))    return soap->error = SOAP_EOD;  DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Get DIME header\n"));  if (soap->dime_buflen || soap->dime_chunksize)  { if (soap_move(soap, (long)(soap->dime_size - soap_tell(soap))))      return soap->error = SOAP_EOF;    soap_unget(soap, soap_getchar(soap)); /* skip padding and get hdr */    DBGLOG(TEST, SOAP_MESSAGE(fdebug, "... From chunked\n"));    return SOAP_OK;  }  s = (char*)tmp;  for (i = 12; i > 0; i--)  { if ((int)(c = soap_getchar(soap)) == EOF)      return soap->error = SOAP_EOF;    *s++ = (char)c;  }  if ((tmp[0] & 0xF8) != SOAP_DIME_VERSION)    return soap->error = SOAP_DIME_MISMATCH;  soap->dime_flags = (tmp[0] & 0x7) | (tmp[1] & 0xF0);  optlen = (tmp[2] << 8) | tmp[3];  idlen = (tmp[4] << 8) | tmp[5];  typelen = (tmp[6] << 8) | tmp[7];  soap->dime_size = (tmp[8] << 24) | (tmp[9] << 16) | (tmp[10] << 8) | tmp[11];  DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME size=%u flags=0x%X\n", (unsigned int)soap->dime_size, soap->dime_flags));  if (!(soap->dime_options = soap_getdimefield(soap, optlen)) && soap->error)    return soap->error;  if (!(soap->dime_id = soap_getdimefield(soap, idlen)) && soap->error)    return soap->error;  if (!(soap->dime_type = soap_getdimefield(soap, typelen)) && soap->error)    return soap->error;  DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DIME id=%s, type=%s, options=%s\n", soap->dime_id?soap->dime_id:"", soap->dime_type?soap->dime_type:"", soap->dime_options?soap->dime_options+4:""));  if (soap->dime_flags & SOAP_DIME_ME)    soap->mode &= ~SOAP_ENC_DIME;  return SOAP_OK;}