Commit 66fbc60d authored by unknown's avatar unknown
Browse files

Merge willster.(none):/home/stewart/Documents/MySQL/5.0/ndb

into  willster.(none):/home/stewart/Documents/MySQL/5.0/bug13987-5.0_bugfixonly


ndb/include/mgmapi/mgmapi.h:
  Auto merged
ndb/src/mgmapi/mgmapi.cpp:
  Auto merged
parents d8730c3a db16cae5
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1091,6 +1091,19 @@ extern "C" {
   */
  int ndb_mgm_end_session(NdbMgmHandle handle);

  /**
   * ndb_mgm_get_fd
   *
   * get the file descriptor of the handle.
   * INTERNAL ONLY.
   * USE FOR TESTING. OTHER USES ARE NOT A GOOD IDEA.
   *
   * @param  handle NDB management handle
   * @return handle->socket
   *
   */
  int ndb_mgm_get_fd(NdbMgmHandle handle);

  /**
   * Get the node id of the mgm server we're connected to
   */
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ extern FileInputStream Stdin;
class SocketInputStream : public InputStream {
  NDB_SOCKET_TYPE m_socket;
  unsigned m_timeout;
  bool m_startover;
public:
  SocketInputStream(NDB_SOCKET_TYPE socket, unsigned readTimeout = 1000);
  char* gets(char * buf, int bufLen);
+24 −15
Original line number Diff line number Diff line
@@ -37,25 +37,34 @@ FileInputStream::gets(char * buf, int bufLen){
SocketInputStream::SocketInputStream(NDB_SOCKET_TYPE socket, 
				     unsigned readTimeout) 
  : m_socket(socket) {
  m_startover= true;
  m_timeout = readTimeout;
}

char*
SocketInputStream::gets(char * buf, int bufLen) {
  buf[0] = 77;
  assert(bufLen >= 2);
  int res = readln_socket(m_socket, m_timeout, buf, bufLen - 1);
  if(res == -1)
    return 0;
  if(res == 0 && buf[0] == 77){ // select return 0
  int offset= 0;
  if(m_startover)
  {
    buf[0]= '\0';
    m_startover= false;
  }
  else
    offset= strlen(buf);

  int res = readln_socket(m_socket, m_timeout, buf+offset, bufLen-offset);

  if(res == 0)
  {
    buf[0]=0;
  } else if(res == 0 && buf[0] == 0){ // only newline
    buf[0] = '\n';
    buf[1] = 0;
  } else {
    int len = strlen(buf);
    buf[len + 1] = '\0';
    buf[len] = '\n';
    return buf;
  }

  m_startover= true;

  if(res == -1)
    return 0;

  return buf;
}
+20 −15
Original line number Diff line number Diff line
@@ -158,8 +158,13 @@ ParserImpl::run(Context * ctx, const class Properties ** pDst,
    DBUG_RETURN(false);
  }

  if(ctx->m_currentToken[0] == 0){
  int last= strlen(ctx->m_currentToken);
  if(last>0)
    last--;

  if(ctx->m_currentToken[last] !='\n'){
    ctx->m_status = Parser<Dummy>::NoLine;
    ctx->m_tokenBuffer[0]= '\0';
    DBUG_RETURN(false);
  }

+14 −14
Original line number Diff line number Diff line
@@ -75,7 +75,6 @@ readln_socket(NDB_SOCKET_TYPE socket, int timeout_millis,
    return -1;
  }

  buf[0] = 0;
  const int t = recv(socket, buf, buflen, MSG_PEEK);

  if(t < 1)
@@ -87,27 +86,28 @@ readln_socket(NDB_SOCKET_TYPE socket, int timeout_millis,
  for(int i=0; i< t;i++)
  {
    if(buf[i] == '\n'){
      recv(socket, buf, i+1, 0);
      buf[i] = 0;
      int r= recv(socket, buf, i+1, 0);
      buf[i+1]= 0;
      if(r < 1) {
        fcntl(socket, F_SETFL, sock_flags);
        return -1;
      }

      if(i > 0 && buf[i-1] == '\r'){
        i--;
        buf[i] = 0;
        buf[i-1] = '\n';
        buf[i]= '\0';
      }

      fcntl(socket, F_SETFL, sock_flags);
      return t;
      return r;
    }
  }

  if(t == (buflen - 1)){
    recv(socket, buf, t, 0);
    buf[t] = 0;
  int r= recv(socket, buf, t, 0);
  if(r>=0)
    buf[r] = 0;
  fcntl(socket, F_SETFL, sock_flags);
    return buflen;
  }

  return 0;
  return r;
}

extern "C"
Loading