/* * Parse contact header field body */ int parse_contact(struct hdr_field* _h) { contact_body_t* b; if (_h->parsed != 0) { return 0; /* Already parsed */ } b = (contact_body_t*)pkg_malloc(sizeof(contact_body_t)); if (b == 0) { LOG(L_ERR, "parse_contact(): No memory left\n"); return -1; } memset(b, 0, sizeof(contact_body_t)); if (contact_parser(_h->body.s, _h->body.len, b) < 0) { LOG(L_ERR, "parse_contact(): Error while parsing\n"); pkg_free(b); return -2; } _h->parsed = (void*)b; return 0; }
/* * Parse contact header field body */ int parse_contact(struct hdr_field* _h) { contact_body_t* b; if (_h->parsed != 0) { return 0; /* Already parsed */ } b = (contact_body_t*)pkg_malloc(sizeof(contact_body_t)); if (b == 0) { LM_ERR("no pkg memory left\n"); return -1; } memset(b, 0, sizeof(contact_body_t)); if (contact_parser(_h->body.s, _h->body.len, b) < 0) { LM_ERR("failed to parse contact\n"); pkg_free(b); set_err_info(OSER_EC_PARSER, OSER_EL_MEDIUM, "error parsing CONTACT headers"); set_err_reply(400, "bad headers"); return -2; } _h->parsed = (void*)b; return 0; }