Web-Proxy Lab: Tiny Server 무한 루프 문제를 해결해보자

이형준·2023년 5월 24일
0

TIL

목록 보기
29/37

만난 문제 🤔

기존의 코드에서는, 요청을 받은 후 일정 시간이 지나면 무한루프에 들어가며 동작을 멈추는 문제가 있었다.

문제 해결 ✅

일반적으로 HTTP 에서는 클라이언트가 요청을 보내면 서버는 응답을 보내고 연결을 종료한다. 이 때 연결이 제대로 끊어지지 않았다면 서버는 계속하여 클라이언트에게서 값을 받아들이려 할 것이고, 바로 여기서 문제가 발생했을 거라 생각했다.

doit 함수 뒤에는 바로 클라이언트와의 연결을 끊어주는 Close가 위치한다. 그렇다면 doit 내부의 로직이 문제의 원인이 아닐까?

기존의 Rio_readlineb(&rio, buf, MAXLINE) 는 클라이언트로부터의 요청 헤더를 읽어오는 데에 사용된다. 이 부분을 수정하여 요청을 받아오지 못했다면 바로 return하여 doit을 종료시켜버리게 수정해보았다.

  • 기존 코드
void doit(int fd) {

...

  Rio_readlineb(&rio, buf, MAXLINE);

...

}
  • 수정된 코드
void doit(int fd) {

...

  if(!(Rio_readlineb(&rio, buf, MAXLINE))){
    return;
	}

...

}

이후 해당 문제는 지금까지 확인되지 않았다 😎

profile
저의 미약한 재능이 세상을 바꿀 수 있을 거라 믿습니다.

0개의 댓글