Update of /cvsroot/mod-auth/mod_authn_cache/src
In directory sc8-pr-cvs1:/tmp/cvs-serv12565
Modified Files:
mod_authn_cache.c
Removed Files:
authn_scache.c authn_scache_shmht.c authn_util_table.c
authn_util_table.h
Log Message:
little progress. code is evil however.
Index: mod_authn_cache.c
===================================================================
RCS file: /cvsroot/mod-auth/mod_authn_cache/src/mod_authn_cache.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** mod_authn_cache.c 30 Dec 2003 01:13:54 -0000 1.4
--- mod_authn_cache.c 2 Jan 2004 22:59:41 -0000 1.5
***************
*** 103,106 ****
--- 103,108 ----
apr_sockaddr_t *sockaddr;
apr_socket_t *sock;
+ char* line_buff;
+ apr_size_t line_buff_size;
} mcd_res_t;
***************
*** 113,116 ****
--- 115,121 ----
mcdres = apr_palloc(pool, sizeof(*mcdres));
+ mcdres->line_buff = NULL;
+ mcdres->line_buff_size = 0;
+
rv = apr_sockaddr_info_get(&mcdres->sockaddr, DFLT_HOSTNAME, APR_UNSPEC, DFLT_PORT, 0, pool);
if (rv != APR_SUCCESS) {
***************
*** 118,122 ****
return rv;
}
! if (apr_socket_create(&mcdres->sock, mcdres->sockaddr->family, SOCK_STREAM, 0,
pool) != APR_SUCCESS) {
ap_log_perror(APLOG_MARK, APLOG_ERR, rv, pool, "apr_socket_create");
--- 123,127 ----
return rv;
}
! if (apr_socket_create_ex(&mcdres->sock, mcdres->sockaddr->family, SOCK_STREAM, 0,
pool) != APR_SUCCESS) {
ap_log_perror(APLOG_MARK, APLOG_ERR, rv, pool, "apr_socket_create");
***************
*** 150,161 ****
}
! static apr_status_t mcd_get(mcd_res_t mcd, const char* key) {
! apr_status_t rv = APR_SUCCESS;
return rv;
}
! static apr_status_t mcd_put(mcd_res_t mcd, const char* key) {
apr_status_t rv = APR_SUCCESS;
return rv;
--- 155,259 ----
}
! #define RECVLEN 512
!
! static apr_status_t getLine(request_rec * r, mcd_res_t* mcd, char *str, apr_size_t count) {
! apr_status_t rv = APR_SUCCESS;
! apr_size_t recvlen;
! char *recv = NULL;
! char *s;
! apr_size_t recv_total = 0;
!
! recvlen = RECVLEN;
! recv = apr_palloc(r->pool, RECVLEN);
! memset(recv, 0, RECVLEN);
!
! if(mcd->line_buff_size == 0) {
! mcd->line_buff = apr_palloc(r->pool, count);
! memset(mcd->line_buff, 0, count);
! }
! else { // existing line buffer
!
! }
!
! while(1){
! rv = apr_socket_recv(mcd->sock, recv, &recvlen);
! if (rv != APR_SUCCESS) {
! ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, "getLine: apr_socket_recv");
! return rv;
! }
! recv[recvlen] = 0;
!
! if(recvlen+recv_total > count) {
! // line is too big.
! recv[(recvlen+recv_total) - count] = 0;
! str = apr_pstrcat(r->pool, mcd->line_buff, recv, NULL);
!
! break;
! }
! // find newline!
! s = strstr(recv, "\r\n");
! if (!s) {
! // newline not found. lets append to the buffer and try again.
! mcd->line_buff = apr_pstrcat(r->pool, mcd->line_buff, recv, NULL);
! mcd->line_buff_size += recvlen;
! continue;
! }
! else {
! // newline was found. stop at it.
! *s = 0; // terminate on the \r
! *s++; // \r
! *s = 0; // terminate on the \n
! str = apr_pstrcat(r->pool, mcd->line_buff, recv, NULL);
! // do we have an extra string left over?
! if( (recvlen-2) > strlen(recv) ) {
! *s++; // everything after the newline
! mcd->line_buff = apr_pstrcat(r->pool, recv, NULL);
! mcd->line_buff_size = strlen(recv);
! }
! else {
! // hmm ended on a newline?
! mcd->line_buff_size = 0;
! }
! break;
! }
! }
!
! // free buffers!
!
! return APR_SUCCESS;
! }
!
! static apr_status_t mcd_get(request_rec * r, mcd_res_t* mcd, const char* key, char* value) {
! apr_status_t rv = APR_SUCCESS;
! apr_size_t sendlen;
! char *command;
!
! command = apr_psprintf(r->pool, "get %s\r\n", key);
! sendlen = strlen(command);
+ rv = apr_socket_send(mcd->sock, command, &sendlen);
+ if (rv != APR_SUCCESS) {
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, "mcd_get: apr_socket_send");
+ return rv;
+ }
+ getLine(r, mcd, command, 5000);
+
return rv;
}
! static apr_status_t mcd_set(request_rec * r, mcd_res_t* mcd, const char* key) {
apr_status_t rv = APR_SUCCESS;
+ apr_size_t sendlen;
+ char *command;
+
+ command = apr_psprintf(r->pool, "set %s\r\n", key);
+ sendlen = strlen(command);
+
+ rv = apr_socket_send(mcd->sock, command, &sendlen);
+ if (rv != APR_SUCCESS) {
+ ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, "mcd_get: apr_socket_send");
+ return rv;
+ }
+ getLine(r, mcd, command, 5000);
return rv;
***************
*** 249,253 ****
{
authn_status auth_result;
!
authn_provider_list *current_provider;
authn_cache_conf_t *conf = ap_get_module_config(r->per_dir_config,
--- 347,352 ----
{
authn_status auth_result;
! char* foo;
! mcd_res_t *mcd;
authn_provider_list *current_provider;
authn_cache_conf_t *conf = ap_get_module_config(r->per_dir_config,
***************
*** 255,258 ****
--- 354,360 ----
current_provider = conf->providers;
+
+ apr_reslist_acquire(reslist_pool, (void **) &mcd);
+ mcd_get(r, mcd, "foo", foo);
do {
--- authn_scache.c DELETED ---
--- authn_scache_shmht.c DELETED ---
--- authn_util_table.c DELETED ---
--- authn_util_table.h DELETED ---
|