Changeset 76d9e48076935daad9912f8ada1c5976db8f1e85

Show
Ignore:
Timestamp:
08/13/09 15:00:05 (5 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1250175605 +0000
git-parent:

[a3f2dffe9dafd40d6fd7595a4a5ba4fdd073ddce]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1250175605 +0000
Message:

first whack at good error messages on failed connections. refs #164

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/stratcon_jlog_streamer.c

    r69a11e3 r76d9e48  
    344344  noit_connection_ctx_t *nctx = closure; 
    345345  const char *cert, *key, *ca, *ciphers; 
     346  char remote_str[128], tmp_str[128]; 
    346347  eventer_ssl_ctx_t *sslctx; 
     348  int aerrno, len; 
     349  socklen_t aerrno_len = sizeof(aerrno); 
     350 
     351  if(getsockopt(e->fd,SOL_SOCKET,SO_ERROR, &aerrno, &aerrno_len) == 0) 
     352    if(aerrno != 0) goto connect_error; 
     353  aerrno = 0; 
    347354 
    348355  if(mask & EVENTER_EXCEPTION) { 
    349     if(write(e->fd, e, 0) == -1
    350       noitL(noit_error, "socket error: %s\n", strerror(errno))
     356    if(aerrno == 0 && (write(e->fd, e, 0) == -1)
     357      aerrno = errno
    351358 connect_error: 
     359    switch(nctx->r.remote.sa_family) { 
     360      case AF_INET: 
     361        len = sizeof(struct sockaddr_in); 
     362        inet_ntop(nctx->r.remote.sa_family, &nctx->r.remote_in.sin_addr, 
     363                  tmp_str, len); 
     364        snprintf(remote_str, sizeof(remote_str), "%s:%d", 
     365                 tmp_str, ntohs(nctx->r.remote_in.sin_port)); 
     366        break; 
     367      case AF_INET6: 
     368        len = sizeof(struct sockaddr_in6); 
     369        inet_ntop(nctx->r.remote.sa_family, &nctx->r.remote_in6.sin6_addr, 
     370                  tmp_str, len); 
     371        snprintf(remote_str, sizeof(remote_str), "%s:%d", 
     372                 tmp_str, ntohs(nctx->r.remote_in6.sin6_port)); 
     373       break; 
     374      case AF_UNIX: 
     375        len = SUN_LEN(&(nctx->r.remote_un)); 
     376        snprintf(remote_str, sizeof(remote_str), "%s", nctx->r.remote_un.sun_path); 
     377        break; 
     378      default: 
     379        snprintf(remote_str, sizeof(remote_str), "(unknown)"); 
     380    } 
     381    noitL(noit_error, "Error connecting to %s: %s\n", 
     382          remote_str, strerror(aerrno)); 
    352383    eventer_remove_fd(e->fd); 
    353384    e->opset->close(e->fd, &mask, e);