← Back to team overview

linux-traipu team mailing list archive

[Bug 944428] [NEW] libdrizzle fails to connect to uds

 

Public bug reported:

A successful connect() call when connecting to a unix domain socket
results in an infinite loop of calls back to drizzle_state_connect().
In conn.cc I had to add a drizzle_state_pop(con) to get a successful uds
connection. I'm not sure if this is the correct way to fix it but it
seems to work.

    do {
      if (connect(con->fd, (struct sockaddr *)&servAddr, sizeof(servAddr)) < 0)
      {
        switch (errno)
        {
        case EINPROGRESS:
        case EALREADY:
        case EINTR:
          continue;

        case EISCONN: /* We were spinning waiting on connect */
          {
            break;
          }

        default:
          con->drizzle->last_errno= errno;
          return DRIZZLE_RETURN_COULD_NOT_CONNECT;
        }
      }
      //This else added by eric to get a successful connection
      else
      {
        drizzle_state_pop(con);        
        break;
      }
    } while (0);

** Affects: drizzle
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of UBUNTU -
AL - BR, which is subscribed to Drizzle.
https://bugs.launchpad.net/bugs/944428

Title:
  libdrizzle fails to connect to uds

Status in A Lightweight SQL Database for Cloud Infrastructure and Web Applications:
  New

Bug description:
  A successful connect() call when connecting to a unix domain socket
  results in an infinite loop of calls back to drizzle_state_connect().
  In conn.cc I had to add a drizzle_state_pop(con) to get a successful
  uds connection. I'm not sure if this is the correct way to fix it but
  it seems to work.

      do {
        if (connect(con->fd, (struct sockaddr *)&servAddr, sizeof(servAddr)) < 0)
        {
          switch (errno)
          {
          case EINPROGRESS:
          case EALREADY:
          case EINTR:
            continue;

          case EISCONN: /* We were spinning waiting on connect */
            {
              break;
            }

          default:
            con->drizzle->last_errno= errno;
            return DRIZZLE_RETURN_COULD_NOT_CONNECT;
          }
        }
        //This else added by eric to get a successful connection
        else
        {
          drizzle_state_pop(con);        
          break;
        }
      } while (0);

To manage notifications about this bug go to:
https://bugs.launchpad.net/drizzle/+bug/944428/+subscriptions


Follow ups

References