1)Такой извратный метод вставить в строчку перевод строки никогда до добра не доводил. Открой для себя escape-последовательности.
Ну и по стандарту там должно быть "\r\n"
2) char uri[] = "/index.html"; почувствуй разницу!
3) while((read = getline(&line, &line_len, fds)) != -1) {
fprintf(stdout,"%s\n", line);
}
free(line); // это тоже надо писать компилятор не обладает телепатией