Opened 7 years ago

Last modified 7 years ago

#1 accepted task

프로토타입 개발

Reported by: cheese Owned by: cheese
Priority: major Milestone: 프로토타입 개발
Version: 0.1dev Keywords:
Cc:

Description (last modified by cheese)

개요

  • 프로토타입 개발

상세

  • 가져다 쓰시려면 main 코드 따라 쓰기 하면 됨
  • 변조 코드 예제는 나중에 추가하는 걸로~

Change History (38)

comment:1 by cheese, 7 years ago

Owner: changed from < default > to cheese
Status: newaccepted

comment:2 by cheese, 7 years ago

r4
r5
r6

  • 개발 버전 게시
Last edited 7 years ago by cheese (previous) (diff)

comment:3 by cheese, 7 years ago

r7

  • 스레딩 모듈 추가 브랜치

comment:4 by cheese, 7 years ago

r8
r9
r10
r11
r12
r13

  • mutex 클래스 trunk에 추가
  • thread 클래스 사용 안될 듯
Last edited 7 years ago by cheese (previous) (diff)

comment:5 by cheese, 7 years ago

r14

  • add timeout to socket connection and fix test label in makefile
Last edited 7 years ago by cheese (previous) (diff)

in reply to:  5 ; comment:6 by cheese, 7 years ago

In testing, crash bug for http://msdn.com was found.

Replying to cheese:

r14

  • add timeout to socket connection and fix test label in makefile

comment:7 by cheese, 7 years ago

r15

  • modify error code handling

r16

  • modify error message to detail
Last edited 7 years ago by cheese (previous) (diff)

comment:8 by cheese, 7 years ago

nvdark님의 강력한 의견으로 Trac에 한글로 쓰기로 하고 수정

r17

  • 불필요한 include 및 초기화 리스트 제거
  • HTTP Request의 URL 버퍼 크기 확장
    • URL 길이가 큰 경우 오버플로우로 인한 crash 문제 수정
  • main 코드의 오류 출력 루틴 버퍼 확장
    • HTTP 메시지 출력시 오버플로우로 인한 crash 문제 수정
    • 예외처리는 별도 개발 예정이므로 더 이상의 보완 작업은 필요없음
Last edited 7 years ago by cheese (previous) (diff)

in reply to:  6 comment:9 by cheese, 7 years ago

This issue is fixed at r17.

Replying to cheese:

In testing, crash bug for http://msdn.com was found.

Replying to cheese:

r14

  • add timeout to socket connection and fix test label in makefile

comment:10 by cheese, 7 years ago

r18

  • CRXProxy 및 CRXException 프로토타입 작업
    • CRXProxy 작업하면서 _beginthreadCreateThread로 변경
    • 이것 때문인지 속도가 좀 많이 느려졌는데, 첫 개발 단계에서도 이런 현상있었으니 확인이 필요
  • windows project에서 유니코드 사용하지 않도록 변경

r19

  • 리눅스에서의 오류 수정 및 CRXProxy에서 하위 오류 메시지 병합하도록 수정

r20

  • 모듈화 후의 할당/해제를 위해 CRXProxy 인스턴스를 가져올 수 있는 인터페이스 추가

r21

  • main 에서 불필요한 코드 제거 및 오류 메시지 정리

r22

  • main 에서의 오류 메시지 정리
  • 스레드 종료 후 CRXProxy 인스턴스 해제 하는 부분 추가
Last edited 7 years ago by cheese (previous) (diff)

comment:11 by cheese, 7 years ago

r23

Last edited 7 years ago by cheese (previous) (diff)

in reply to:  11 comment:12 by cheese, 7 years ago

어차피 Thread Pool 개발 예정이므로 크게 신경쓰지 않아도 될듯 함

지금은 intercept 구현이 우선되어야 할 것으로 보임

Replying to cheese:

r23

comment:13 by cheese, 7 years ago

r24
r25

  • inline 함수 모두 제거
  • proxy 모듈에서 스레딩 코드 제거하고 Thread Pool을 main 에 추가
    • 퍼포먼스 대폭 향상됨
    • Thread Pool을 별도로 지원해야 하는 건가?
  • 소켓 timeout 설정 따로 할 수 있도록 변경
  • proxy 워크 플로우를 단계별로 세분화
    • receive-request, send-request, receive-response, send-response
  • response 클래스 세부 구현
    • Content-Length 및 chunked 인코딩
      chunked 인코딩의 경우 해당 모듈에서 chunked 인코딩 메커니즘대로 파싱하는 것이 아닌, content-body 저장을 위한 것이므로 chunked 인코딩 메커니즘대로 파싱하는 브라우저 같은 곳에선 코드 재사용이 불가함

r26
r27

  • request 및 response 메시지 reset 기능 추가
    • 전달 할 데이터가 수정된다면 reset 한 후 set 하여 전송해야 함
Last edited 7 years ago by cheese (previous) (diff)

comment:14 by cheese, 7 years ago

Description: modified (diff)

comment:15 by cheese, 7 years ago

Description: modified (diff)

comment:16 by cheese, 7 years ago

r28

  • 코드 파일 인코딩을 UTF-8로 모두 변경
  • CRXHttpRequest에 파일 확장자 파서 추가
  • 필터링 기능을 위한 CRXFilter 클래스 작성
    • CRXProxy의 static 멤버로 동작
    • Request 메시지에서 파일 확장자 필터링 가능
    • 필터링은 응용 층에서 직접 해주도록 함

r29

  • makefile 및 리눅스 버그 수정

r30

  • 필요 없는 using namespace std 제거

