Jelajahi Sumber

len field added (total length of one Route field).

Jan Janak 22 tahun lalu
induk
melakukan
20d2b39b9a
2 mengubah file dengan 4 tambahan dan 2 penghapusan
  1. 3 2
      parser/parse_rr.c
  2. 1 0
      parser/parse_rr.h

+ 3 - 2
parser/parse_rr.c

@@ -68,7 +68,6 @@ int parse_rr(struct hdr_field* _h)
 			LOG(L_ERR, "parse_rr(): No memory left\n");
 			goto error;
 		}
-
 		memset(r, 0, sizeof(rr_t));
 		
 		     /* Parse name-addr part of the header */
@@ -76,7 +75,8 @@ int parse_rr(struct hdr_field* _h)
 			LOG(L_ERR, "parse_rr(): Error while parsing name-addr\n");
 			goto error;
 		}
-		
+		r->len = r->nameaddr.len;
+
 		     /* Shift just behind the closing > */
 		s.s = r->nameaddr.name.s + r->nameaddr.len;  /* Point just behind > */
 		s.len -= r->nameaddr.len;
@@ -99,6 +99,7 @@ int parse_rr(struct hdr_field* _h)
 				LOG(L_ERR, "parse_rr(): Error while parsing params\n");
 				goto error;
 			}
+			r->len = r->params->name.s + r->params->len - r->nameaddr.name.s;
 
 			     /* Copy hooks */
 			r->r2 = hooks.rr.r2;

+ 1 - 0
parser/parse_rr.h

@@ -44,6 +44,7 @@ typedef struct rr {
 	name_addr_t nameaddr; /* Name-addr part */
 	param_t* r2;          /* Hook to r2 parameter */
 	param_t* params;      /* Linked list of other parameters */
+	int len;              /* Length of the whole route field */
         struct rr* next;      /* Next RR in the list */
 } rr_t;