У меня есть длинная строка с такой информацией:
"GET http://www.google.se/ HTTP/1.1\r\n
Host: www.google.se\r\n
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:2.0) Gecko/20100101 Firefox/4.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language: en-us,en;q=0.5\r\n
Accept-Encoding: gzip, deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n
Keep-Alive: 115\r\n
Proxy-Connection: keep-alive\r\n
Cookie: PREF=ID=7d6a62c557413bc8:FF=0:TM=1327968040:LM=1327968040:S=U1A51rCRDDMTF295\r\n
Cache-Control: max-age=0\r\n\r\n"
И я хочу избавиться от части keep-alive под прокси-соединением ..
Это то, что я делаю до сих пор:
- получение строки (заголовка) для функции.
- Создание структуры с двумя строками (заголовок и хост)
- размещение имени хоста из заголовка в части хоста (очевидно)
- и помещение заголовка в часть заголовка.
А теперь я хочу избавиться от части keep-alive, прежде чем помещать заголовок в заголовочную часть структуры.
Есть идеи?
А вот код того, что я сделал до сих пор. Я новичок в C, поэтому, возможно, не самый красивый код, который вы видели ..
struct ParsedHeader header_parser(char * input) {
struct ParsedHeader h;
int status;
regex_t regex;
char * result_begin = NULL;
regcomp(®ex, "host:", REG_EXTENDED|REG_ICASE|REG_NOSUB);
if((status = regexec(®ex, input, (size_t) 0, NULL, 0)) == 0) {
char end = '\r';
char * header = malloc(strlen(input));
char * begin = "host:";
size_t result_size = 0;
memcpy(header, input, strlen(input));
to_lower(input, header, strlen(input));
result_begin = (strstr(header, begin) + 6);
char * result_end = strchr(result_begin, end);
result_end[0] = '\0';
//char result[strlen(result_begin)] = result_begin;
free(header);
}
regfree(®ex);
h.header = input;
h.host = result_begin;
return h;
}