~linuxjedi/libdrizzle/5.1-docs2

« back to all changes in this revision

Viewing changes to libdrizzle/conn.cc

  • Committer: Continuous Integration
  • Date: 2013-01-13 20:18:49 UTC
  • mfrom: (90.1.4 5.1-malloc-replace)
  • Revision ID: ci@drizzle.org-20130113201849-a0to8usgbnbf5sch
Merge lp:~linuxjedi/libdrizzle/5.1-malloc-replace Build: jenkins-Libdrizzle-46

Show diffs side-by-side

added added

removed removed

Lines of Context:
1126
1126
  {
1127
1127
    con->buffer_ptr= con->buffer;
1128
1128
  }
1129
 
  else if ((con->buffer_ptr - con->buffer) > (DRIZZLE_MAX_BUFFER_SIZE / 2))
 
1129
  else if ((size_t)(con->buffer_ptr - con->buffer) > (con->buffer_allocation / 2))
1130
1130
  {
1131
1131
    memmove(con->buffer, con->buffer_ptr, con->buffer_size);
1132
1132
    con->buffer_ptr= con->buffer;
1149
1149
 
1150
1150
  while (1)
1151
1151
  {
1152
 
    size_t available_buffer= (size_t)DRIZZLE_MAX_BUFFER_SIZE - ((size_t)(con->buffer_ptr - con->buffer) + con->buffer_size);
 
1152
    size_t available_buffer= con->buffer_allocation - ((size_t)(con->buffer_ptr - con->buffer) + con->buffer_size);
 
1153
    if (available_buffer == 0)
 
1154
    {
 
1155
      if (con->buffer_allocation >= DRIZZLE_MAX_BUFFER_SIZE)
 
1156
      {
 
1157
        drizzle_set_error(con, __func__,
 
1158
                          "buffer too small:%zu", con->packet_size + 4);
 
1159
        return DRIZZLE_RETURN_INTERNAL_ERROR;
 
1160
      }
 
1161
      // Shift data to beginning of the buffer then resize
 
1162
      // This means that buffer_ptr isn't screwed up by realloc pointer move
 
1163
      if (con->buffer_ptr != con->buffer)
 
1164
      {
 
1165
        memmove(con->buffer, con->buffer_ptr, con->buffer_size);
 
1166
      }
 
1167
      con->buffer_allocation= con->buffer_allocation * 2;
 
1168
      con->buffer= (unsigned char*)realloc(con->buffer, con->buffer_allocation);
 
1169
      drizzle_log_debug(con, "buffer resized to: %zu", con->buffer_allocation);
 
1170
      con->buffer_ptr= con->buffer;
 
1171
      available_buffer= con->buffer_allocation - con->buffer_size;
 
1172
    }
1153
1173
 
1154
1174
#ifdef USE_OPENSSL
1155
1175
    if (con->ssl_state == DRIZZLE_SSL_STATE_HANDSHAKE_COMPLETE)
1166
1186
    errno= translate_windows_error();
1167
1187
#endif // defined _WIN32 || defined __CYGWIN__
1168
1188
 
1169
 
    drizzle_log_crazy(con, "read fd=%d recv=%zd ssl= %d errno=%s",
1170
 
                      con->fd, read_size, 
 
1189
    drizzle_log_crazy(con, "read fd=%d avail= %zd recv=%zd ssl= %d errno=%s",
 
1190
                      con->fd, available_buffer, read_size, 
1171
1191
                      (con->ssl_state == DRIZZLE_SSL_STATE_HANDSHAKE_COMPLETE) ? 1 : 0,
1172
1192
                      strerror(errno));
1173
1193