rem: memcpy(buffer, _m->from->body.s, _m->from->body.len); buffer[_m->from->body.len] = '\r'; buffer[_m->from->body.len + 1] = '\n'; buffer[_m->from->body.len + 2] = '\0';  memset(&from, 0, sizeof(from)); parse_to(buffer, buffer + _m->from->body.len + 3, &from); if (from.error != PARSE_OK) {
add: if (parse_from_header(_m) == -1) {
context: static inline int parse_message(struct sip_msg* _m){	     /* FIXME: HDR_ACCEPT */	if (parse_headers(_m, HDR_EOH, 0) == -1) {    /* if (parse_headers(_m, HDR_CONTACT | HDR_FROM | HDR_EVENT | HDR_EXPIRES | HDR_CALLID | HDR_TO, HDR_ACCEPT, 0) == -1) { */		paerrno = PA_PARSE_ERR;		LOG(L_ERR, "parse_message(): Error while parsing headers\n");		return -1;	}	if (_m->contact == 0) {		paerrno = PA_CONTACT_MISS;		LOG(L_ERR, "parse_message(): Contact: missing\n");		return -2;	} else {		if (parse_contact(_m->contact) < 0) {			paerrno = PA_CONT_PARSE;			LOG(L_ERR, "parse_message(): Error while parsing Contact\n");			return -3;		}	}	if (((contact_body_t*)(_m->contact->parsed))->star == 1) {		paerrno = PA_CONT_STAR;		LOG(L_ERR, "parse_message(): * Contact not allowed in SUBSCRIBE\n");		return -4;	}	if (((contact_body_t*)(_m->contact->parsed))->contacts == 0) {		paerrno = PA_CONTACT_MISS;		LOG(L_ERR, "parse_message(): Contact missing\n");		return -5;	}	if (_m->from == 0) {		paerrno = PA_FROM_MISS;		LOG(L_ERR, "parse_message(): From: missing\n");		return -6;	} else {		memcpy(buffer, _m->from->body.s, _m->from->body.len);		buffer[_m->from->body.len] = '\r';		buffer[_m->from->body.len + 1] = '\n';		buffer[_m->from->body.len + 2] = '\0';		memset(&from, 0, sizeof(from));		parse_to(buffer, buffer + _m->from->body.len + 3, &from);		if (from.error != PARSE_OK) {			paerrno = PA_FROM_ERROR;			LOG(L_ERR, "parse_message(): Error while parsing From\n");			return -7;		}		     /* FIXME: parse from here */	}	if (_m->event) {		if (parse_event(_m->event) < 0) {			paerrno = PA_EVENT_PARSE;			LOG(L_ERR, "parse_message(): Error while parsing Event header field\n");			return -8;		}	}	if (_m->expires) {		if (parse_expires(_m->expires) < 0) {			paerrno = PA_EXPIRES_PARSE;			LOG(L_ERR, "parse_message(): Error while parsing Expires header field\n");			return -9;		}	}	parse_accept(_m, &acc);	return 0;}