12.06.2015 Views

The Annoyance Filter.pdf - Fourmilab

The Annoyance Filter.pdf - Fourmilab

The Annoyance Filter.pdf - Fourmilab

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

§202 ANNOYANCE-FILTER POP3 PROXY SERVER CLASS DEFINITION 169<br />

202. Once we’ve determined the IP address of the POP3 server, we next need to open a socket<br />

connection to it on the TCP/IP port on which it listens.<br />

〈 Open connection to server 202 〉 ≡<br />

struct sockaddr in serverHost ;<br />

serverHost .sin family = AF_INET;<br />

serverSocket = socket (AF_INET, SOCK_STREAM, 0);<br />

if (serverSocket < 0) {<br />

perror ("POP3Proxy␣opening␣socket␣to␣POP␣server");<br />

cstat = −1;<br />

}<br />

else {<br />

if (popProxyTrace ) {<br />

cerr ≪ "POP3:␣serverSocket␣opened." ≪ endl ;<br />

}<br />

serverHost .sin port = htons (serverPort );<br />

memcpy ((char ∗) &serverHost .sin addr .s addr , (char ∗)(&serverIP ), sizeof<br />

serverHost .sin addr .s addr );<br />

errno = 0;<br />

do {<br />

cstat = connect (serverSocket , (struct sockaddr ∗) &(serverHost ), sizeof serverHost );<br />

if (popProxyTrace ) {<br />

cerr ≪ "POP3:␣serverSocket␣connected." ≪ endl ;<br />

}<br />

if (cstat ≡ 0) {<br />

if (popProxyTrace ) {<br />

cerr ≪ "POP3:␣Connected␣to␣POP␣server␣on␣" ≪ inet ntoa (serverHost .sin addr ) ≪<br />

":" ≪ ntohs (serverHost .sin port ) ≪ endl ;<br />

}<br />

break;<br />

}<br />

else {<br />

perror ("POP3Proxy␣connection␣to␣POP␣server␣failed");<br />

}<br />

} while (errno ≡ EINTR);<br />

if (cstat < 0) {<br />

cerr ≪ "POP3Proxy:␣Cannot␣connect␣to␣POP3␣server␣" ≪ serverName .c str ( ) ≪ endl ;<br />

}<br />

}<br />

This code is used in section 200.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!