|
@@ -517,157 +517,6 @@ error:
|
|
|
}
|
|
|
|
|
|
|
|
|
-#ifdef OLD_PARSER
|
|
|
-/* parses a via body, returns next via (for compact vias) & fills vb,
|
|
|
- * the buffer should be null terminated! */
|
|
|
-char* parse_via_body(char* buffer,unsigned int len, struct via_body * vb)
|
|
|
-{
|
|
|
- /* format: sent-proto sent-by *(";" params) [comment]
|
|
|
-
|
|
|
- sent-proto = name"/"version"/"transport
|
|
|
- sent-by = host [":" port]
|
|
|
-
|
|
|
- */
|
|
|
-
|
|
|
- char* tmp;
|
|
|
- char *name,*version, *transport, *comment, *params, *hostport;
|
|
|
- int name_len, version_len, transport_len, comment_len, params_len;
|
|
|
- char * next_via;
|
|
|
- str host;
|
|
|
- short int port;
|
|
|
- int offset;
|
|
|
-
|
|
|
-
|
|
|
- name=version=transport=comment=params=hostport=next_via=host.s=0;
|
|
|
- name_len=version_len=transport_len=comment_len=params_len=host.len=0;
|
|
|
- name=eat_space_end(buffer, buffer+len);
|
|
|
- if (name-buffer==len) goto error;
|
|
|
- offset=name-buffer;
|
|
|
- tmp=name;
|
|
|
-
|
|
|
- version=eat_token2_end(tmp,tmp+len-offset,'/');
|
|
|
- if (version+1-buffer>=len) goto error;
|
|
|
- *version=0;
|
|
|
- name_len=version-name;
|
|
|
- version++;
|
|
|
- offset+=version-tmp;
|
|
|
-
|
|
|
- transport=eat_token2_end(tmp,tmp+len-offset,'/');
|
|
|
- if (transport+1-buffer>=len) goto error;
|
|
|
- *transport=0;
|
|
|
- version_len=transport-version;
|
|
|
- transport++;
|
|
|
- offset+=transport-tmp;
|
|
|
-
|
|
|
- tmp=eat_token_end(transport,transport+len-offset);
|
|
|
- if (tmp+1-buffer>=len) goto error;
|
|
|
- *tmp=0;
|
|
|
- transport_len=tmp-transport;
|
|
|
- tmp++;
|
|
|
- offset+=tmp-transport;
|
|
|
-
|
|
|
- hostport=eat_space_end(tmp,tmp+len-offset);
|
|
|
- if (hostport+1-buffer>=len) goto error;
|
|
|
- offset+=hostport-tmp;
|
|
|
-
|
|
|
- /* find end of hostport */
|
|
|
- for(tmp=hostport; (tmp-buffer)<len &&
|
|
|
- (*tmp!=' ')&&(*tmp!=';')&&(*tmp!=','); tmp++);
|
|
|
- if (tmp-buffer<len){
|
|
|
- switch (*tmp){
|
|
|
- case ' ':
|
|
|
- *tmp=0;
|
|
|
- tmp++;
|
|
|
- /*the rest is comment? */
|
|
|
- if (tmp-buffer<len){
|
|
|
- comment=tmp;
|
|
|
- /* eat the comment */
|
|
|
- for(;((tmp-buffer)<len)&&
|
|
|
- (*tmp!=',');tmp++);
|
|
|
- /* mark end of compact via (also end of comment)*/
|
|
|
- comment_len=tmp-comment;
|
|
|
- if (tmp-buffer<len){
|
|
|
- *tmp=0;
|
|
|
- }else break;
|
|
|
- /* eat space & ',' */
|
|
|
- for(tmp=tmp+1;((tmp-buffer)<len)&&
|
|
|
- (*tmp==' '|| *tmp==',');tmp++);
|
|
|
-
|
|
|
- }
|
|
|
- break;
|
|
|
-
|
|
|
- case ';':
|
|
|
- *tmp=0;
|
|
|
- tmp++;
|
|
|
- if (tmp-buffer>=len) goto error;
|
|
|
- params=tmp;
|
|
|
- /* eat till end, first space or ',' */
|
|
|
- for(;((tmp-buffer)<len)&&
|
|
|
- (*tmp!=' '&& *tmp!=',');tmp++);
|
|
|
- params_len=tmp-params;
|
|
|
- if (tmp-buffer==len) break;
|
|
|
- if (*tmp==' '){
|
|
|
- /* eat comment */
|
|
|
- *tmp=0;
|
|
|
- tmp++;
|
|
|
- comment=tmp;
|
|
|
- for(;((tmp-buffer)<len)&&
|
|
|
- (*tmp!=',');tmp++);
|
|
|
- comment_len=tmp-comment;
|
|
|
- if (tmp-buffer==len) break;
|
|
|
- }
|
|
|
- /* mark end of via*/
|
|
|
- *tmp=0;
|
|
|
-
|
|
|
- /* eat space & ',' */
|
|
|
- for(tmp=tmp+1;((tmp-buffer)<len)&&
|
|
|
- (*tmp==' '|| *tmp==',');tmp++);
|
|
|
- break;
|
|
|
-
|
|
|
- case ',':
|
|
|
- *tmp=0;
|
|
|
- tmp++;
|
|
|
- if (tmp-buffer<len){
|
|
|
- /* eat space and ',' */
|
|
|
- for(;((tmp-buffer)<len)&&
|
|
|
- (*tmp==' '|| *tmp==',');
|
|
|
- tmp++);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- /* if we are not at the end of the body => we found another compact via */
|
|
|
- if (tmp-buffer<len) next_via=tmp;
|
|
|
-
|
|
|
- /* parse hostport */
|
|
|
- parse_hostport(hostport, &host, &port);
|
|
|
- vb->name.s=name;
|
|
|
- vb->name.len=name_len;
|
|
|
- vb->version.s=version;
|
|
|
- vb->version.len=version_len;
|
|
|
- vb->transport.s=transport;
|
|
|
- vb->transport.len=transport_len;
|
|
|
- vb->host.s=host.s;
|
|
|
- vb->host.len=host.len;
|
|
|
- vb->port=port;
|
|
|
- vb->params.s=params;
|
|
|
- vb->params.len=params_len;
|
|
|
- vb->comment.s=comment;
|
|
|
- vb->comment.len=comment_len;
|
|
|
- vb->next=next_via;
|
|
|
- vb->error=VIA_PARSE_OK;
|
|
|
-
|
|
|
-
|
|
|
- /* tmp points to end of body or to next via (if compact)*/
|
|
|
-
|
|
|
- return tmp;
|
|
|
-
|
|
|
-error:
|
|
|
- vb->error=VIA_PARSE_ERROR;
|
|
|
- return tmp;
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
-
|
|
|
/* parse the headers and adds them to msg->headers and msg->to, from etc.
|
|
|
* It stops when all the headers requested in flags were parsed, on error
|
|
|
* (bad header) or end of headers */
|