Changeset 10977
- Timestamp:
- 06/16/07 12:03:21 (2 years ago)
- Files:
-
- trunk/midgard/httpd/apache2/midgard-apache2.c (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/midgard/httpd/apache2/midgard-apache2.c
r10949 r10977 537 537 } 538 538 539 GHashTable *hash_cache = NULL; 540 539 541 while(cnfnames[i] != NULL) { 540 542 … … 555 557 GError *err = NULL; 556 558 557 if(mgd && scfg->config) 559 if(mgd && scfg->config) 558 560 connected = 559 midgard_connection_struct_open_config(mgd, scfg->config, err); 561 midgard_connection_struct_open_config(mgd, 562 scfg->config, &hash_cache, err); 563 560 564 561 565 if(err != NULL); … … 584 588 } 585 589 590 if(hash_cache) g_hash_table_destroy(hash_cache); 586 591 g_strfreev(cnfnames); 587 592 … … 630 635 } 631 636 637 static void __list_string_free(GList *l) 638 { 639 if(l == NULL) 640 return; 641 642 for ( l ; l != NULL; l = l->next ) { 643 644 if(l->data != NULL) 645 g_free(l->data); 646 647 l->data = NULL; 648 } 649 650 g_list_free(l); 651 l = NULL; 652 653 return; 654 } 655 632 656 /* ap_hook_translate_name */ 633 657 static int … … 636 660 midgard_http_server_config *scfg; 637 661 midgard_http_dir_config *dcfg; 638 MidgardRequest *rcfg;639 662 midgard_http_req_result result = MIDGARD_HTTP_FOUND_NONE; 640 663 int auth_res; 641 /* request_rec *subreq; */ 642 643 /* we don't do subrequests */ 664 665 /* need to be freed */ 666 MidgardRequest *rcfg = NULL; 667 GList *r_pages = NULL; 668 GList *r_argv = NULL; 669 gchar *uri_prefix = NULL; 670 gchar *host_prefix = NULL; 671 GList *list = NULL; 672 644 673 if (r->main != NULL) 645 674 return DECLINED; … … 719 748 720 749 /* Find prefix, splits uri */ 721 gchar *uri_prefix = NULL; 722 GList *list = midgard_http_uri2list(r->uri); 750 list = midgard_http_uri2list(r->uri); 723 751 724 752 if(list) { … … 732 760 ap_get_server_name (r), ap_get_server_port (r), uri_prefix); 733 761 if (!host) { 734 /* FIXME, free list returned from midgard_http_uri2list and uri_prefix */ 762 __list_string_free(list); 763 g_free(uri_prefix); 735 764 ap_log_rerror(APLOG_MARK, APLOG_WARNING | APLOG_NOERRNO, 0, r, 736 765 "Midgard: host record for %s:%d not found", 737 766 ap_get_server_name (r), ap_get_server_port (r)); 738 return DECLINED; 767 result = MIDGARD_HTTP_FOUND_NONE; 768 goto MIDGARD_TH_FREE_DATA; 739 769 } 740 770 741 771 /* TODO : host auth here ? */ 742 743 gchar *host_prefix;744 772 g_object_get(G_OBJECT(host), "prefix", &host_prefix, NULL); 745 773 746 774 if(host_prefix != NULL && g_str_equal(host_prefix, uri_prefix)){ 747 775 748 if(list) { 749 750 g_free(list->data); 751 list = g_list_remove_link(list, list); 752 } 776 if(list) 777 list = g_list_remove(list, list->data); 753 778 754 779 ap_log_rerror(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, 0, r, 755 "mod_midgard: found prefixedhost '%s:%d%s')",780 "mod_midgard: found host '%s:%d%s')", 756 781 ap_get_server_name (r), ap_get_server_port (r), 757 host_prefix );782 host_prefix == NULL ? "" : host_prefix); 758 783 } 759 784 … … 797 822 */ 798 823 799 GList *r_styles = NULL;800 GList *r_pages = NULL;801 GList *r_argv = NULL;802 803 824 /* Create midgard_request object */ 804 825 rcfg = midgard_request_new(); … … 814 835 NULL); 815 836 816 /* TODO , enable when core supports name instead of guid 817 * midgard_connection_set_sitegroup(scfg->mgd, sg->guid); */ 837 const gchar *req_sg = 838 midgard_connection_get_sitegroup_from_id(scfg->mgd, sg_id); 839 midgard_connection_set_sitegroup(scfg->mgd, req_sg); 818 840 819 841 /* Set request's language */ … … 843 865 g_value_unset(&pval); 844 866 867 /* FIXME , we should handle this: free data and return */ 845 868 if(!rootpage){ 846 869 ap_log_rerror(APLOG_MARK, APLOG_CRIT | APLOG_NOERRNO, 0, r, 847 870 "mod_midgard: root page is not set for host %s:%d%s)", 848 871 ap_get_server_name (r), ap_get_server_port (r), uri_prefix); 849 return DECLINED; 872 result = MIDGARD_HTTP_FOUND_NONE; 873 goto MIDGARD_TH_FREE_DATA; 850 874 } 851 875 … … 961 985 /* FIXME FIXME FIXME */ 962 986 /* Add boolean property value check if DB supports it */ 963 gchar *info_str ;987 gchar *info_str = NULL; 964 988 g_object_get(G_OBJECT(rp->data), "info", &info_str, NULL); 965 966 if( g_str_equal(info_str, "auth")) {989 990 if(info_str != NULL) { 967 991 968 rcfg->auth_required = TRUE; 992 if(g_str_equal(info_str, "auth")) 993 rcfg->auth_required = TRUE; 994 995 g_free(info_str); 969 996 } 970 971 g_free(info_str);972 997 } 973 998 … … 1003 1028 1004 1029 /* Free all remaining url parts */ 1005 for(list; list != NULL; list = list->next) { 1006 g_free(list->data); 1007 } 1008 1009 if(list) 1010 g_list_free(list); 1030 __list_string_free(list); 1011 1031 1012 1032 /* Free pages list */ … … 1025 1045 case MIDGARD_HTTP_FOUND_NONE: 1026 1046 1027 g_object_unref(rcfg); 1047 if(rcfg != NULL) 1048 g_object_unref(rcfg); 1028 1049 rcfg = NULL; 1050 1029 1051 g_object_unref(scfg->mgd); 1030 1052 scfg->mgd = NULL; … … 1039 1061 auth_res = _midgard_http_authenticate (r, scfg, rcfg); 1040 1062 1041 g_object_unref(rcfg); 1063 if(rcfg != NULL) 1064 g_object_unref(rcfg); 1042 1065 rcfg = NULL; 1066 1043 1067 g_object_unref(scfg->mgd); 1044 1068 scfg->mgd = NULL;
