2013-01-13 3 views
0

아래 코드를 사용할 때 처리기는 파일 요청이 아닌 것을 인식하지 않습니다 (예 : 요청에 www 폴더에 파일이 있어야 함). 다른 모든 요청은 main이라고도 불리지 않으며, 왜 그런지 모르겠습니다.Gwan 처리기가 파일 요청 만 수락합니다.

int init(int argc, char *argv[]) 

{ 
    printf("init\n"); 

    *(u32 *)get_env(argv, US_HANDLER_STATES) = (1L << HDL_AFTER_ACCEPT) | (1L << HDL_AFTER_READ) | (1L << HDL_BEFORE_WRITE); 

    return 0; 
} 

void clean(int argc, char *argv[]) 
{ 
    printf("clean\n"); 
} 

int main(int argc, char *argv[]) 
{ 
    printf("%s\n", (char *)get_env(argv, REQUEST)); 

    return 255; 
} 

요청 : 127.0.0.1/index.html
인쇄 : GET /index.html

요청 : 127.0.0.1/favicon.ico
인쇄 : GET /favicon.ico

요청 : 127.0.0.1/index
인쇄 : 어떤을위한 N/A

감사합니다 도움.

+0

사용중인 G-Wan 버전은 무엇입니까? 개발 환경은 어떻습니까? G-wan의 최신 버전은 많은 배포판과 호환되지 않는 것으로 알려져 있습니다. 그게 사실이라면, 가장 좋은 방법은 오래된 G-wan 3.3을 사용하거나 G-wan 팀의 개발 환경과 일치 시키십시오 (우분투 10.04라고 생각합니다). – Nagi

+0

불량, 우분투를 실행 중입니다. 12.10 및 glibc 버전 2.15. 'root @ desktop-Ubuntu : ~ # /lib/x86_64-linux-gnu/libc.so.6 GNU C 라이브러리 (Ubuntu EGLIBC 2.15-0ubuntu20) 안정 버전 2.15, Roland McGrath 외. GNU CC 버전 4.6.3 20120918 (시험판)로 컴파일됩니다. 2012-10-04 Linux 3.5.4 시스템에서 컴파일되었습니다. 가능한 확장 : \t 토굴이 추가 기능 버전 2.1 다행 마이클에 의해 다른 사람 \t BIND-8.2.3-T5B Simon Josefsson에 울리히 드레 퍼 등으로 \t 기본 POSIX 스레드 라이브러리 \t GNU Libidn libc의 ABI를 : ​​UNIQUE IFUNC ' – user1956556

답변

0

핸들러는 파일 또는 기타 관련하여 유효한지의 여부를 요청합니다.

처리기가 잘못되었습니다. 당신이HTTPHTML 구문 분석하기 전에 통지를했다 장소 요청 이후 :

*(u32*)get_env(argv, US_HANDLER_STATES) = 
     (1L << HDL_AFTER_ACCEPT) 
    | (1L << HDL_AFTER_READ) 
    | (1L << HDL_BEFORE_WRITE); 

을 ... 당신은 절대적으로 printf()로를 표시하기 전에 REQUEST를 사용할 수 있는지 확인해야합니다 :

const char *req = (char*)get_env(argv, REQUEST); 
    printf("%s\n", req ? req : "not parsed yet"); 

코드를 당신을 연결이 ACCEPTED이거나 요청이인 경우 HTTP REQUEST 값이 NULL (아직 사용할 수 없음)이기 때문에 매주 한 번 이상 중단됩니다..

관련 문제