Hello, I have a question regarding sourcing the vpopmail.mysql config file.
The first line reflect the reading mysql db server. If there is no second line the same values are taken for the update mysql db server. I am talking about vpopmail-5.4.25. Here is parsing the first line of vpopmail.mysql in the vmysql.c which is used for the reading database server: 142 sprintf(config, "%s/etc/%s", VPOPMAILDIR, "vpopmail.mysql"); 143 144 fp = fopen(config, "r"); 145 if (fp == NULL) { 146 fprintf(stderr, "vmysql: can't read settings from %s\n", config); 147 return(VA_NO_AUTH_CONNECTION); 148 } 149 150 /* skip comments and blank lines */ 151 do { 152 eof = (fgets (conn_info, sizeof(conn_info), fp) == NULL); 153 } while (!eof && ((*conn_info == '#') || (*conn_info == '\n'))); 154 155 if (eof) { 156 /* no valid data read, return error */ 157 fprintf(stderr, "vmysql: no valid settings in %s\n", config); 158 return(VA_NO_AUTH_CONNECTION); 159 } 160 161 conf_read = strdup(conn_info); 162 MYSQL_READ_SERVER = strtok(conf_read, delimiters); 163 if (MYSQL_READ_SERVER == NULL) return VA_PARSE_ERROR01; 164 MYSQL_READ_SOCKET = strtok(NULL, delimiters); 165 if (MYSQL_READ_SOCKET == NULL) return VA_PARSE_ERROR; 166 167 if (MYSQL_READ_SOCKET[0] != '/') { 168 MYSQL_READ_PORT = atoi(MYSQL_READ_SOCKET); 169 MYSQL_READ_SOCKET = NULL; 170 } 171 172 MYSQL_READ_USER = strtok(NULL, delimiters); 173 if (MYSQL_READ_USER == NULL) return VA_PARSE_ERROR03; 174 MYSQL_READ_PASSWD = strtok(NULL, delimiters); 175 if (MYSQL_READ_PASSWD == NULL) return VA_PARSE_ERROR04; 176 MYSQL_READ_DATABASE = strtok(NULL, delimiters); 177 if (MYSQL_READ_DATABASE == NULL) return VA_PARSE_ERROR05; Now reading the second line for the update server information. If there is no second line use the previous obtained values from the reading database server, else parse the second line: 179 /* skip comments and blank lines */ 180 do { 181 eof = (fgets (conn_info, sizeof(conn_info), fp) == NULL); 182 } while (!eof && ((*conn_info == '#') || (*conn_info == '\n'))); 183 184 if (eof) { 185 /* re-use read-only settings for update */ 186 MYSQL_UPDATE_SERVER = MYSQL_READ_SERVER; 187 MYSQL_UPDATE_PORT = MYSQL_READ_PORT; 188 MYSQL_UPDATE_USER = MYSQL_READ_USER; 189 MYSQL_UPDATE_PASSWD = MYSQL_READ_PASSWD; 190 MYSQL_UPDATE_DATABASE = MYSQL_READ_DATABASE; 191 MYSQL_UPDATE_SOCKET = MYSQL_READ_SOCKET; 192 } else { 193 conf_update = strdup(conn_info); 194 MYSQL_UPDATE_SERVER = strtok(conf_update, delimiters); 195 if (MYSQL_UPDATE_SERVER == NULL) return VA_PARSE_ERROR06; 196 197 MYSQL_READ_SOCKET = strtok(NULL, delimiters); 198 if (MYSQL_READ_SOCKET == NULL) return VA_PARSE_ERROR; 199 200 if (MYSQL_READ_SOCKET[0] != '/') { 201 MYSQL_READ_PORT = atoi(MYSQL_READ_SOCKET); 202 MYSQL_READ_SOCKET = NULL; 203 } 204 205 MYSQL_UPDATE_USER = strtok(NULL, delimiters); 206 if (MYSQL_UPDATE_USER == NULL) return VA_PARSE_ERROR08; 207 MYSQL_UPDATE_PASSWD = strtok(NULL, delimiters); 208 if (MYSQL_UPDATE_PASSWD == NULL) return VA_PARSE_ERROR09; 209 MYSQL_UPDATE_DATABASE = strtok(NULL, delimiters); 210 if (MYSQL_UPDATE_DATABASE == NULL) return VA_PARSE_ERROR10; 211 } So now I am wondering why line 197-202 is setting the values to MYSQL_READ_SOCKET and MYSQL_READ_PORT instead of MYSQL_UPDATE_SOCKET and MYSQL_UPDATE_PORT? In my opinion these values should be set to MYSQL_UPDATE_SOCKET and MYSQL_UPDATE_PORT? Regards, Hartmut !DSPAM:475682a432008129516775!