/[libspopc]/session.c
ViewVC logotype

Diff of /session.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4 by ben, Thu Oct 15 23:10:35 2009 UTC revision 5 by ben, Thu Dec 10 11:54:10 2009 UTC
# Line 121  pop3sock_t ssl_prepare(const int port){ Line 121  pop3sock_t ssl_prepare(const int port){
121                  if (0 == SSL_UP) SSL_UP=SSL_library_init();                  if (0 == SSL_UP) SSL_UP=SSL_library_init();
122    
123                  if (1 != SSL_UP) {                  if (1 != SSL_UP) {
124    #ifdef WIN32
125                            closesocket(sock->sock);
126    #else
127                          close(sock->sock);                          close(sock->sock);
128    #endif
129                          free(sock);                          free(sock);
130                          perror("ssl_prepare.SSL_library_init");                          perror("ssl_prepare.SSL_library_init");
131                          return(NULL);                          return(NULL);
# Line 129  pop3sock_t ssl_prepare(const int port){ Line 133  pop3sock_t ssl_prepare(const int port){
133                  SSL_load_error_strings();                  SSL_load_error_strings();
134                  sock->ctx = SSL_CTX_new(SSLv23_client_method());                  sock->ctx = SSL_CTX_new(SSLv23_client_method());
135                  if (NULL == sock->ctx) {                  if (NULL == sock->ctx) {
136    #ifdef WIN32
137                            closesocket(sock->sock);
138    #else
139                          close(sock->sock);                          close(sock->sock);
140    #endif
141                          free(sock);                          free(sock);
142                          perror("ssl_prepare.SSLv23_client_method");                          perror("ssl_prepare.SSLv23_client_method");
143                          return(NULL);                          return(NULL);
# Line 140  pop3sock_t ssl_prepare(const int port){ Line 148  pop3sock_t ssl_prepare(const int port){
148                  }                  }
149                  sock->ssl = SSL_new(sock->ctx);                  sock->ssl = SSL_new(sock->ctx);
150                  if (NULL == sock->ssl) {                  if (NULL == sock->ssl) {
151    #ifdef WIN32
152                            closesocket(sock->sock);
153    #else
154                          close(sock->sock);                          close(sock->sock);
155    #endif
156                          SSL_CTX_free(sock->ctx);                          SSL_CTX_free(sock->ctx);
157                          free(sock);                          free(sock);
158                          perror("ssl_prepare.SSL_new");                          perror("ssl_prepare.SSL_new");
# Line 263  char* pop3_connect(pop3sock_t sock, stru Line 275  char* pop3_connect(pop3sock_t sock, stru
275          r=connect(sock->sock,(struct sockaddr*)connection,(socklen_t)sizeof(*connection));          r=connect(sock->sock,(struct sockaddr*)connection,(socklen_t)sizeof(*connection));
276          if ( r!=-1  && sock->ssl ) {          if ( r!=-1  && sock->ssl ) {
277                  if (SSL_connect(sock->ssl) == -1) {                  if (SSL_connect(sock->ssl) == -1) {
278    #ifdef WIN32
279                            closesocket(sock->sock);
280    #else
281                          close(sock->sock);                          close(sock->sock);
282    #endif
283                          return(NULL);                          return(NULL);
284                  }                  }
285                  if ( SSL_CERT ) {                  if ( SSL_CERT ) {
286                          if ( !SSL_get_peer_certificate(sock->ssl) ) {                          if ( !SSL_get_peer_certificate(sock->ssl) ) {
287    #ifdef WIN32
288                                    closesocket(sock->sock);
289    #else
290                                  close(sock->sock);                                                close(sock->sock);              
291    #endif
292                                  return(NULL);                                  return(NULL);
293                          }                          }
294                  }                  }
# Line 307  void pop3_disconnect(pop3sock_t sock, st Line 327  void pop3_disconnect(pop3sock_t sock, st
327          if (sock->sock>0)          if (sock->sock>0)
328          {          {
329                  shutdown(sock->sock,SHUT_RDWR);                  shutdown(sock->sock,SHUT_RDWR);
330    #ifdef WIN32
331                    closesocket(sock->sock);
332    #else
333                  close(sock->sock);                  close(sock->sock);
334    #endif
335          }          }
336          if (NULL != sock->ssl) {          if (NULL != sock->ssl) {
337                  /* a memory leak has been reported with: SSL_shutdown(sock->ssl);*/                  /* a memory leak has been reported with: SSL_shutdown(sock->ssl);*/
# Line 323  void pop3_disconnect(pop3sock_t sock, st Line 347  void pop3_disconnect(pop3sock_t sock, st
347  #ifndef WIN32  #ifndef WIN32
348                  shutdown(sock,SHUT_RDWR);                  shutdown(sock,SHUT_RDWR);
349  #endif  #endif
350    #ifdef WIN32
351                    closesocket(sock);
352    #else
353                  close(sock);                  close(sock);
354    #endif
355          }          }
356  #endif  #endif
357          /* free deep copy of struct hostent */          /* free deep copy of struct hostent */

Legend:
Removed from v.4  
changed lines
  Added in v.5

  ViewVC Help
Powered by ViewVC 1.1.26