#apr
글
-
Apache httpd 소스 파헤치기 3: 전체 지도 — 코어, APR, MPM, 모듈과 세 개의 큰 구조체
Apache httpd 소스를 처음 여는 사람을 위한 지도입니다. 운영체제·APR·코어·MPM·모듈로 나뉘는 층, 코어조차 모듈이라는 것, 실행 파일에 묶이는 모듈과 LoadModule로 싣는 모듈의 차이, server_rec·conn_rec·request_rec 세 구조체와 풀 계층, 요청 하나가 지나가는 길을 실제 소스와 직접 돌린 예제로 확인합니다.
-
Apache httpd 소스 파헤치기 4: APR 메모리 풀 — free 없이 메모리를 관리하는 법
httpd 의 C 코드에는 free() 가 거의 보이지 않습니다. 메모리를 하나하나 돌려주는 대신 "요청 하나", "연결 하나" 처럼 수명이 같은 것끼리 풀에 묶어 한꺼번에 버리기 때문입니다. APR 풀의 노드와 allocator, 포인터 하나를 미는 것으로 끝나는 apr_palloc, cleanup 의 실행 순서, httpd 가 풀을 만들고 지우는 자리, 그리고 흔한 실수 두 가지를 실제 소스와 실행 결과로 확인합니다.
-
Apache httpd 소스 파헤치기 6: 모듈과 훅 — 모듈 하나가 서버에 끼어드는 방법
httpd 의 기능은 거의 전부 모듈이고, 모듈은 훅이라는 정해진 자리에 함수를 걸어 서버에 끼어듭니다. module 구조체, 모듈이 등록되는 길(정적 모듈과 LoadModule), 훅을 만드는 매크로가 실제로 무엇으로 펼쳐지는지, RUN_FIRST 와 RUN_ALL 의 차이, 순서 값과 앞뒤 모듈 이름으로 정하는 실행 순서를 기준 커밋의 소스와 직접 만든 모듈 세 개로 확인합니다.
-
Apache httpd 소스 파헤치기 11: 필터와 버킷 브리게이드 — 응답은 어떻게 흘러 나가나
핸들러가 만든 응답이 소켓에 닿기까지 httpd 안에서 어떤 모양으로 흐르는지, 소스를 처음 여는 사람 기준으로 따라갑니다. APR-util 의 버킷과 브리게이드(링), 읽을 때 모양이 바뀌는 PIPE·FILE 버킷, 여섯 단계로 줄 서는 필터와 ap_pass_brigade, chunked 인코딩과 sendfile, 그리고 소켓이 가득 찼을 때 코어 출력 필터가 하는 일을 직접 쓴 필터 모듈의 로그로 확인합니다.