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!