Files
2026-08-07 17:38:18 +09:00

1781 lines
80 KiB
Plaintext

Revision 1515
-------------------
수정일 : 2020-12-16
수정자 : 유희곤
- NEW: FreeBSD 12.x 컴파일을 위한 OS 버전별 gcc 최적화 옵션 변경 (#33319)
- FreeBSD 12.2 에서 컴파일시 기존 최적화 -O2 옵션 사용하면.. segfault 오류 발생
- -O0 옵션 사용하는 경우는 정상 동작
- 이에 OS 버전에 따라 gcc 최적화 옵션 다르게 적용되도록 Makefile 수정 처리함
- FreeBSD 12.x -> -O0
- FreeBSD 10.x, 6.x -> -O2 (기존 옵션 그대로 유지)
- 수정 파일: Makefile
Revision 1487
-------------------
수정일 : 2019-11-21
수정자 : 유희곤
- NEW: 폴더에 대한 GET 응답 관련 기능 개선 (#32860)
- 폴더에 대한 GET 요청시 불필요한 HTTP 301 발생 후 최종 HTTP 409 응답 발생
- 최상위 폴더에 대한 GET 요청시 무한 HTTP 301 발생
- 이를 해결하기 위해 폴더에 대한 GET 요청은 Redirection 없이 HTTP 400 Bad Request 로 응답하도록 수정
- 수정 파일: repos.c 의 dav_repos_get_resource()
Revision 1479
-------------------
수정일 : 2019-10-01
수정자 : 유희곤
- CHG: 0 파일 관련 CDN 장애 회피를 위한 기능 개선 (#32812)
- 0 파일은 replication 을 하지 않으므로.. 해당 FHS 가 죽는 경우....
- soldrive 에서 오류 상태로 인식하여 업로드 실패 등의 문제가 발생
- 따라서 이를 개선하기 위해 다음과 같이 처리한다.
-- PROPFIND 요청, agent 가 NetCache, 0 파일, 유효한 FHS 가 없는 경우
-- 오류 가 아닌 정상 상태로 응답 처리하도록 수정.
- 수정 파일: dbms.c 의 dbms_get_property()
Revision 1475
-------------------
수정일 : 2019-09-24
수정자 : 유희곤
- CHG: Bigbox FHS 장비 사용에 따른 mount 별 운영여유공간 계산방식 개선 (#32807)
- 285 TB 급 bigbox FHS 장비 사용으로 인해
- 기존과 같이 각 mount 별 1% 여유공간을 남길경우... 2.8 TB 가 남겨져 저장공간 낭비가 심해
- 다음과 같이 개선 처리함.
-- 각 mount total 공간 ( used + avail ) > 3TB 이면... avail 공간은 30 GByte 초과할 경우 write 가능
-- 각 mount total 공간 ( used + avail ) <= 3TB 이면... 기존과 같이 사용률이 99% 미만인 경우 write 가능
- 기존 conf 상의 DavProviderStorageLimit 설정은 제거 처리
-- httpd-dav-sh-opendav.conf 상에 DavProviderStorageLimit 설정 존재시 기동 실패 발생
- 수정 파일: disk.c repos.c main.c dav_repos.h
Revision 1474
-------------------
수정일 : 2019-09-18
수정자 : 유희곤
- CHG: URL의 정확한 인코딩 탐지 실패 관련 기능 보완 (#32584)
- UTF-8 기반 URL 을 iconv 에서 UHC 로 판단하여 HTTP 400 응답하는 상황 발생
- 인코딩 특성상 UHC, UTF-8 를 잘못 판단할 가능성은 존재하지만...
- 오탐을 최소화하기 위해 android 에 적용된 소스를 사용하여 UTF-8 check 기능을 보완
- 하지만 #21096 에 나타난 "책" 관련 처리 보완을 위해 해당 소스 추가 수정.
- 따라서 UTF-8 인지 check 후.. UHC check 하도록 flow 수정함.
- 수정 파일: util.c
Revision 1462
-------------------
수정일 : 2019-08-28
수정자 : 유희곤
- CHG: 미사용 기능의 buffer overflow 및 gcc 최신버전 warning 내역 수정 (#32780)
- gcc 7.3.0 을 사용하여 컴파일 테스트 중
- 현재는 사용하지 않는 hidden 등의 속성 처리 코드에서
- 문자열 버퍼 overflow 발생 가능 코드가 발견되어 수정 처리함.
- 이 외에 gcc 에 의해 발생된 warning 중 iconv, BC_START 관련 건을 제외하고 수정 처리함.
- 수정된 파일: dbms.c auth.c props.c share_statistic.c
Revision 1451
-------------------
수정일 : 2019-02-20
수정자 : 유희곤
- NEW: RCDB deadlock 을 발생시키는 불필요한 폴더 정보 업데이트 상황 발생 회피 (#32499)
- MKCOL 요청에 대해
- 해당 폴더가 존재하지 않는 경우.. dbms_set_property()가 호출되어 INSERT QUERY 가 수행됨.
- 해당 폴더가 존재하는 경우.. Apache 기본 DAV 에서 HTTP 405 Method Not Allowed 응답 처리됨.
- MKCOL 요청에 대해 폴더 정보 UPDATE 가 호출되는 상황은 전혀 예상치 못한 상황임
1. MKCOL 요청에 대해 Apache 기본 DAV 에서 1차로 확인시 해당 폴더가 존재하지 않아..
2. 이에 대한 생성을 위해 dav_repos_create_collection() -> dbms_set_property() 순으로 호출..
3. 그런데.. dbms_set_property() 에서 2차 확인시 존재하지 않던 폴더가 갑자기 존재하여...
4. 전혀 예상치 않은 폴더에 대한 UPDATE query 가 수행됨 ( 문제의 UPDATE query 는 실제로는 분할 업로드 파일에 대한 크기 갱신을 위한 UPDATE 작업임)
- 폴더에 대한 업데이트 상황은 비상식적인 고객사 user 들이 거의 동시에 폴더에 대한 MKCOL 을 전송하면서
아주 희박하던 폴더 업데이트가 동시에 발생하여 DB deadlock 발생. 이로 인해 최종 응답은 HTTP 500 이 발생.
- 따라서 이미 생성된 폴더에 대해 정보를 다시 업데이트할 필요 없으므로...
대상이 폴더인 경우.. 바로 반환 처리하여 아래의 update flow 가 동작하지 않도록 한다.
- 수정된 파일: dbms.c
Revision 1442
-------------------
수정일 : 2018-02-28
수정자 : 유희곤
- NEW: 고객사 인증/과금 관련 접속 실패시 Server IP 정보 로깅
- 토토측에서 인증/과금 서버 중 특정 서버에 요청이 몰려 이에 대한 확인 요청 받음
- Domain 기반 접속이라서 실제 어느 서버로 접속되는지 알 수 없음
- 이에 따라 인증/과금 관련 server 접속 실패시 해당 서버 IP 로깅하도록 수정 처리함.
- 토토 건은 토토 측 특정 장비 접속 실패로 발생했던 문제이며
- 토토 측에 관련 내역 전달해서 처리 완료.
- 수정된 파일: auth.c
- CHG: 양방향 FHS 장애시 SolDrive, SolProxy 의 Offline 처리 최소화를 위한 HTTP reponse code 수정 (#31782)
- 양방향 FHS 1식 장애시 SolDrive, SolProxy 가 Offline 처리되면서 Backup RC 로 전환
- 해당 Flow 에서 FHS 1식 장애인데 offline 처리되어 backup으로 넘어가는게 불합리하다는 의견 많음
- 또한 Backup RC 가 구성되지 않은 경우.. CDN 장애 발생하므로..
- 이를 개선하기 위해 우선 양방향 응답코드 수정을 수행하기로 함
- Agent 가 NetCache 로 시작되는 경우
-- 서비스 가능 FHS 가 존재하지 않는 경우 : HTTP 500 -> HTTP 410 (Gone) 으로 변경
-- 해당 사항은 GET, PROPFIND 에 적용되며
-- PUT 에 대해서도 원본 FHS 가 죽은 경우 HTTP 410 처리하도록 수정함.
- 추가로 redirect 처리시 DB 등의 오류 상황에 따라 다양한 응답코드 전달할 수 있도록 수정 처리
- 수정된 파일: dbms.h dbms.c repos.c
Revision 1426
-------------------
수정일 : 2017-11-03
수정자 : 유희곤
- CHG: 고객사 과금 연동 관련 request_time, end_time 항목 추가 (#31497)
- 토토디스크 측에서 고객사 과금 연동 기능 관련 시간 정보 추가 요청
- 고객사 과금 연동 관련 기존에는 &time_시간=파일사이즈 정보 전달(time slice)
- 3.5 버전으로 버전업하면서 토토디스크가 서비스 해지하여 해당 기능 제거
- 하지만 토토디스크가 다시 서비스 이전하면서 관련 기능 개발 요청
- 기존의 timeslice 기능은 노경민 차장 검토결과 메모리 관련 문제를 안고 있어서
- &request_time=1509622842612070&end_time=1509622842683228 방식의 세션 시작, 종료시간 정보를 전달하기로 함
- 시간 정보는 1/1,000,000 sec 단위의 UNIX time (UTC) 형식
- 해당 기능은 토토디스크 뿐만 아니라 고객사 과금 기능에 공통으로 추가함
- 수정된 파일: auth.c
Revision 1409
-------------------
수정일 : 2017-03-08
수정자 : 유희곤
- CHG: cache 된 서비스 정보 조회시 해지된 서비스에 대한 불필요 로깅 제거 (#28349)
- 서비스 인증 처리 관련 cache 된 서비스 정보 조회시 마다 해지된 서비스 정보가 error 로그에 출력됨.
- 해지된 서비스가 많을수록 로깅 때문에 인증 성능에 영향을 미칠 수 있으므로 관련 로깅 제거 처리함.
- 해지된 서비스 정보는 fimngd 로그를 통해 확인 가능함.
- 수정된 파일: share_account.c 의 dav_shared_ac_get_by_tranid() 함수
- BUG: 업로드 Target FHS 선택시 2차 순차검색 관련 버그 수정 (#30515)
- 업로드 대상 FHS 선택 관련 1차 random 선택 실패시 2차 순착 검색 진행함.
- 2차 순차 검색에서 index 문제로 같은 장비를 계속 체크하는 버그 발견되어 이를 수정함.
- 수정된 파일: share_fhs_stat.c 의 dav_shared_du_put_target() 함수
Revision 1377
-------------------
수정일 : 2016-5-30
수정자 : 노경민
- CHG: 토토로사 SolDrive 업로드 시 과금 서버 호출 기능 예외 처리
- SolDrive 마운트된 서버로 업로드 시 고객사 과금 서버 호출이 과하게 발생함
- 해당 과금 서버 안정성(?)을 위해서 SolDrive 경우 해당 서버를 호출하지 않게 예외 처리함
- 수정된 파일은 auth.c임
Revision 1356
-------------------
수정일 : 2016-4-29
수정자 : 노경민
- BUG: 디렉토리에 특수 문자(%) 포함 시 잘못된 결과 리턴
- LIKE 쿼리문에서 사용하는 특수 문자(_,%) 때문에 발생함 오류임
- 수정된 파일은 dbms.c임
- BUG: 대소문자 무시 일 때 디렉토리 복사 이상 증상
- 요청(대문자)과 저장된(소문자) uri 상반된 경우 변경할 uri()변경되지 않는 현상
- 수정된 파일은 dbms.c임
Revision 1327
-------------------
수정일 : 2016-1-19
수정자 : 노경민
- BUG: 작음따옴표(')가 있는 URL 요청에 대한 redirect location header 오류
- SQL escape string 포함된 문자가 리턴됨
- 수정된 파일은 repos.c임
Revision 1252
-------------------
수정일 : 2015-10-05
수정자 : 노경민
- CHG: 서비스 정보 없는 경우에 대한 로그 추가
Revision 1232
-------------------
수정일 : 2015-09-14
수정자 : 노경민
- CHG: Revision 1214 누락된 파일 추가
Revision 1214
-------------------
수정일 : 2015-09-09
수정자 : 노경민
- CHG: HTTPD 2.4.x 변경
- CHG: Version 3.5 지원 수정
- opendav-listener 로직을 fimngd로 통합됨에 따른 변경된 flow 반영함
- CHG: FHS 상태 체크 변경
- fimngd 연계된 로직임
- 이전 불명확한 상태 코드를 정리함
- CHG: Shard Memory 컨트롤 로직 분리
- sharc.c로 관리하던 부분을 생성되는 Shard Memory 별로 분리함
- CHG: 서비스 컨텐츠 전송 통계 변경
- 전송 완료 시 관련 큐에 정보 넣었던 부분을 시작 시 넣은 걸로 변경함
- 빠른 내부 캐쉬 발생을 위하여 수정됨
- CHG: 트래픽 제어 모듈 변경
- core 소스를 가져와서 구현된 로직을 삭제함
- output 필터 로직 추가로 해당 로직 구현함(mod-cband-0.9.6.1 참조)
- 헤더에 전송에 대한 크기도 전송량에 포함됨
- 토토 디스크 경우 헤더 포함될 경우 해당 고객사 오류 발생함으로
최정 전송량 계산 시 해당 요청에 대한 응답 body size 보다 큰 경우
body size가 고객사로 전송될 수 있도록 로직 구현됨
- CHG: PUT 요청 시 볼륨 선택 변경
- 사용률 기반 선택로직으로 변경함
- 기존은 볼륨별 한계 사용량 이상된 경우 선택된 로직을 사용률 기반으로 변경함
- CHG: 멀티 블록 업로드에 대한 불필요한 DB 작업 완화 방안
- 해당 요청에 대한 처리 후 발생하게 될 파일 최종 size와 다를 경우 upadte 되지
않게 로직 변경함
- NEW: PUT 요청 시 발생하는 301에 대한 input 전송량 계산
- PUT 301 발생 시 누락(?)되었던 input 전송량을 계산될 수 있도록 필터 추가됨
- DEL: 서비스 별 사용량 체크 로직 삭제
- DEL: Version 3.4 이전 버전 체크 로직 삭제
※ Version 3.5 지원으로 대부분 파일들이 수정되었으므로
본 로그에 수정파일 이력은 기록하지 않음
Revision 1159
-------------------
수정일 : 2014-12-23
수정자 : 노경민
- CHG: FreeBSD 10.0 인 경우 특정 문자("책") 처리 시 잘못된 리턴(404) 발생
- FreeBSD 10.0 경우 UHC(CP9494)인 특정 문자("책")에 대한 요청을
UTF-8로 인지하여 UHC로 변환 과정 중 이상한 문자로 변환되어
404 에러 발생하는 현상 발견됨
- FreeBSD 6.2 경우 해당 문자를 변환 과정 중 실패 발생하여 요청한
문자를 그대로 사용하여 정상 리턴됨
- iconv 통한 UHC 코드 확인을 통해서 해당 문제 회피함
- iconv 오동작 시 동일 문제 발생 가능성 있음
- 수정된 파일은 util.c임
- CHG: 잘못된 로그 수정
- 수정된 파일은 share.c임
Revision 1149
-------------------
수정일 : 2014-11-28
수정자 : 노경민
- BUG: PROPFIND 응답 시 경로 prefix 오류
- 응답 경로 prefix 인 '/dav' 가 아닌 '/tran_id' 응답하여 요청에 대한 리스트를
올바르게 출력되지 않는 현상 발생함
* 오류 발생 client : 구SBFS, NetDrive, cadaver
* 정상 처리 client : SDK, Soldrive
- 수정된 파일은 dbms.c, repos.c 임
Revision 1063
-------------------
수정일 : 2014-08-24
수정자 : 노경민
- BUG: PUT range 시 403 에러 발생
- 쿼리 구문 생성 시 사용하는 고정 크기 문자열보다 더 큰 문자열이 생성되어 발생한 문제
- 수정된 파일은 dbms.c 임
Revision 1023
-------------------
수정일 : 2014-07-25
수정자 : 노경민
- CHG: write trunc 경우에 대한 사이즈 오류 개선
- PUT 요청 기본적으로 trunc write를 사용함
- 네트워크 문제로 서버 사이드에서 PUT 세션을 끊을 경우 neon library 1회 retry 발생하며
이 때, 이전에 개선한 멀티 블록 업로드 시 사이즈 오류 개선된 로직의해서 입력되는 값보다
큰 값이 있는 경우 DB 값을 유지하여 물리 사이즈 보다 논리 사이즈가 더 큰 경우가 발생함
- 수정된 파일은 repos.c, dbms.h, dbms.c 임
- CHG: 사용되지 않는 컬럼 연관 로직 정리
- get_content_language,get_etag,supported_lock,lock_discovery 연관된 로직 삭제 처리
- 수정된 파일은 dbms.c, dbms.h, props.c util.c 임
- CHG: 버전 변경
- 3.3.x => 3.4.x
- 수정된 파일은 Makefile 임
Revision 0997
-------------------
수정일 : 2014-07-02
수정자 : 노경민
- CHG: 하위 호환성을 위한 구분 로직 추가
- 현재 형상(8.4)와 신규 형상(9.3)을 모두 지원하기 위한 로직 추가
- 수정된 파일은 share.h, share.c 임
- CHG: 서비스별 메타 테이블 분리로 인한 로직 수정
- 신규 형상(9.3) 서비스별 메타 생성에 따른 쿼리 수정
- 수정된 파일은 share.c, dbms.c 임
- CHG: 대소문자 기능 개선
- 신규 형상(9.3) 경우 대소문자 기능을 특정 컬럼(display_name)을 사용하여
해당 기능 지원하도록 수정함
- 수정된 파일은 dbms.c, repos.c 임
- CHG: uri 특수 문자(') 처리 로직 개선
- 처리 방식 변경 : \ => '
- 수정된 파일은 util.c, repos.c 임
- CHG: 무인증 파일 uri 쿼리 구분자(?) 인코딩 되는 문제
- 쿼리 구분자(?)도 인코딩되어 리턴되는 부분 수정함
- 수정된 파일은 share.c임
- BUG: 업로드 완료 고객사 통보 시 사이즈 오류
- 업로드 완료된 사이즈를 0으로 리턴하는 버그 수정함
- 수정된 파일은 dbms.h dbms.c 임
- CHG: filename hash 중복 개선
- 해쉬 생성 시 사용하는 time 함수 변경
- 수정된 파일은 repos.c 임
- DEL: 불필요한 로직 삭제
- 사용되지 않거나 불필요한 로직(변수) 삭제
- 수정된 파일은 share.h, dbms.h, dbms.c 임
Revision 0991
-------------------
수정일 : 2014-05-14
수정자 : 노경민
- CHG: Apache/2.2.26 이상 버전 PROPFIND 요청 시 한글 리턴 문제
- 상위 로직 dav_xml_escape_uri()함수에서 인코딩 함수 호출되지않는 문제 때문에 발생함
- 해당 로직은 2.2.26 부터 변경됨
- 컴파일되는 아파치 버전에 따라 처리될 수 있도록 수정함
- 수정된 파일은 repos.c임
Revision 0962
-------------------
수정일 : 2014-03-06
수정자 : 노경민
- CHG: FreeBSD 10.x 지원은 위한 수정
- gcc 버전 업에 따른 liconv 링크 수정
- 수정된 파일은 Makefile임
- BUG: 특정 마운트 볼륨에 대한 쓰기 방지 기능 오동작
- 특정 볼륨에 쓰기 방지 기능 설정 또는 특정 볼륨에 사용가능 용량 없을 시
해당 볼륨이 선택되어 403 에러가 발생함
- 1차 램덤 선택 후 해당 볼륨에 대한 쓰기 조건 검사하여 실패된 경우 그냥
리턴되어 해당 문제 발생함
- 1차 실패된 경우 2차로 순차 탐색으로 쓸 수 있는 볼륨을 찾는 로직 추가
- 볼륨 선택 실패 명확한 에러(507) 리턴되독록 수정함
- 수정된 파일은 disk.c, repos.c임
- CHG: 전송로그 큐 삽입 실패 로그 추가
- 큐 삽입이 실패된 경우 대한 로그 추가함
- 수정된 파일은 transfer.c임
Revision 0921
-------------------
수정일 : 2014-01-13
수정자 : 노경민
- CHG: 멀티(병렬) 블록 업로드 시 파일 사이즈 오류
- 큰값을 유지 할 수 있도록 쿼리 조정함
- 수정된 파일은 dbms.c임
- CHG: 쓰기 완료 시 파일 사이즈 획득 로직 변경
- DB Pool 획득 전후 사이즈 확인 로직을 DB Pool 획득 후로 변경함
- 수정된 파일은 repos.c, dbms.c임
- CHG: 버전 변경
- 3.2.xxx => 3.3.xxx 로 변경함
Revision 0893
-------------------
수정일 : 2013-10-07
수정자 : 노경민
- CHG: 삭제 후 다시 생성된 디렉토리에 대한 용량 조회 실패 개선
- 해당 요청에 대한 쿼리 시 삭제 플래그 검사 없이 리턴된 결과값 중
첫번째 값을 사용하여 삭제된 경우이면 422에러 리턴하는 로직때문에
SolDrive 에러 발생함
- 수정된 파일은 dbms.c임
Revision 0890
-------------------
수정일 : 2013-10-02
수정자 : 노경민
- CHG: 업로드 완료 시 DB Pool 획득 후 물리 파일 사이즈 추출 기능 추가
- SolDrive 병렬 쓰기 지원 시 논리,물리 파일 사이즈 다른 경우 방지를 위해서 기능 추가됨
- 수정된 파일은 dbms.c임
Revision 0889
-------------------
수정일 : 2013-09-27
수정자 : 노경민
- CHG: 확장 네임스페이스 대한 조회/설정 기능 지원
- 컴파일 시 __USE_NAMESPACE__ 필요
- PROPFIND 성능 이슈 존재(soldrive 추가 2개에 네임스페이스 요청함)
조회 시 응답하는 모든 파일(디렉토리)에 대해서 추가 질의 발생
- 해당 기능 정상 동작을 위해서 t_dav_property, t_dav_namespace 패치 필요
- 디렉토리 경우 유일값 추출(filename_hash)에 문제 있음
- 수정된 파일은 props.c, repos.c, dbms.c, dbms.h util.c, dav_repos.h 임
- NEW: hidden 속성 추가
- RPOPFIND, PROPPATCH 이용하여 해당 기능 제공
- DAV: 네임스페이스 대해서만 제공함
- t_dav_resource의 특정 필드 사용(source : 0 - not hidden, 1 - hidden)
- PROPFIND 시 특정 헤더(X-SB-Show-hidden:yes)인 경우만 hidden 된 파일 전달
- hidden 된 파일도 GET,PUT,PROPPATCH 등 기존과 동일하게 처리됨
- 수정된 파일은 props.c, repos.c, dbms.c, dbms.h 임
- CHG: PROPPATCH를 이용한 getlastmodified(file_lastmodified) 수정 기능 추가
- 기본 아파치 WebDAV에서는 읽기 전용이지만, opendav에서는 쓰기 가능하도록 변경함
- DAV: 네임스페이스 대해서만 제공함
- 입력값은 UTC 시간값임
- 수정된 파일은 props.c, repos.c, dbms.c, dbms.h 임
- CHG: Makefile 정리
- define 정리
- 토토로사 전용 버전 컴파일 : gmake Softline=yes
- 수정된 파일은 Makefile임
- CHG: 사용되지 않는 define 정리
- 구현로직 없는 define 정리
- 수정된 파일은 Makefile, main.c 임
- CHG: 디버깅관련 컴파일 시 오류되는 로직 수정
- 디버깅 관련 define 사용하여 컴파일 발생한 오류 수정
- 수정된 파일은 auth.c 임
- CHG: 불필요한 시스템콜 제거
- PUT 완료 시 로직적으로 사용되지 않는 시스템콜 제거
- 수정된 파일은 repos.c 임
Revision 0883
-------------------
수정일 : 2013-08-20
수정자 : 노경민
- NEW: cloud streaming 기능 추가
- StarPlayer 관련 인증 및 관련 기능 지원을 위한 수정
- 컴파일 시 __CLOUD_STREAMING__ 필요
- 수정된 파일은 auth.c, repos.c임
- CHG: 무인증 요청에 대한 301리턴 주소 오류 수정
- 해당 장비가 없는 파일에 대한 무인증 요청 경우 리턴 주소가 오류 발생
- 수정된 파일은 repos.c임
- CHG: 무인증 체크 관련 로직 수정
- 해당 파일 위치 찾는 로직 분리
- 수정된 파일은 share.c임
- CHG: PROPPATCH 관련 로직 hook 로직 오류 수정
- 해당 파일 위치 찾는 로직 분리
- 수정된 파일은 dbms.c임
Revision 0874
-------------------
수정일 : 2013-08-12
수정자 : 노경민
- NEW: 토토로사 업로드 업로드 관련 솔루션 연동을 위한 기능 추가
- 이전 개발되었던 업로드 완료 시 과금 서버 호출 기능 적용
컴파일 시 __USE_AUTH_SOFTLINE_ONLY_UPLOAD_END_SEND_ 추가 필요
- PUT 요청 시 특정헤더 값(SB_ExtSession)값을 포함하여 호출되게 수정됨
- 수정된 파일은 auth.c임
Revision 0861
-------------------
수정일 : 2013-04-05
수정자 : 노경민
- NEW: 토토로사 웹하드 등록제 통과를 위한 기능 추가
- GET 요청 시 특정 헤더(SB_ExtSession)가 있을 경우 과금 정보를 고객사로 보낼 때
해당 값을 추가로 전송함
- 수정된 파일은 auth.c임
- BUG: 무인증 디렉토리 URI에 대한 characterset 변환 오류 확인
- dav_shared_ar_get_value 함수에 로직적 오류 수정됨
- 수정된 파일은 share.c임
- BUG: __OPENDAV_DEBUG__ 모드로 컴파일 수 오류나는 부분 수정
- 수정된 파일은 out_filter.c임
Revision 0825
-------------------
수정일 : 2012-09-27
수정자 : 노경민
- CHG: 공유 메모리 attach 실패 시 프로세스 종료
- 기존 공유 메모리 attach 실패 구동되었던 로직을 attach 실패 시 구동되지 않게 수정함
Revision 0813
-------------------
수정일 : 2012-09-11
수정자 : 노경민
- CHG: 대용량 서비스 Quota 조회시 HTTP 422 발생 개선
- 용량 산정 되지 않는 디렉토리 대한 사용량 요청 시
존재하는 디렉토리 경우 : 사용량 0으로 리턴
존재하지 하지 않는 디렉토리 경우 : 에러 리턴
- 수정된 파일은 dbms.c임
Revision 0801
-------------------
수정일 : 2012-08-10
수정자 : 유희곤
- BUG: 무인증 요청 중 URI 상에 특수문자 ' or \ 존재시 HTTP 404 NOT_FOUND 오류 수정
- URI 상의 특수문자 ' or W 존재시 RCDB 상에 Query 수행 오류가 발생
- 따라서 RCDB 가 인식할 수 있도록 특수문자를 dav_repos_replace_unsafe_chars() 함수를 사용하여 치환 처리함.
- 본 상황은 무인증에서만 발생하며 인증에서는 이미 수정된 사항임.
- 수정된 파일은 share.c
- CHG: 불필요한 #if 1, #if 0 코드 제거
- 개발시 편의성 목적으로 pizon 에 의해 추가된 #if 관련 코드 정리.
- 수정된 파일은 share.c
Revision 0795
-------------------
수정일 : 2012-07-24
수정자 : 노경민
- BUG: HEAD 요청 시 이전 버전(Revision 0744이전)과 다른 응답에 따른 문제 해결
- 구형 SBFS(NetCache Write 지원하지 않는 버전) 업로드 서버에서 root(/dav)에 대한
HEAD 요청 시 이전과 다른 리턴으로 정상적인 동작이 되지 않는 현상 발생함
- 원인은 이전(Revision 0744이전) 경우 HEAD 요청 시 200을 리턴 하였지만 현재 개발된
모듈에서 500(NetCache 경우)를 리턴하여 해당 문제가 발생된 걸로 추정됨
- 해당 로직은 디렉토리 시 200 리턴, 파일은 해당 장비에 존재 유무에 따라 200 or 301 리턴 수정됨
- 수정된 파일은 dbms.c, repos.c 임
Revision 0791
-------------------
수정일 : 2012-07-24
수정자 : 노경민
- BUG: 동일 RC내 동일 유저 캐쉬 정보 1개만 저장되는 버그
- 주기적인 유저 정보 캐쉬 실행 시 동일 RC 내 유저 정보(다수 볼륨존재시)가 1개만 캐쉬되는 버그가 확인되었음
- ADD 시 유저 정보 동일 유무를 체크하기 때문에 발생함
- 수정된 파일은 share.c 임
Revision 0785
-------------------
수정일 : 2012-07-17
수정자 : 노경민
* Revision 785 버전은 Apache 2.2.22를 타켓을 만들어진 모듈이며, 기존 있던 버그와 기능 개선 버전이다.
- CHG: 모듈 버전 변경
- 3.1.0 => 3.2.0으로 변경됨
- CHG: Apache 버전 변경
- NetCache Keepalive 세션 지원을 위한 기존 2.2.3 버전에서 2.2.22버전으로 변경
- CHG: Postgresql Clinet library 변경
- 8.1.3 => 9.1.3으로 변경
- CHG: UDP listener 로직 제거
- UDP listener 관련 로직을 제거하고 관련 로직을 신규 프로세스화함
- 해당 로직 때문에 사용하고 있는 DB Pool 로직 제거
- DB Pool 로직은 mod_dbd 관련 로직을 변경 처리
- CHG: 불필요한 lock 제거
- db_global_lock 관련 lock 삭제처리함
- CHG: NetCache Alive 500 리턴 개선
- 요청 받는 해당 장비가 Alive 아니면 무조건 500리턴하던 구조를 변경처리함
- NetCache 대해서 GET, 단일 파일 PROPFIND 시 alive 상태 FHS 미존재시 500리턴함
- CHG: 저장 위치 획득 로직 개선
- 저장 가능 볼륨 정보 획득 로직 변경 및 선택 로직(램덤) 변경
- CHG: 업로드 선정 기준 변경
- 전체 여유 공간 10GB 이상, 멀티 볼륨 경우 가장 큰 디스크가 3GB 이상 인경우 램덤
- CHG: 중복 로직 제거
- 상위 디렉토리에 대한 중복적인 체크 로직 제거
- CHG: Database client charset 변경
- 기존 EUC-KR => CHC(Database clinet encoding과 동일)
- 해당 값은 설정 값을 통해서 변경할 수 있음(DavProviderDBCharset)
- CHG: SQL 오류에 대한 리턴 에러 코드 변경
- HTTP_INTERNAL_SERVER_ERROR -> HTTP_BAD_REQUEST
- BUG: 메모리 참조 오류
- 브라우저(크롬)에 대한 무인증 파일 요청 시 발생하던 오류 수정
- 쓰레드 세이프하지 않는 함수로 발생한 메모리 오류 수정
- BUG: range GET 요청 후 다른 메소드 비정상 현상 처리
- ange GET 요청 후 동일 세션으로 다른 메소드 요청 시 비정상 처리 현상 수정
- BUG: Apaceh 버전 변경에 따른 오류 함수 수정
- apr_dbd_get_row 사용하는 인자 의미 변경
- BUG: OS Bits 관련 자료 구조 문제 수정
- apr_psprintf 경우 %lld 포맷은 32Bits 시스템에서 지원되는 포맷이며,
Apaceh 컴파일 시 32Bits에 컴파일된 환경 값들을 참조되게 64Bit를 컴파일하여
이와 같은 문제 발생함
- BUB: Location header escape uri 리턴
- Location header 리턴 시 unescape uri 리턴하여 공백이 포함되어 있는 uri 경우
NetCache에서 올바르게 파싱되지 못하는 현상을 만들었음
- NEW: sendfile 지원
- confing 상 EnableSendfile On인 경우 GET 요청에 대한 sendfile 지원 기능 추가
- NEW: write close insert 기능 on/off
- write close 해당 메타 정보가 없을 시 신규로 insert되는 기능에 대한 on/off 설정 기능 추가
Revision 0758
-------------------
수정일 : 2012-05-03
- NEW: 서비스별 대소문자 구분/무시 여부 확인을 위한 Interface 기능 추가
- PROPFIND요청 시 해당 요청에 대한 응답이 정상일 때 response header에
X-SB-Case-Sensitive 추가하여 보냄
- X-SB-Case-Sensitive: yes (구분), no (무시)
- 수정된 파일은 repos.c
- NEW: 계정 정보 초기화 기능 추가
- 새롭게 구동된 Apache로 무인증 요청 시 대소문자 기능이 제대로 동작하지 않는
문제를 방지하기 위해서 구동시 기본 계정 정보를 초기화될 수 있도록 기능 추가함
- 수정된 파일은 auth.c, listener.c, share.c, share.h
- CHG: 무인증 디렉토리 초기화에 불필요한 DB 켄넥션 Pool 생성 삭제
- 수정된 파일은 listener.c, share.c, share.h
- CHG: 무인증 요청에 대한 램덤 응답 방식 변경
- request header의 Host가 값이 고정일 때 무인증 요청 시 인증 실패 발생하는 원인임
- 해당 요청이 무인증 요청인지 확인 후 램덤 방식이 아닌 기존과 동일하게 해당 장비가
파일을 있으면, 서비스 될수 있도록 수정함
- 수정판 파일은 repos.c
- BUG: 대표 도메인로 파일 요청 시 자신이 가지고 있을 때 램덤하게 403에러 발생
- 해당 파일에 대한 저장 위치가 서로 다를 경우 이와 같은 현상이 발생함
- 수정된 파일은 dbms.c
Revision 0750
-------------------
수정일 : 2012-04-24
수정자 : 유희곤,노경민
- CHG: Revision 버전 표기 오류
- Revision 748 잘못된 버전 표기 때문에 재등록
Revision 0748
-------------------
수정일 : 2012-04-24
수정자 : 유희곤,노경민
- CHG: Revision 0747 commit 누락된 파일 등록
- 누락된 파일 share.c, share.h
Revision 0747
-------------------
수정일 : 2012-04-23
수정자 : 유희곤,노경민
- CHG: 무인증에 대한 서비스별 대소문자 구분/무시 기능 추가
- Revision 0725 에 적용된 서비스별 대소문자 구분/무시 기능이 무인증 처리 Flow 상에는 반영되지 않아..추가 처리
- share.c 의 dav_shared_ar_check_request(), dav_shared_ar_get_value() 함수 수정
- 기존 Case-Sensitive tag 값 확인 기능을 제거
- dav_shared_is_uri_ignore_case_by_svcname() 함수 추가
- CHG: 무인증 관련 share.c 의 dav_shared_ar_check_request() 함수 Flow 수정
- 무인증 처리 관련 불필요 loop 등의 존재로 성능 저하 발생.. 따라서 함수 전면 수정 처리
- Content 의 host_name 정보 조회 관련 쿼리의 GROUP BY, ORDER BY 구문 제거
- Redirection 처리를 위한 대상 장비 선택 로직 최적화.
- Redirect 처리된 요청에 대해 업무 처리 Flow 개선
- 애매한 변수 변경, 로깅 기능 보강
- CHG: 무인증 관련 share.c 의 dav_shared_ar_get_value() 함수 Flow 수정
- 잘못된 loop 동작으로 인한 문제점 확인.
- 문자열 파싱 처리 관련 버그 위험성 내포..
- 업무 Flow 와 코드가 매칭되지 않아.. 전체 수정 처리함.
- HTTP header 상에 Authorization 정보가 존재하지 않을 경우만 무인증을 검사하도록 업무로직 추가
- CHG: ap_log_rerror 사용 관련 segfault 발생 코드 수정
- ap_log_rerror() 함수 사용시 4번째 인자값이 NULL 인 경우 segfault 발생..
- 따라서 해당 코드를 ap_log_error() 로 수정 처리.
- share.c
- NEW: Cache 된 서비스 정보 조회 관련 Timeout 여부 무시하는 함수 추가
- share.c 의 dav_shared_ac_get_by_vol_not_timeout()
- 무인증 관련 서비스의 대소문자 구분/무시 여부 확인 처리시인증 과정을 사용하지 않으므로.. Cache 값 업데이트가 발생하지 않음.
- 따라서 이럴 경우 Timeout 발생으로 인한 NULL 값이 반환되어.. 대소문자 구분/무시 여부가 default 값으로 설정되는 상황 발생.
- 이를 해결하기 위해 TIMEOUT 비교가 없는 함수를 추가함.
- DEL: share.c 미사용 함수 제거 처리
- dav_shared_ar_compare_uri(), dav_shared_ar_compare_uri_ignorecase() 의 point 관련 위험성 내포로 인해 삭제 처리.
- CHG: auth.c 의 dav_auth_user_body_type() 함수 포인터 이동 처리 코드 수정 ( #8795 )
- 업무 로직상 포인터 이동 처리가 불합리하여 수정 처리함...
- CHG: 대표 도메인에 대한 GET 요청 개선
- request header의 host 확인 후 해당 장비와 동일 host가 아니면 램덤처리하며,
동일 장비일 경우 기존과 동일한 로직으로 처리
- dbms_get_redirect()함수에 램덤 처리 유무 인자(is_random)추가
- 수정된 파일은 dbms.c, repos.c, dbms.h
- CHG: dbms_get_redirect함수 쿼리 개선
- 쿼리 수행 시 GROUP BY host_name ORDER BY cache ASC 부분 삭제 처리
- 수정된 파일은 dbms.c
- BUG: 서비스 명과 동일명의 디렉토리 대한 무인증 오류
- 무인증 디렉토리 체크로직 중복 실행으로 발생한 문제였음
- 수송된 파일은 auth.c
- BUG: 메모리 참조 오류 발생 완화 (Bus error,Segmentation fault)
- 트랙픽 제어를 위해서 구현한 dav_output_filter 사용 시 상위 로직에서 메모리 관련 오류 발생함
- 현재 수정된 버전은 완벽하게 해당 문제를 해결한 것이 아니며, GET에 대해서 해당 모듈이 동작되게
수정되었음
- 수정된 파일은 out_filter.c
- CHG: dav_emulate_sendfile 수정
- 전달 인자 중 NULL 값 있을 수 있는 부분에 대한 방어코드 추가
- 수정된 파일은 out_filter.c
Revision 0744
-------------------
수정일 : 2012-04-17
수정자 : 노경민
- CHG: Location head 설정 함수 변경
- 기존 함수 삭제(dav_repos_set_redirect_request, dav_repos_set_redirect_request_put_0)
- RESPONSE CODES 따른 처리 분리
- 신규 함수 추가 dav_repos_set_redirect_head()
- 수정된 파일은 repos.c 임
- CHG: dav_repos_get_resource 함수 정리
- 기존 함수 삭제(dav_repos_get_resource)
- dav_repos_get_resource 함수 재구현
- 각 method 별 처리 로직 분리(dav_repos_get_resource_propfind, dav_repos_get_resource_get, dav_repos_get_resource_put)
- 수정된 파일은 repos.c 임
Revision 0733
-------------------
수정일 : 2012-04-04
수정자 : 노경민
- CHG: DB Pool 획드 로직 변경
- pool 요청에 대한 무한시도 로직 삭제 및 관련 로직 수정
- 획득한 세션에 대한 NULL 체크 기능 추가
- Pool 획득 실패 시 503에리 리턴 추가
- 수정된 파일은 util.c, dbms.c, auth.c, listener.c, share.c
- CHG: DB 쿼리 실패 관련 재시도 로직 삭제
- SELECT_AND_RETRY, QUERY_AND_RETRY 삭제
- 수정된 파일은 dbms.h, dbms.c, share.c
- CHG: 불필요한 DB 트랜잭션 요청 로직 삭제
- 불필요 트랙잭션 요청 부분 삭제처리
- 수정된 파일은 dbms.h, dbms.c,
- CHG: USE_DUAL_PGLB 기능 삭제
- 현재 DB구조(Postgresql + PGPOOL)에서 서브 DBLB 정보 필요하지 않는 구성임
- 수정된 파일은 main.c, dav_repos.h, dbpool.c, Makefile
- CHG: conf 정보 개선
- rc_statd서버 정보를 DavProviderBroadcastAddr 값으로 설정되어 있는 부분 수정함
- DavProviderBroadcastAddr => DavProviderBroadcastAddr 변경함
- 수정된 파일은 main.c, listener.c, dav_repos.h
- BUG: 사용량 조회시 대소문자 무시 기능 이상 동작
- 조건문에 컴파일 warning 존재하여 이상 동작
- 수정된 파일은 dbms.c
- CHG: 컴파일 경고 수정
- 수정된 파일은 repos.c
Revision 0725
-------------------
수정일 : 2012-03-30
수정자 : 노경민, 유희곤
- NEW: 서비스별 대소문자 무시 여부를 RCDB 에서 주기적으로 조회하여 Cache 형태로 저장토록 기능 추가
- 기존 account cache 기능에 대소문자 무시 여부 참조 기능 추가( RCDB t_sms_sp_svc_product 테이블 uri_ignore_case 필드 )
- 관련 값에 대한 Interface 함수 추가(dav_shared_is_uri_ignore_case)
- 수정된 파일은 share.h, share.c, auth.c 임
- CHG: NTFS 와 유사한 서비스별 URI 대소문자 무시 기능 추가
- 서비스별 설정된 대소문자 구분 여부를 바탕으로...
- 각 요청별 URI 대소문자 무시 여부를 판단하여 적합하게 판단토록 수정 처리.
- 특히 URI 대소문자 무시 서비스인 경우 업로드는 전달받은 그대로 URI 를 처리.
- 그 외에 대해서는 내부적으로 소문자로 변환하여 업무 Flow 를 처리
- repos.c, dbms.c 수정
- CHG: dbms_remove_replicate return type 변경
- dbms.c 의 dbms_remove_replicate() 함수의 반환값이 void 로 처리된 상태이나.
- Query 를 수행하는 QUERY_AND_RETRY 매크로 상에서 return 구문이 존재함.
- 따라서 이를 수정하기 위해 return 타입을 void -> int 로 수정 처리함.
- CHG: __IGNORE_CASE_DOWNLOAD__ 기능 삭제
- 서비스별 URI 대소문자 무시 기능 추가로 인해 기존 RC 전체에 적용하는 대소문자 무시 기능은 불필요
- main.c 에서 컴파일 옵션 icd 표시 옵션 관련 항목 삭제 처리.
- dbms.c, Makefile 수정
- CHG: __NETCACHE_TIME_CHECK__ 항목 삭제
- Revision 0343 에서 추가된 NetCache 지원 관련 GET 요청에 대한 소요시간 로깅 기능이 더이상 사용하지 않으므로 제거
- dbms.c, Makefile 수정
- CHG: __DEBUG_CORE_FILTER__ 항목 삭제
- output_filter.c 소스 상에 이전 개발자가 테스트용으로 작성한 Debug 처리용 코드 모두 제거 처리.
- CHG: 과금 통계 제외 관련 기능 제거
- 이전 개발자가 2009 년에 추가한 과금 통계 제외 관련 기능의 미사용 및
- 개발 후 적합한 테스트 절차를 거치지 않아.. 제거 처리함.
- 이로 인해 __CLASSIFIED_TRAFFIC_MANAGE_TO_OMIT__ 로 정의되었던 소스 부분이 삭제 처리됨.
- CHG: 소스 정리
- 미사용 소스 제거.
- 불필요한 소스 제거
- 소스 들여쓰기 정리
- DEL: 의미없는 소스 파일 삭제 처리
- check_upload_to binary 삭제 처리. ( 확인 결과 사용하지 않음 )
- README 파일 삭제 처리 ( 파일 크기가 0 byte )
- TODO 파일 삭제 처리 ( 초창기 개발자가 작성하였으나.. 현재 의미 없음 )
Revision 0716
-------------------
수정일 : 2012-03-14
수정자 : 신순영
- CHG: redirect header string 메모리 중복 사용
- apr_pstrcat() 호출시 parsed_uri.query일 경우 사용하는 메모리 버퍼의 변경
- Revision 0715 에서 빠진 부분 수정
Revision 0715
-------------------
수정일 : 2012-03-14
수정자 : 신순영
- CHG: redirect header string 메모리 중복 사용
- apr_pstrcat() 호출시 parsed_uri.query일 경우 사용하는 메모리 버퍼의 변경
Revision 0714
-------------------
수정일 : 2012-03-08
수정자 : 노경민
- CHG: PUT 요청 시 Expect: 100-continue 헤더 지원
- 기본적으로 지원하였으나, 해당 헤더로 요청 시 응답 코드에 대한 Content-Length 오류 발생
- 원인 : 재구현 dav_output_filter 내부에서 request_rec의 bytes_sent 변경 로직때문
- 해결 : bytes_sent 변경 로직 삭제
- 해결 시 영향 받는 부분 :
고객사 다운로드 전송량
다운로드 트래픽 큐의 전송량(GTL로 보낼 정보)
access_log 로그 [%b]
- 수정된 파일은 out_filter.c임
- CHG: 고객사 다운로드 전송량 전송 로직 변경
- request_rec의 bytes_sent 참조 하던 구조를 mod_logio.so의 전송량 로그값으로 변경
- 수정된 파일은 auth.c임
- CHG: 컴파일 경고 사항 수정 처리
- void 함수가 아닌데, return;만 하여 컴파일 경고 발생함
- 수정된 파일은 out_filter.c임
Revision 0713
-------------------
수정일 : 2012-03-13
수정자 : 신순영
- CHG: redirect header string 메모리 중복 사용
- 불필요하게 동적 할당을 반복하여 호출하는 apr_pstrdup() 를 char* 타입의 임시변수를 사용함으로써 동적할당 호출을 줄임
Revision 0706
-------------------
수정일 : 2012-03-06
수정자 : 신순영,노경민
- CHG: dav_repos_write_stream() 정리
- 수정자 : 노경민
- sync 관련 소스 삭제 처리
- CHG: HTTP 507 (HTTP_INSUFFICIENT_STORAGE) 오류 반환 메시지 수정 (#8347)
- 수정자 : 신순영
- dav_repos_open_stream()에서 실행하는 dav_shared_vu_check() 함수에서 처리하는 HTTP_INSUFFICIENT_STORAGE (507) 관련 부분은 실제 507을 보냈지만,
- 상위 모듈에서 403으로 다시 에러를 설정하여 보내서 access_log 에 507이 남지 않는다.
- 그래서 dav_shared_vu_check() 함수를 dav_repos_write_stream() 에서 처리하도록 수정함.
Revision 0702
-------------------
수정일 : 2012-03-02
수정자 : 신순영
- CHG: HTTP 507 (HTTP_INSUFFICIENT_STORAGE) 오류 반환 메시지 수정 (#8347)
- 실 용량을 초과할 경우로 리턴 메시지 멘트에 physically 추가
- repos.c의 dav_repos_write_stream() 함수 수정됨
- CHG: RANGE GET 요청이 범위를 벗어날 경우 HTTP 416 (Requested Range Not Satisfiable) 오류 반환 (#8371)
- RANGE GET 요청이 범위를 벗어난 HTTP 416 오류가 발생한 경우 기존 HTTP_FORBIDDEN 에서 HTTP_RANGE_NOT_SATISFIABLE 와 해당 메시지 반환하도록 수정
- repos.c의 dav_repos_deliver() 함수 수정됨
Revision 0701
-------------------
수정일 : 2012-02-29
수정자 : 신순영
- CHG: HTTP 507 (HTTP_INSUFFICIENT_STORAGE) 오류 반환 메시지 수정 (#8347)
- 계약 용량을 초과할 경우 HTTP 404 (HTTP_FORBIDDEN) 값을 반환 처리하는 부분을 HTTP 507 (HTTP_INSUFFICIENT_STORAGE) 반환 처리로 수정
- repos.c의 dav_repos_open_stream() 함수 수정됨
Revision 0679
-------------------
수정일 : 2012-02-01
수정자 : 노경민
- NEW: NetCache PUT 기능 지원을 위한 PROPFIND 404시 Location 정보 보내기
- PROPFIND나 PUT 시 User-Agent 확인하여 NetCache 경우 항상 Header에 Location 보내도록 함
- repos.c의 dav_repos_get_resource() 함수 수정됨
Revision 0657
-------------------
수정일 : 2012-01-26
수정자 : 노경민
- NEW: 자신의 Alive 상태 체크 기능 추가
- VMASD로 부터 정상적인 정보를 수신할 때까지 서비스 상태를 500으로 만듦
- repos.c의 dav_repos_get_resource() 함수에서 dav_shared_du_is_alive() 사용해서 체크
- NEW: 자신의 상태 초기화 함수 추가
- shard momery 초기화 후 자신의 서버 상태를 가장 먼저 등록 처리함.
- share.c의 dav_shared_du_myself_init() 함수 추가
Revision 0652
-------------------
수정일 : 2012-01-18
수정자 : 유희곤
- CHG: NetCache 지원 관련 Except-for 제외 FHS 에 대한 다중 목록 처리 기능 추가
- 기존 Revision 0549 에서 추가된 HTTP Except-for 기능 관련 NetCache 로부터 전달받는 제외 FHS 는 1대로만 지정 처리하였으나...
- NetCache 업무 flow 상에 핑퐁현상이 발견되어.. 이를 지원하기 위해 제외 FHS 를 다중으로 받을 경우에도 처리가능토록 수정
- Except-for 로 전달되는 제외 FHS 목록들은 공백(blank) 로 분리 된다. ( 부사장님 협의 사항)
- dbms.c 의 dbms_get_redirect() 함수상에 strcasestr() 함수 사용을 통해 구현 완료
Revision 0639
-------------------
수정일 : 2011-12-29
수정자 : 유희곤
- CHG: 버전 정보 3.0.1 -> 3.1.0 변경
- 버전 적용 규칙 변경에 의한 버전 정보 변경
- 변경 사유은 Redmine 이슈 #7935, #7928 항목 참고
Revision 0634
-------------------
수정일 : 2011-12-01
수정자 : 유희곤
- CHG: dav_repos_hooks_liveprop 의 중복 정의 해결
- dav_repos.h, repos.c 코드 상에 dav_repos_hooks_liveprop 관련 중복 정의 발견 ( gcc.4.4 에서 컴파일 에러발생 )
- 따라서 테스트 결과 dav_repos.h 상의 정의 코드를 제거처리함.
- CHG: dbms.h 소스 가독성 향상
- 들여쓰기, 함수 정의 관련 공백, 줄바꿈 정리 처리
- CHG: apr_table_get() 함수 사용 관련 return 타입 수정
- retrun type 이 const 형이므로 이에 맞도록 코드 수정 처리
- 수정 소스는 repos.c ,
- auth.c 의 dav_auth_user_start() 함수상에도 사용하나.. 추후 인증 로직 파악 후 수정 필요
- CHG: apr_md5() 함수 사용 관련 인자타입 수정
- auth.c 의 dav_auth_sp_new() 함수에서 apr_md5() 함수 형식에 맞도록 변수 타입 수정 처리
- CHG: apr_generate_random_bytes() 함수 사용 관련 인자타입 casting 처리 부분 수정
- dbms.c 소스 상에서 전달 인자의 type casting 부분을 unsigned char * 형으로 수정 처리
- share.c 상에서 해당 함수 사용시 type casting 처리 부분 수정 및 변수 타입을 int 에서 unsigned int 로 수정처리.
- CHG: dbms.c 소스상에 의미없는 코드 제거처리.
- dbms_get_property() 함수상의 alive==false 코드 부분 제거
- dbms_set_property() 함수상의 request_rec *r 코드 미사용으로 제거처리
- CHG: 기타 warning 발생 관련 코드 수정
- repos.c 미사용 코드 제거 및 로그 출력을 위한 타입 관련 수정 처리.
- repos.c 에서 iconv_string(), is_valid_utf8() 함수 미사용으로 인한 제거 처리.
Revision 0633
-------------------
수정일 : 2011-11-29
수정자 : 유희곤
* 앞으로 수정사항은 opendav 소스 형상 재조정으로 인해 trunk 상의 소스(NetCache 지원버전)에 적용합니다.
- BUG: 업로드 FHS 선정 코드 관련 예외사항 추가
- share.c 의 dav_shared_du_put_target() 함수 상에서 현재 등록된 FHS 대수를 계산시
- 등록된 FHS 가 0 인 경우 (자기 자신 포함) 이에 대한 예외처리 로직 추가
- fhscnt 값이 0 일 경우 아래 랜덤 선택 하는 부분에서 Zero division 관련 오류가 발생하여 시그널에 의한 프로세스 종료현상 발생
- CHG: transfer_log 구조체 형식 변경
- Content 전송 정보를 IPC Queue 에 저장시 사용하는 tarnsfer.c 에 정의된 transfer_log 구조체에 대해 변경
- 이는 신형 fimngd 에서 통계 정보 분석을 통한 Hot Content 감지 기능 지원을 위해서임.
1. 물리 파일명 저장을 위한 TL_FILENAME_HASH 정의 및 filenamehash 항목 추가 ( 64 Byte )
2. 1번 항목에 의한 transfer_log 구조체 크기 변경을 막기 위해 filename 항목의 크기를 기존 4096+8 -> 4032+8 으로 변경처리
이로 인해 transfer_log 구조체 크기는 64,32bit 에서 4208 Byte 로 동일함.
3. length 항목에 대해 기존 off_t 타입을 명확하게 uint64_t 형식으로 변경처리.
off_t 타입은 FreeBSD 장비에서는 기본적으로 8 Byte 형식이지만...
Linux 및 Solrais 32Bit 에서는 4 Byte 를 가짐 (Large file 지원 여부에 따라 32 bit 에서 4Byte or 8Byte 를 가질 있음 )
- NEW: Transfer Log 정보상에 Local 물리 파일 정보가 포함되도록 기능 추가
- repos.c 의 dav_repos_get_resource() 함수에서 실제 Local 물리 파일 정보를 request_rec 구조체 canonical_filename에 저장되도록 기능 추가
추가된 코드 2곳은 Content 업로드시 생성되는 물리 파일명 처리부분, RCDB 조회시 조회된 물리파일명 처리 부분임.
- transfer.c 의 dav_transfer_log_generate() 함수에서 request_rec 구조체 canonical_filename 상에 저장된 (repos.c 에서 저장처리)
로컬 물리 파일명을 transfer_log 구조체의 filenamehash 필드에 설정하도록 코드 추가.
- NEW: file_lastmodified 값 변경시 get_lastmodified 값도 현재 시간으로 변경되도록 수정
- 서비스간 동기화 기능에서 서비스간 file_lastmodified 변경 사항 동기화를 위해 기능 수정함.
- 수정 소스는 dbms.c 파일의 dbms_update_file_lastmodified() 함수
- BUG: etag 생성 관련 버그 수정
- depth = 0 인 최상위 폴더와 같이 filename_hash 정보가 없는 경우 etag 생성로직에서 잘못된 포인터 참조 발생
- 이를 방어하기 위해 filename_hash 길이가 32 이하인 경우 0 값으로 채우도록 로직 수정
- 수정 소스는 repos.c 파일의 dav_repos_getetag_dbr() 함수
Revision 0607
-------------------
수정일 : 2011-08-25
수정자 : 노경민
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- CHG: 업로드 FSH 선정 기준 변경
- 특정 장비(여유 공간이 많거나 신규 등록된 장비)로 업로드가 몰리는 현상 발견되고 있음
- 원인 : 특정 장비로 계속적으로 선택될 수 있는 로직구성되어 있었음
- 개선 : 1안) 현재 가용할 수 있는 장비 중 무작위 선택
2안) 1안 실패 시 특정 장비부터 가용 서버 순차적으로 순회하면서 처음 발견된 업로드 가능 서버를 선정
- 수정된 파일은 share.c임
Revision 0578
-------------------
수정일 : 2011-07-07
수정자 : 유희곤
* 이하 수정사항은 NetCache 버전에만 적용합니다.
- BUG: NetCache 전용 대소문자 무시 처리 기능 적용시 PROPFIND 에 대한 처리가 정상적으로 동작하지 않음
- 확인 결과 Revision 0343 에서 개발된 NetCache 지원용 대소문자 무시 처리 기능에서
- PROPFIND 조회에 대한 Case-Sensitive HTTP Header 처리 구현이 되어 있지 않아 문제가 발생함.
- 따라서 이를 구현하기 위해 dbms.c 의 dbms_get_collection_resource() 함수를 수정 처리함.
Revision 0549
-------------------
수정일 : 2011-05-16
수정자 : 유희곤
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- NEW: GET 요청에 대해 HTTP Header 에 추가된 제외 FHS 목록 기능 추가
- GET 요청에 대해 FHS 제외 목록 정보를 HTTP Header 상의 Except-for : <host-name> 형식으로 전달받는 경우
- 해당 FHS 정보는 Redirect 전달 대상에서 제외시키고 다른 FHS 정보만을 검토하여 전달한다.
- 단 Except-for 로 전달되는 제외 FHS 정보는 1 대로만 지정처리한다.
- 수정된 소스는 dbms.c 의 dbms_get_redirect() 함수임.
- CHG: Cache 연동 관련 ETAG 생성 로직 변경
- pgpool 사용으로 인해 RCDB 01, 02 간에 resource_id 가 cross 되는 현상이 확인됨.
- 이에 따라 etag 생성 방식을 기존 resource_id - length - creation_date 에서
- filename_hash (32 자리) + length + get_lastmodified 형식으로 변경 처리함.
- get_lastmodified 사용 관련 양방향 기본 버전은 RCDB 의 get_lastmodified 값을 사용
- NetCache 버전은 opendav 의 코드상 실제로는 RCDB 의 file_lastmodified 값을 사용하게 됨.
- 수정된 소스는 repos.c 의 dav_repos_getetag_dbr() 함수임
Revision 0511
-------------------
수정일 : 2011-03-29
수정자 : 노경민
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- CHG: 디렉토리 사용량 조회 기능
- 기존 서비스 전체 용량 조회 기능에 대한 기능을 요청 디렉토리 사용량 조회 기능으로 변경함
- 조회 실패 시 422(Unprocessable Entit) 리턴함
- 기존 구현된 dbms_get_service_quota 삭제 처리함
- 수정된 소스는 dbms.c, dbms.h, repos.c 임
Revision 0499
-------------------
수정일 : 2011-03-29
수정자 : 노경민
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- CHG: 소프트라인 업로드 완료 전송 기능 off 처리
- 고객사 담당자(차진호 과장) 요청으로 관련 기능을 off처리함
- 추후 재요청을 대비하여 컴파일 옵션처리함(__USE_AUTH_SOFTLINE_ONLY_UPLOAD_END_SEND_)
- 수정된 소스는 auth.c 임
Revision 0497
-------------------
수정일 : 2011-03-21
수정자 : 노경민
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- CHG: 소프트라인 업로드 완료 전송 실패 로그 수정
- 소프트라인에 사용하고 있는 업로드 완료 전송 실패에 대한 로그 출력 변경함.
- (tran id / user seq / uri - file_size)형태로 출력되게 수정함
- 수정된 소스는 auth.c 임
Revision 0495
-------------------
수정일 : 2011-03-21
수정자 : 노경민
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- CHG: 물리적인 파일 lock 기능 비활성화 모드 지원
- NetCache 추가된 기능을 양방향에도 구현함.
- 수정자 : 김오종
- Makefile에 __UNUSE_FILELOCK__ 선언하면 관련 기능 사용할 수 있음
- opendav 옵션 문자 추가함(nfl)
- 수정된 소스는 main.c, Makefile, repos.c임
- NEW: 소프트라인 전용 기능 추가
- 업로드 완료 용량 전송 기능
- 기본 다운로드 과금 전송 모듈을 활용해서 구현됨
- 수정된 소스는 repos.c, auth.c 임
Revision 0490
-------------------
수정일 : 2011-03-09
수정자 : 유희곤
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- BUG: 파일에 대한 COPY 처리 기능 버그 수정
- COPY 에 대한 최초 조회 작업시 원본만을 이용하도록 is_cache = 'N' 구문 추가 처리.
- 폴더에 대한 COPY 처리시 is_cache 값을 INSERT 하지 않아 Contents 가 여러개(원본 + Replication)로 표시되는 버그 수정 처리.
- 파일에 대한 COPY 수행시 원본의 Replication 처리된 Contents 까지 자동으로 COPY 되도록 수정 처리.
- dbms.c 의 dbms_copy_resource 함수 수정
- CHG: Cache 팜 관련 미사용 기능 Disable 처리
- COPY, MOVE 처리시 t_sms_sp_svc_cache 테이블에 업데이트 하는 쿼리 수행 기능 주석 처리.
- 해당 기능은 현재 사용하지 않음 ( INSERT 하는 부분이 존재하지 않음.)
- dbms.c 의 dbms_copy_resource, dbms_move_resource 함수 수정
Revision 0486
-------------------
수정일 : 2011-03-03
수정자 : 유희곤
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- CHG: 파일에 대한 COPY 처리 기능 수정
- pgpool 사용시 resource_id 의 RCDB 간 불일치 또는 Cross 현상이 발생.
- 이에 따라 이를 방어하기 위해 개별 파일에 대한 copy 처리시 resource_id 사용 부분은 uri 을 이용하도록 수정함.
- dbms.c 의 dbms_copy_resource 함수 수정
Revision 0474
-------------------
수정일 : 2011-01-05
수정자 : 유희곤
* 이하 수정사항은 양방향 및 NetCache 버전 모두 적용합니다.
- BUG: opendav 재기동시 무인증 설정 정보가 반영되지 않는 현상에 대한 버그 수정
- 2009-08-31 경 개발자 실수로 기존 코드가 삭제 되어 발생함
- 이에 따라 listener.c dav_listen_child_main() 함수상에 dav_shared_ar_init() 호출코드 추가.
- CHG: 무인증 설정 정보 조회 관련 Query 수정
- share.c dav_shared_ar_init() 함수
- t_dav_anonymous 테이블 SELECT 정보의 중복 제거를 위해 DISTINCT 구문 추가
- CHG: 주석처리된 불필요한 코드에 대한 혼동 방지를 위해 삭제 처리
- share.c dav_initialize_shared_memory() 함수상에서 주석처리된 다음 부분 삭제처리
//dav_shared_ar_init(s);
- CHG: 소스 코드에 대한 가독성 향상 처리, 문법 오류 관련 수정
- share.c
- listener.c
Revision 0459
-------------------
수정일 : 2010-12-14
수정자 : 유희곤
- BUG: 파일명에 ''(작은따옴표 2개) 가 들어간 경우 정상적으로 처리되지 않는 버그 수정
- Revision 385 에서 수정된 util.c 의 dav_repos_replace_unsafe_chars() 함수 및
dav_repos_restore_unsafe_chars() 함수상에서 ' 문자 처리상에서 문제가 발생
- 기존 양방향과의 호환을 위해 RCDB 이 conf 설정값 변경 후
backslash_quote = on
- Revision 385 에서 수정되었던 util.c 내역을 원상복구 처리함.
- 테스트 결과 정상 동작 확인 완료.
* 본 수정사항은 양방향 및 NetCache 버전 모두 적용한다.
- CHG: util.c 의 소스 정리 작업
- gcc 4.4.5 버전 컴파일시 발생한 문법 오류 및 경고 사항 수정 처리
- util.c 소스에 대한 들여쓰기 관련 부분 정리.
* 본 수정사항은 양방향 및 NetCache 버전 모두 적용한다.
Revision 0455
-------------------
수정일 : 2010-12-09
수정자 : 노경민
- CHG: 이어올리 시 내부 cache 파일 삭제 되지 않는 버그
- 양방향의 수정된 부분(Revision 0237)이 NetCache에 적용되어 있지 않았던 부분임
- 수정된 파일은 Makefile, dbms.c임
* 본 수정사항은 양방향 및 NetCache 버전 모두 적용한다.
Revision 0453
-------------------
수정일 : 2010-12-08
수정자 : 노경민
- CHG: PROPFIND 처리시 FHS 정보 Random 처리
- User-Agent가 NetCache 인경우만 처리함
- 컴파일 옵션 추가 __PROPFIND_RANDOM_FILE__, __PROPFIND_RANDOM_DIR__
- 현재는 파일에 대한 램덤 처리만 활성화되게 컴파일됨
- 수정된 파일은 Makefile, dbms.c임
* 본 수정사항은 NetCache 버전만 적용한다.
- CHG: C99관련 배열 선언 방법 수정
- 배열 선언 시 동적인 인자 처리 방법은 C99 표준이므르
지원하지 않는 컴파일에 대한 능동적인 대처를 위해서 동적(calloc 사용)활동방식으로 수정함
- 수정된 파일은 dbms.c임
* 본 수정사항은 양방향 및 NetCache 버전 모두 적용한다.
Revision 0449
-------------------
수정일 : 2010-12-03
수정자 : 노경민
- CHG: uri 중 _ 관련 문제
- SQL like 절에서 _ 포함 될 경우 _는 아무문자를 뜻하여, SELECT시 관련 쿼리가 늦게 수행되는 결과를 갖게됨
- 수정된 파일은 Makefile, dbms.c임
* 본 수정사항은 양방향 및 NetCache 버전 모두 적용한다.
Revision 0447
-------------------
수정일 : 2010-11-25
수정자 : 노경민
- CHG: __DISABLE_LOCK_SELECT__ 제거
- 기능 중복으로 제거함
- select 시 lock 관련 테이블 참조를 막기위해 추가된 기능(R0154)이지만, __NOT_USE_LOCKDB__ 에서 이미 처리됨
- 수정된 파일은 Makefile, dbms.c임
* 본 수정사항은 양방향 및 NetCache 버전 모두 적용한다.
Revision 0385
-------------------
수정일 : 2010-10-18
수정자 : 노경민
- CHG: database 형상변에 따른 업로드 안되는 파일 발생
- Beethoven's Symphony No. 10 (Scherzo).wma와 같이 파일명에 '(작은 따옴표)있는 경우 파일업로드 불가능
- 원인 : 기존 ' -> \'로 변경하지만. 이는 client ecoding에 따라 불안정할 수 있음
- 해결 : ' -> '' 로 변경함
- 수정된 파일은 util.c임.
* 본 수정사항은 양방향 및 NetCache 버전 모두 적용한다.
Revision 0382
-------------------
수정일 : 2010-10-14
수정자 : 노경민
- CHG: SQL 이스케이프 문자열 warning 수정
- PostgreSQL 버전(8.1.2 -> 8.4.5)에 따른 databease warning 발생한 쿼리 수정함
- 일부 쿼리 경우 warning 지속 발생하기 때문에 8.4.5 설정값을 변경하여 해결(escape_string_warning = off)
- 수정된 파일은 dbms.c임.
* 본 수정사항은 양방향 및 NetCache 버전 모두 적용한다.
- CHG: Makefile 수정
- 버전 UP 처리 ( 3.0.0.xxx -> 3.0.1.xxxx)
Revision 0354
-------------------
수정일 : 2010-08-30
수정자 : 유희곤
- CHG: 통계정보 수집 처리시 시스템 메모리 swap 임계치 초과 발생 코드 수정
- 대용량 파일의 업로드/다운로드 처리시 통계 정보 수집을 위해 각 처리함수상에서 dav_shared_ts_transfer_data() 함수 호출
- dav_shared_ts_transfer_data() 함수는 내부적으로 dav_shared_ts_find() 함수를 호출하여 공유메모리상에 통계 정보 저장처리.
- 하지만 dav_shared_ts_find() 함수상에서 apr_pstrcat() 함수 사용으로 인해 접속 세션에 대한 메모리 할당을 중복하여 처리.
- 이로 인해 대용량 파일 업로드/다운로드시 swap 메모리 임계치 초과 현상이 발생함.
- 따라서 share.c 의 dav_shared_ts_find() 함수상에서 apr_pstrcat() 사용부분을
- 지역변수 사용으로 변경처리함.
* 본 수정사항은 양방향 및 NetCache 버전 모두에 적용한다.
- CHG: Makefile 수정
- 버전 UP 처리 ( 3.0.0.343 -> 3.0.0.354-컴파일시간 )
Revision 0343
-------------------
수정일 : 2010-08-10
수정자 : 유희곤
- NEW: HTTP Header 상에 대소문자 구분 여부 정보인 Case-Sensitive: NO 에 대한 처리기능 추가
- 위의 정보가 HTTP Header 상에 존재하는 경우 PROPFIND, GET 요청에 대해 대소문자 구분을 하지 않도록 한다.
- 특히 NO 값을 대소문자 구분을 하지 않고 확인한다.
- 기본에 존재하는 __IGNORE_CASE_DOWNLOAD__ 옵션과 충돌하지 않도록 코드 수정
- 그리고 무인증 처리시에도 사용할 수 있도록 수정 처리
- dbms.c : 기본 대소문자 구분 여부 관련 코드 수정
share.c: 무인증 처리시 대소문자 구분 관련 코드 수정
- CHG: Makefile 상에 __NETCACHE_TIME_CHECK__ 옵션을 추가
- 해당 옵션은 NetCache 의 GET 요청 처리시 RCDB 를 조회하는 dbms_get_property() 함수의
실행 시간을 micro-second 단위로 error log 상에 표시
- 본 기능은 NetCache 테스트 지원을 위한 목적으로만 사용할 것.
- CHG: Makefile 수정
- 버전 UP 처리 ( 3.0.0.340 -> 3.0.0.343-컴파일시간 )
Revision 0340
-------------------
수정일 : 2010-08-10
수정자 : 유희곤
- BUG: 파일명에 대한 Hash 생성 처리시 동일시간, 동일 장비에서 PUT 요청 수신시 동일 Hash 가 생성됨.
- 원인은 파일명의 Hash 생성을 담당하는 util.c 의 get_hashed_filepath() 함수상에서
반환값 처리를 위한 static 변수 사용으로 인해 CPU context switching 에 따른 static 변수 overwirte 발생
- 따라서 해당 함수 및 동일한 기능의 함수를 static 변수가 아닌 매개변수를 이용하여 반환처리하도록 수정함.
- 그리고 해당 함수 호출 부분 역시 모두 수정처리함.
- Hash 생성 관련 수정함수
1. util.c : get_hashed_filepath
2. listener.c : get_hashed_string
- CHG: VMASD 로부터 신호 수신 Timeout 값을 기존 10 sec -> 20 sec 로 수정
- vmasd 의 신호 송신 주기를 기존 10 sec -> 3 sec -> 6 sec 로 최종 수정처리함.
- 따라서 vmasd 신호를 최소 3번 연속 수신하지 못하는 경우 해당 FHS 을 DEAD 한 것으로 판단.
- 이에따라 share.c 의 VMASD_SIGNAL_TIMEOUT 값을 20 sec로 수정 처리함.
- CHG: Makefile 수정
- 과금 통계 제외 기능(__CLASSIFIED_TRAFFIC_MANAGE_TO_OMIT__) 을 사용하지 않으므로 Makefile 에서 Disable 처리함.
* 이로 인해 httpd.conf 상에서 다음의 설정값을 주석처리 해야함.
DavProviderMaxOmitIp 50
- 버전 UP 처리 ( 3.0.0.321 -> 3.0.0.340-컴파일시간 )
Revision 0321
-------------------
수정일 : 2010-07-29
수정자 : 유희곤
- CHG: VMASD 로부터 신호 수신 Timeout 값을 기존 60 sec -> 10 sec 로 수정
- NetCache 특성상 이중화 처리가 되어 있어 다른 FHS의 죽은 상태를 빨리 파악해야 함.
- 따라서 share.c 의 VMASD_SIGNAL_TIMEOUT 값을 수정 처리함.
Revision 0316
-------------------
수정일 : 2010-07-20
수정자 : 유희곤
- CHG: LB 이중화 처리 관련 dbpool.c 의 dbd_construct() 함수 수정
- LB 이중화를 사용하는 경우 한쪽 연결이 실패하면 내부적으로 다른쪽 연결을 시도하여 연결이 성립되도록 수정한다.
- 해당 코드는 apr_reslist_create() 함수상에서 DavDBMin 에 설정된
- 최소 연결만큼 본함수를 이용하여 연결을 시도하지만 본 함수에서
- 오류를 반환할 경우 apr_reslist_create() 함수가 오류가 처리되어
- opendav 에서 반복적으로 apr_reslist_create() 함수가 호출되는 상황을 방지하기 위함이다.
- httpd.conf 상에 정의된 DavDBDFailBackDelay (sec 단위) 값은
- 본 함수상에서 svr->retry_delay 값으로 사용되며, 연결이 실패한 Connection 에 대한
- 재연결 시도 관련 Delay 값으로 사용된다.
* 현재 배포 버전상에 DavDBDFailBackDelay (sec) 값은 10 으로 설정되어 있음
따라서 해당 값을 모두 60 으로 변경 처리 예정임
- CHG: Makefile 수정
- 버전 UP 처리 ( 3.0.0.309 -> 3.0.0.316-컴파일시간 )
Revision 0309
-------------------
수정일 : 2010-07-14
수정자 : 유희곤
- BUG: vmasd 로 수신되는 정보을 이용한 FHS 상태 파악 함수 중 opendav 모듈의 서비스 가능 여부 판단함수 버그 수정
- share.c 파일의 dav_shared_du_is_alive() 함수에서인자로 전달받은 FHS 장비의 alive 검사 로직 중 다음과 같은 버그가 발견됨.
- vmasd 는 해당 FHS 의 opendav 가 종료된 경우 Disk Total Size, Disk Free Size 정보를 0 으로 설정하여 전달
- 따라서 해당 FHS 가 서비스 가능 상태인지 여부를 판단하기 위해서는 최종적으로 vmasd 에서 전달한 Disk 용량 정보도 확인해야 함
- 이에 따른 dav_shared_du_is_alive() 함수 수정 ( 본 함수는 GET 요청에 대한 Redirect 처리시 사용됨)
* 추가적으로 PUT 요청에 대한 FHS 상태 확인 함수 dav_shared_du_put_target() 상에는
Disk Free 용량이 최소 1G 이상인 FHS 만 선택하도록 되어 있어 위에서 언급된 로직을 적용할 필요가 없음.
- CHG: Makefile 수정
- 버전 UP 처리 ( 3.0.0.304 -> 3.0.0.309-컴파일시간 )
Revision 0304
-------------------
수정일 : 2010-07-08
수정자 : 유희곤
- CHG: NetCache PROPFIND 성능 개선을 위한 기능 수정
- dbms.c 파일의 dbms_get_collection_resource() 함수에서
- RCDB 상의 조회 쿼리 문장 중 distinct 구문 및 order by 조건 구문을 주석처리하여
- PROPFIND 에 대한 조회 처리 성능을 높임 ( PLAN 분석 결과 Total time 이 1/3 로 감소, cost 는 0에 근접)
- CHG: Makefile 수정
- 버전 UP 처리 ( 3.0.0.291 -> 3.0.0.304-컴파일시간 )
Revision 0291
-------------------
수정일 : 2010-07-02
수정자 : 유희곤
- NEW: NetCache 관련 기능 추가 ( util.c )
- PROFIND 에 대한 결과 요청시 원본 host_name 정보를 무조건 입력해서 보낼도록 수정
- 기존 양방향과 호환을 위해 User-Agent String 상에 NetCache 가 존재하는 경우에만 처리하도록 함.
- 양방향에서 현 장비에 해당 파일이 존재하는 경우 Connection 재사용을 위해 Host Name 정보를 보내지 않음.
- CHG: 불필요한 소스 및 error log 처리 코드 정리
- repos.c 상의 코드 가독성을 위한 정리 작업 수행
- Service Quota 기능 정상 동작 확인으로 인해 error log 관련 주석 처리
Revision 0275
-------------------
수정일 : 2010-06-18
수정자 : 노경민
- CHG: 소프트라인 인증처리 수정.
- 소프트라인 경우 고객사 인증 처리 시 헤더 크기가 고정되어 있으며, 고정된 크기로 보내지 않을 경우 인증이 실패된다(HTTP 412).
- 헤더 크기 - 인증 : 14+181(195), 과금 : 14+184(198)
- User-Agent 부분을 고정 시킴.(기존은 버전 정보)
- Content-Length의 자리 숫자에 대한 처리 코드 추가
- 소프트라인만의 특성이므로 컴파일 옵션으로 분리처리함.(-D__USE_AUTH_SOFTLINE_ONLY__)
=> 기능 확인 코드 추가(uso)
- auth.c, main.c, Makefile 수정됨.
Revision 0256
-------------------
수정일 : 2010-05-25
수정자 : 유희곤
- CHG: 불필요한 Debug 용 error log 메시지 제거
- CHG: Makefile 수정
- 버전 UP 처리 및 양방향 버전처리 규칙 적용( 3.0.0.255 -> 3.0.0.256-컴파일시간 )
Revision 0255
-------------------
수정일 : 2010-05-25
수정자 : 유희곤
- CHG: 서비스 Tran ID 별 서비스 용량정보(Total, Free) 조회 기능 추가.
- Request 가 PROPFIND & HTTP Header 상에 Service-Quota: YES 가 설정되어 있는 경우
- 서비스의 스토리지 용량 정보를 RCDB 상에서 조회하여
- 조회된 결과를 HTTP Header 상에 Service-Quota: Total Byte - Free Byte 형식으로 조립하여 전달. ( HTTP 207 Multi Status)
- 만약 HTTP 오류( 500, 404 ) 가 발생하는 경우에는 스토리지 조회정보가 전달되지 않도록 함. ( 로그인 실패등의 보안 이슈 때문)
- 그리고 조회결과가 유효하지 않는 경우에는 0 값을 세팅하여 전달하도록 함.
- dbms.c, dbms.h, repos.c 파일이 수정됨.
- CHG: Makefile 수정
- 기능 추가로 인한 버전 UP 처리 및 양방향 버전처리 규칙 적용( 1.9.200 -> 3.0.0.255-컴파일시간 )
Revision 0200
-------------------
수정일 : 2010-03-29
수정자 : 유희곤
- CHG: PROPFIND 조회시 조회시작 시간 정보를 이용하여 조회처리 기능 추가. (연합뉴스 요구사항)
- SDK 를 이용한 PROPFIND 처리시 HTTP Header 상에 StartTime 필드를 추가
- repos.c 의 dav_repos_walk() 함수상에서 HTTP Header 를 파싱처리하여 StartTime 정보를 추출.
기존 버전과 호환성 유지를 위해 존재하지 않는 경우는 NULL 처리.
- dbms.h, dbms.c 의 dbms_get_collection_resource() 함수상에 인자로 startTime 정보를 추가함.
- dbms_get_collection_resource() 함수상에서 startTime 값을 검사하여 NULL 이 아닌 경우
RCDB 조회시 file_lastmodified 값이 startTime 값 이상인 정보만 조회되도록 수정함.
( 양방향은 get_lastmodified 값을 사용함)
- CHG: Makefile 수정
- 기능 추가로 인한 버전 UP 처리 ( 1.9.183 -> 1.9.200)
Revision 0183
-------------------
수정일 : 2010-03-24
수정자 : 김오종
- NEW : N중화 모듈 개발 후 야기될수 있는 문제점을 해결하기 위해 dbms_remove_replicate()함수 추가.
- 이어올리기를 시작 할 당시에 이전의 컨텐츠의 replicate가 있는 경우
해당 복제본은 deleted_yn = 'Y'로 되도록 만들어졌다.
- 이어올리기 기능으로 업로드 할 경우에만 호출이 되도록 되어있다.
* 추가 참고사항:
- 같은 FHS에서 똑같은 해쉬명으로 생성이 됨에따라 같은 FHS에 replicate가 되더라도
삭제가 되지 않음을 확인했다. csa(삭제) 데몬.
Revision 0162
-------------------
수정일 : 2010-03-19
수정자 : 김오종
- CHG: opendav 모듈의 파일업로드 완료시 t_dav_resource::get_lasmodified 필드가
완료시점의 시간으로 update되도록 수정.
=> 업로드시작시점부터 완료시점까지 10분이상 걸리는 컨텐츠일경우
rc_rmcd의 복제대상 선정쿼리에 의해서 제외되는 현상이 발견 됨.
Revision 0156
-------------------
수정일 : 2010-02-16
수정자 : 유희곤
- BUG: SBFS 에서 개별 파일조회 또는 다운로드시 HTTP lastmodified 필드 오류
- 파일 목록 조회시에는 t_dav_resource 테이블의 file_lastmodified 컬럼 정보 사용
- 파일 다운로드 또는 파일 개별항목 조회시에는 get_lastmodified 컬럼 정보가 사용됨
=> 따라서 dbms.c 의 dbms_get_property() 함수를 수정하여 파일 개별항목에 대해서도
t_dav_resource 테이블의 file_lastmodified 컬럼이 사용되도록 수정함.
- CHG: Makefile 수정
- 버그 수정으로 인한 버전 UP 처리 ( 1.9.154 -> 1.9.156)
Revision 0154
-------------------
수정일 : 2010-02-12
수정자 : 유희곤
- CHG: RCDB 의 특정 Table select 함수 Disable 처리
- dbms.c 의 dbms_load_lock_record() 함수상에서 t_dav_lock 테이블에 대한 SELECT 를 수행하지 않도록 코드 추가
- 본 기능의 ON/OFF 처리는 Makefile 상의 __DISABLE_LOCK_SELECT__ 정의에 따라 수행됨.
- __DISABLE_LOCK_SELECT__ 을 Makefile 상에 설정한 경우 dbms_load_lock_record() 함수상에서
t_dav_lock 테이블에 대한 SELECT 쿼리가 수행되지 않음.
- CHG: Makefile 수정
- __DISABLE_LOCK_SELECT__ 정의값 추가
- 기능 추가로 인한 버전 UP 처리 ( 1.9.150 -> 1.9.154)
Revision 0150
-------------------
수정일 : 2010-02-11
수정자 : 유희곤
- CHG: RCDB 의 특정 Table select 함수 Disable 처리
- repos.c 의 dav_repos_walk() 함수상에서
- t_dav_property, t_dav_property table 에 대한 select 요청 로직 함수를 주석처리
=> dbms_fill_dead_property(), dbms_build_ns_id_hash()
- 해당 테이블 확인 결과 INSERT, UPDATE, DELETE 흔적이 존재하지 않아 더 이상 사용되지 않는 것으로 판단함.
- 이 수정은 신동호 부장 요청으로 처리함.
- CHG: Makefile 수정
- 버그 수정으로 인해 버전 UP 처리 ( 1.9.147 -> 1.9.150)
Revision 0147
-------------------
수정일 : 2010-02-10
수정자 : 유희곤
- BUG: GET 요청에 대한 Redirection 처리 로직 수정
- Redirection 요청 처리시 대상장비 선택 관련 버그 ( 죽은 장비 정보 전송 )
- 이는 처리 로직에서 발생하는 버그로서 이를 수정
- dbms.c 의 dbms_get_redirect() 함수 수정함.
- CHG: Makefile 수정
- 버그 수정으로 인해 버전 UP 처리 ( 1.9.0107 -> 1.9.147)
Revision 0107
-------------------
수정일 : 2010-01-29
수정자 : 유희곤
- CHG: bool type 지원을 하지 않는 관계로 int 형으로 타입 수정처리
- repos.c 의 dav_repos_get_resource(), bPut0Mode 변수
- CHG: Makefile 수정
- 버그 수정으로 인해 버전 UP 처리 ( 1.9.0105 -> 1.9.0107)
Revision 0105
-------------------
수정일 : 2010-01-29
수정자 : 유희곤
- CHG: SBFS 상에서 PUT0 처리시 Force Mode 사용에 따른 코드 추가
- SBFS 상에서 301 Redirection 이 2~3 번 발생
- 이를 해결하기 위해 기존의 HTTP 상에 Force 처리 기능 사용
- 이를 위해 repos.c 의 dav_repos_get_resource() 함수상에
- SBFS PUT0 Force Mode 인 경우에 대한 처리 로직 추가
=> 201 Code 및 Location 상에 자기자신의 정보를 저장하여 반환처리
- CHG: repos.c 의 dav_repos_get_resource() 함수 로직 정리
- 업무로직 단순화를 위한 goto 문 제거 및 로직정리.
- CHG: Makefile 수정
- 버그 수정으로 인해 버전 UP 처리 ( 1.9.17 -> 1.9.0105)
Revision 0081
-------------------
수정일 : 2010-01-25
수정자 : 유희곤
- CHG: SBFS 의 PUT0 에 의한 redirection 이중 처리 버그 수정
- SBFS 상에서 Client 가 PUT0 정보를 전달한 경우 이를 전달받은 opendav는
Redirect 정보를 확인하여 301 또는 201 응답을 주게 되어있음. ( 하상근 과장, 이제혁 대리 동의사항)
- 301 응답은 기본응답으로 Redirect 할 서버가 자기자신이 아닌 경우 전달
- 만약 rediect 할 서버가 자기자신인 경우 SBFS는 301 기본 응답이 아닌 201 응답을 전달하고
이때 201 응답시 Location 정보상에 자기자신의 host 정보를 전달.
- 버그 발생 원인
1.PUT0 발생시 dav_shared_du_put_target() 함수가 NULL 을 반환
=> NULL 반환값에 따른 오류처리가 수행되지 않음
2.201 응답 처리 후 기본 Rediect 처리 로직 다시 수행
=> Default Redirect 처리 로직을 Skip 처리해야 함.
- CHG: Makefile 수정
- 버그 수정으로 인해 버전 UP 처리 ( 1.9.16 -> 1.9.17)
Revision 0072
-------------------
수정일 : 2010-01-19
수정자 : 유희곤
- NEW: RCDB 상 t_dav_resource 테이블상에 file_lastmodified column 생성을 위한 Query 문 등록
- QUERY
-- Column: file_lastmodified
ALTER TABLE t_dav_resource ADD COLUMN file_lastmodified bigint;
ALTER TABLE t_dav_resource ALTER COLUMN file_lastmodified SET STORAGE PLAIN;
ALTER TABLE t_dav_resource ALTER COLUMN file_lastmodified SET DEFAULT 0;
COMMENT ON COLUMN t_dav_resource.file_lastmodified IS '파일 속성 중 최종 수정 시각';
Revision 0071
-------------------
수정일 : 2010-01-19
수정자 : 유희곤
- CHG: SBFS Client 에서 전달받는 ModifyTime 정보 저장처리
- 기존 SBFS Client 로 부터 ModifyTime 정보 수신시 get_lastmodified column 수정
=> Volume 용량 계산시 문제발생
- 전달받는 ModifyTime 정보는 File Attribute 속성이므로 이를 처리하기 위한 로직 수정
=> t_dav_resource table 상에 file_lastmodified column 추가
=> ModifyTime 정보 수신시 file_lastmodified UPDATE 처리
=> row INSERT 처리시 file_lastmodified 정보는 creation_date 정보와 동일하게 INSERT 처리
=> 파일, 디렉토리의 복사, 이동 처리시에는 기존 file_lastmodified 정보를 복사처리함
- CHG: 파일 정보 조회시(PROFIND) 최종변경일자 전달정보 수정
- sp-console 등으로 파일 정보 조회시 기존 get_lastmodified 필드가 아닌
- file_lastmodified 정보가 전달되도록 수정 ( dbms.c 의 dbms_get_collection_resource())
- CHG: 함수 삭제
- 기존 ModifyTime 관련 get_lastmodified column UPDATE 처리 함수 삭제처리 ( 사용안함)
- CHG: Makefile 수정
- Version 정보 처리 관련 통일화
- 이번 수정사항으로 인해 버전 UP 처리 ( 1.9.15 -> 1.9.16)
Revision 0069
-------------------
수정일 : 2010-01-14
수정자 : 유희곤
- CHG: SBFS 용 sh-opendav 최신소스 등록
- 기존 svn://doit.solbox.com/old/sbfs/sh-opendav 에 존재하는 최신 소스(Rev 184)를 SVN 에 등록함
( 해당 소스는 2009-12-07 SBFS Filelock 제거 기능까지 김오종 대리에 의해 추가된 버전이며 실제 테스트망에 배포된 버전임)
- 등록시 불필요한 파일 삭제
c : grep 결과저장파일
http_code_in_opendav.txt : grep 결과저장파일
repos.loT : compile시 생성되는 object 파일
tags : vi 용 plugin 메타파일
test_disk.c : 디스크 용량 검색 관련 테스트 코드파일
Revision 0068
-------------------
수정일 : 2010-01-14
수정자 : 유희곤
- NEW: SBFS 프로젝트 지원을 위한 sh-opendav 용 branche 생성 처리
- trunk/fhs/sh-opendav (Rev 65) 을 base로 하여 branche 생성함.
Revision 0065
-------------------
수정일 : 2010-01-14
수정자 : 유희곤
- NEW: SVN 신규 등록
- 기존 svn://doit.solbox.com/old/rts/ics10/sh-opendav 에 존재하는 최신 소스(Rev 147)를 SVN 에 신규등록함.
- 해당 소스는 이전 하상근 과장이 2009-08-31 까지 작업한 최신 소스로 판단됨 ( elenoa 작업은 2009-04-10 까지)
- 기존 svn://doit.solbox.com/old/rts/ics15/sh-opendav 에 존재하는 소스는
최신 수정일(2007-07-13)을 비교하여 볼때 최신소스라고 판단할 근거가 빈약함.
- 본 소스에 대한 이전 History 정보는 svn://doit.solbox.com/old/rts/ics10/sh-opendav Log 를 참조.
- NEW: Changelog.txt 파일 등록
- 앞으로 각 작업에 대한 로그를 확인하도록 Changelog.txt 파일을 추가