int AmContentType::parseParams(const char* c, const char* end) { list<sip_avp*> avp_params; if(parse_gen_params_sc(&avp_params, &c, end-c, '\0') < 0) { if(!avp_params.empty()) free_gen_params(&avp_params); return -1; } for(list<sip_avp*>::iterator it_ct_param = avp_params.begin(); it_ct_param != avp_params.end();++it_ct_param) { DBG("parsed new content-type parameter: <%.*s>=<%.*s>", (*it_ct_param)->name.len,(*it_ct_param)->name.s, (*it_ct_param)->value.len,(*it_ct_param)->value.s); Param* p = new Param(c2stlstr((*it_ct_param)->name), c2stlstr((*it_ct_param)->value)); if(p->parseType()) { free_gen_params(&avp_params); delete p; return -1; } if(p->type == Param::BOUNDARY) mp_boundary = p; params.push_back(p); } free_gen_params(&avp_params); return 0; }