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 : 형식으로 전달받는 경우 - 해당 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 파일을 추가