r31

  • CRXHttpMessage의 가상함수들을 순수 가상함수로 바꿈
  • Windows 프로젝트 릴리즈 모드에서 유니코드 사용안하도록 수정
Last edited 7 years ago by cheese (previous) (diff)

comment:17 by cheese, 7 years ago

r32

  • CRXProxy 모듈까지 static library로 변경하고 test 프로젝트 별도로 생성하여 테스트 코드 빌드

r33

  • CRXProxy 모듈까지 shared object로 변경하고 테스트 코드 별도로 빌드

comment:18 by cheese, 7 years ago

r34

  • CRXProxy에서 request 및 response 가져올 때 버퍼 사이즈가 비정상적으로 클 경우 crash 발생하는 버그 수정

comment:19 by cheese, 7 years ago

r34

  • 상세한 디버깅 메시지용 출력 구문 추가 (에러 스트림)
  • _DEBUG 가 define 되지 않으면 출력되지 않음

comment:20 by cheese, 7 years ago

r35

  • 디버깅용 메시지 추가할 수 있는 유틸 코드 추가

r36

  • 서버 소켓 타임 아웃 설정할 수 있는 인터페이스 추가
Last edited 7 years ago by cheese (previous) (diff)

comment:21 by cheese, 7 years ago

r37

  • 윈도 프로젝트 폴더 이름 변경
Last edited 7 years ago by cheese (previous) (diff)

comment:22 by cheese, 7 years ago

r38
r39
r40

  • 프록시 로컬 포트 식별을 위한 디버깅 코드 추가

r41

  • 필터링 문자열 중복 제외 안되던 버그 수정

r42

  • CRXFilter에서 디버깅 코드 제거

r43

  • Request에 확장자 없을 때 필터링 안되던 버그 수정
Last edited 7 years ago by cheese (previous) (diff)

comment:23 by cheese, 7 years ago

r44

  • http 메시지 파서 로직을 좀 더 세부적으로 수정

comment:24 by cheese, 7 years ago

r45

  • http request/response 및 filter 의 접근제한자를 변경한건 아니고, 접근 및 제어 방법을 바꾼건데 커밋 메시지 잘못 씀 ㅋㅋ..
Last edited 7 years ago by cheese (previous) (diff)

comment:25 by cheese, 7 years ago

r46

  • CRXHttpMessage 클래스를 CRXHttpHeader로 변경
  • http response body가 바이너리라도 response 헤더를 가지고 오므로 데이터 처리에만 신경쓰면 됨
    • 바이너리 데이터 메모리 할당하는 오버헤드를 줄이기 위해 STL의 vector 클래스를 이용하도록 변경

r47
r48

  • M$ Windows용 멤버 _Myptr랑 Mutex Handle 초기화 구문 수정
Last edited 7 years ago by cheese (previous) (diff)

comment:26 by cheese, 7 years ago

r49

  • makefile에서 테스트 코드 실행 후에 실행 바이너리 사라지는 부분 수정

r50

  • CRXHttpMessage가 CRXHttpHeader로 변경되었기 때문에 헤더 및 소스를 제거
Last edited 7 years ago by cheese (previous) (diff)

comment:27 by cheese, 7 years ago

r51

  • makefile 도 라이브러리 / 테스트 모듈로 구분
    • ...테스트 툴 링크할 때 순서가 까다롭다. 라이브러리는 다 뒤로 보내야하는거 였구나.. 이걸로 이틀이나 삽질을;;

comment:28 by cheese, 7 years ago

r52

  • cerr 가끔 crash 나서 수정

r53

  • makefile에 cygwin용 플래그 및 옵션 추가

r54

  • vector로 바꾸면서 멤셋 하는 부분 없앤거 같은데 있어서 없앰
Last edited 7 years ago by cheese (previous) (diff)

comment:29 by cheese, 7 years ago

r55

  • request 메시지 변경하여 보내도록 예제 수정 (변조)

comment:30 by cheese, 7 years ago

r56

  • response로 0-byte 수신했을 때 무한 루프에 빠지지 않도록 수정

comment:31 by cheese, 7 years ago

r57
r58

  • 서버 소켓에 SO_REUSEADDR 옵션 적용
  • 클라이언트 소켓에 SO_LINGER 옵션 적용
  • 타임아웃 오류 코드 추가
Last edited 7 years ago by cheese (previous) (diff)

comment:32 by cheese, 7 years ago

r59

  • setsockopt () 의 wrapper로 CRXSocket::SetOption () 추가

comment:33 by cheese, 7 years ago

r60

  • 테스트/예제 코드에서 치환할 문자열 없는 경우 crash 되는 문제 수정

comment:34 by cheese, 7 years ago

r61

  • SO_REUSEADDR을 client 소켓에도 적용
  • 구조적 버그 일부 수정

comment:35 by cheese, 7 years ago

r62

  • makefile 플래그 집합 설정 오류 수정 (아직까지 영향은 없지만)

comment:36 by cheese, 7 years ago

r63

  • CRXSocket::CreateSocket ()를 CRXSocket::Create ()로 변경

comment:37 by cheese, 7 years ago

r64

  • TIMEOUT 오류 계속 발생하는데, response code가 304 (not modified)일때여서, 304일때는 contents 받지 않도록 수정

in reply to:  37 comment:38 by cheese, 7 years ago

참고 : wiki:HttpStatusCode

Replying to cheese:

r64

  • TIMEOUT 오류 계속 발생하는데, response code가 304 (not modified)일때여서, 304일때는 contents 받지 않도록 수정
Note: See TracTickets for help on using tickets.