~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle-2.0/libdrizzle/conn.cc

  • Committer: Monty Taylor
  • Date: 2011-04-06 21:23:45 UTC
  • mfrom: (2268.1.4 build)
  • Revision ID: mordred@inaugust.com-20110406212345-a7w7nkcuq60ybi4z
Merge Monty: Windows Fixes
Merge Olaf: open_table refactor

Show diffs side-by-side

added added

removed removed

Lines of Context:
834
834
  return DRIZZLE_RETURN_OK;
835
835
}
836
836
 
837
 
#ifdef _WIN32
838
 
/*Mapping windows specific error codes to Posix*/
839
 
static int drizzle_get_windows_errno()
840
 
{
841
 
  int windows_error = WSAGetLastError();
842
 
    switch(windows_error) {
843
 
    case WSAEINVAL:
844
 
    case WSAEALREADY:
845
 
    case WSAECONNREFUSED:
846
 
    case WSAEWOULDBLOCK:
847
 
      return EINPROGRESS;
848
 
      break;
849
 
    case WSAENETUNREACH:
850
 
      return ENETUNREACH;
851
 
      break;
852
 
    case WSAETIMEDOUT:
853
 
      return ETIMEDOUT;
854
 
      break;
855
 
    case WSAECONNRESET:
856
 
      return ECONNRESET;
857
 
      break;
858
 
    case WSAEADDRINUSE:
859
 
      return EADDRINUSE;
860
 
      break;
861
 
    case WSAEOPNOTSUPP:
862
 
      return EOPNOTSUPP;
863
 
      break;
864
 
    case WSAENOPROTOOPT:
865
 
      return ENOPROTOOPT;
866
 
      break;
867
 
    default:
868
 
      return windows_error;
869
 
      break;
870
 
    }
871
 
}
872
 
#endif
873
 
 
874
837
drizzle_return_t drizzle_state_connect(drizzle_con_st *con)
875
838
{
876
839
  int ret;
916
879
                 con->addrinfo_next->ai_addrlen);
917
880
 
918
881
#ifdef _WIN32
919
 
    errno = drizzle_get_windows_errno();
 
882
    errno = WSAGetLastError();
 
883
    switch(errno) {
 
884
    case WSAEINVAL:
 
885
    case WSAEALREADY:
 
886
    case WSAECONNREFUSED:
 
887
    case WSAEWOULDBLOCK:
 
888
      errno= EINPROGRESS;
 
889
      break;
 
890
    case WSAENETUNREACH:
 
891
      errno= ENETUNREACH;
 
892
      break;
 
893
    case WSAETIMEDOUT:
 
894
      errno= ETIMEDOUT;
 
895
      break;
 
896
    case WSAECONNRESET:
 
897
      errno= ECONNRESET;
 
898
      break;
 
899
    case WSAEADDRINUSE:
 
900
      errno= EADDRINUSE;
 
901
      break;
 
902
    case WSAEOPNOTSUPP:
 
903
      errno= EOPNOTSUPP;
 
904
      break;
 
905
    case WSAENOPROTOOPT:
 
906
      errno= ENOPROTOOPT;
 
907
      break;
 
908
    default:
 
909
      break;
 
910
    }
920
911
#endif /* _WIN32 */
921
912
        
922
913
    drizzle_log_crazy(con->drizzle, "connect return=%d errno=%d", ret, errno);
1022
1013
    read_size = recv(con->fd, (char *)con->buffer_ptr + con->buffer_size,
1023
1014
                     available_buffer, 0);
1024
1015
#ifdef _WIN32
1025
 
    errno = drizzle_get_windows_errno();
 
1016
    errno = WSAGetLastError();
 
1017
    switch(errno) {
 
1018
    case WSAENOTCONN:
 
1019
    case WSAEWOULDBLOCK:
 
1020
      errno= EAGAIN;
 
1021
      break;
 
1022
    case WSAEINVAL:
 
1023
    case WSAEALREADY:
 
1024
    case WSAECONNREFUSED:
 
1025
      errno= EINPROGRESS;
 
1026
      break;
 
1027
    case WSAENETUNREACH:
 
1028
      errno= ENETUNREACH;
 
1029
      break;
 
1030
    case WSAETIMEDOUT:
 
1031
      errno= ETIMEDOUT;
 
1032
      break;
 
1033
    case WSAECONNRESET:
 
1034
      errno= ECONNRESET;
 
1035
      break;
 
1036
    case WSAEADDRINUSE:
 
1037
      errno= EADDRINUSE;
 
1038
      break;
 
1039
    case WSAEOPNOTSUPP:
 
1040
      errno= EOPNOTSUPP;
 
1041
      break;
 
1042
    case WSAENOPROTOOPT:
 
1043
      errno= ENOPROTOOPT;
 
1044
      break;
 
1045
    default:
 
1046
      break;
 
1047
    }
1026
1048
#endif /* _WIN32 */     
1027
1049
 
1028
1050
    drizzle_log_crazy(con->drizzle, "read fd=%d return=%zd errno=%d", con->fd,
1097
1119
  
1098
1120
    write_size = send(con->fd,(char *) con->buffer_ptr, con->buffer_size, 0);
1099
1121
 
 
1122
#ifdef _WIN32
 
1123
    errno = WSAGetLastError();
 
1124
    switch(errno) {
 
1125
    case WSAENOTCONN:
 
1126
    case WSAEWOULDBLOCK:
 
1127
      errno= EAGAIN;
 
1128
      break;
 
1129
    case WSAEINVAL:
 
1130
    case WSAEALREADY:
 
1131
    case WSAECONNREFUSED:
 
1132
      errno= EINPROGRESS;
 
1133
      break;
 
1134
    case WSAENETUNREACH:
 
1135
      errno= ENETUNREACH;
 
1136
      break;
 
1137
    case WSAETIMEDOUT:
 
1138
      errno= ETIMEDOUT;
 
1139
      break;
 
1140
    case WSAECONNRESET:
 
1141
      errno= ECONNRESET;
 
1142
      break;
 
1143
    case WSAEADDRINUSE:
 
1144
      errno= EADDRINUSE;
 
1145
      break;
 
1146
    case WSAEOPNOTSUPP:
 
1147
      errno= EOPNOTSUPP;
 
1148
      break;
 
1149
    case WSAENOPROTOOPT:
 
1150
      errno= ENOPROTOOPT;
 
1151
      break;
 
1152
    default:
 
1153
      break;
 
1154
    }
 
1155
#endif /* _WIN32 */     
 
1156
 
1100
1157
    drizzle_log_crazy(con->drizzle, "write fd=%d return=%zd errno=%d", con->fd,
1101
1158
                      write_size, errno);
1102
1159