Commit c848482
committed
A checkbox that could not say STARTTLS, and three actions with no button
External accounts. The "Use SSL/TLS" checkbox on an external POP3 download
account was a boolean over a four-valued setting, and the mapping was lossy in
both directions: InterfaceFetchAccount::get_UseSSL is ConnectionSecurity ==
CSSSL, and put_UseSSL writes CSSSL or CSNone. So an account already set to
STARTTLS read back as unticked, and saving that dialog rewrote it to implicit
TLS. Implicit TLS on port 110 does not connect, which made STARTTLS effectively
unreachable from the GUI for exactly the providers that require it.
The server has supported all four values on this path throughout:
POP3ClientConnection sends CAPA, issues STLS, and on "STARTTLS required"
abandons the download with a log line when the far end does not advertise it.
The field is now that choice, worded with the port each option implies, because
changing the security without changing the port is the commonest way an
external account is configured and then never downloads anything.
While doing it, combo columns in every collection editor stopped rendering
their raw enum number. A grid cell reading "1" beside a dialog reading
"SSL/TLS" is not a cosmetic problem: it is the difference between a list of
accounts you can scan for the unencrypted row and one you cannot.
Database tuning. NumberOfConnections, ConnectionAttempts and
ConnectionAttemptsDelay live in [Database] and had no editor anywhere. The rest
of that section decides whether the server starts at all and stays with the
setup wizard; these three decide how it behaves once connected, and a server
that cannot reach its database for the first half-minute after a reboot had no
way to lengthen the window without hand-editing. The pool size card reads the
configured database type and says outright, before you change it, that the
built-in database forces the value to 1 whatever is set - which is what
IniFileSettings.cpp does and what no GUI has ever admitted.
That needed a section-aware INI row. IniFeatureStore writes [Settings] only, so
a [Database] key edited through the existing row type would have been written
into [Settings], where the server never looks - saved, correct on reload, and
inert. ReadFrom/WriteTo exist to make that mistake impossible to make quietly.
Three actions that existed over COM and nowhere else. MessageIndexing.Index()
and .Clear() are now buttons on Performance > Indexing, and
Utilities.PerformMaintenance(eUpdateIMAPFolderUID) is a button on the IMAP tab.
The indexing buttons say what they actually do rather than what they look like
they do. MessageIndexer::IndexNow() does not index - it sets an event that a
worker thread waits on - and that worker is only started when indexing is
enabled. So "Index now" with indexing switched off would signal a thread that
is not running and report success having done nothing; it now checks first and
says so. And the counts it reports are labelled as the state before the pass,
because they are: the pass has not happened when the button returns. Reporting
them as "now" would have looked exactly like a stuck indexer.
The folder-UID repair is worth having a button because of what it repairs:
Maintenance::RecalculateFolderUID_ raises each IMAP folder's UID counter to the
highest UID the folder actually holds. A counter that has fallen behind hands
the same UID out twice, and a client that caches by UID then shows one message
in place of another. It never lowers a counter, so it cannot cause the fault it
fixes - and the card says so, because an administrator will not run a repair
they cannot reason about.
Control Panel: 533 passed, 0 failed. Server unchanged.1 parent 069fa77 commit c848482
5 files changed
Lines changed: 498 additions & 9 deletions
File tree
- hmailserver/source/Tools/ControlPanel
- Services
- Views
Lines changed: 28 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
113 | 140 | | |
114 | 141 | | |
115 | 142 | | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
| 143 | + | |
121 | 144 | | |
122 | 145 | | |
123 | 146 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
201 | 201 | | |
202 | 202 | | |
203 | 203 | | |
| 204 | + | |
| 205 | + | |
204 | 206 | | |
205 | 207 | | |
206 | 208 | | |
| |||
213 | 215 | | |
214 | 216 | | |
215 | 217 | | |
| 218 | + | |
216 | 219 | | |
217 | 220 | | |
218 | 221 | | |
| |||
Lines changed: 51 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
183 | 183 | | |
184 | 184 | | |
185 | 185 | | |
186 | | - | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
187 | 196 | | |
188 | 197 | | |
189 | 198 | | |
| |||
383 | 392 | | |
384 | 393 | | |
385 | 394 | | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
386 | 404 | | |
387 | | - | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
388 | 437 | | |
389 | 438 | | |
390 | 439 | | |
| |||
Lines changed: 40 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
19 | 35 | | |
20 | 36 | | |
21 | 37 | | |
| |||
167 | 183 | | |
168 | 184 | | |
169 | 185 | | |
170 | | - | |
| 186 | + | |
| 187 | + | |
171 | 188 | | |
172 | 189 | | |
173 | 190 | | |
| |||
186 | 203 | | |
187 | 204 | | |
188 | 205 | | |
189 | | - | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
190 | 228 | | |
191 | 229 | | |
192 | 230 | | |
| |||
0 commit comments