         # File lib/protocols/postgres.rb, line 194
    194:         def dispatch_conn_message msg
    195:                 case msg
    196:                 when AuthentificationClearTextPassword
    197:                         raise ArgumentError, "no password specified" if @password.nil?
    198:                         send_data PasswordMessage.new(@password).dump
    199:
    200:                 when AuthentificationCryptPassword
    201:                         raise ArgumentError, "no password specified" if @password.nil?
    202:                         send_data PasswordMessage.new(@password.crypt(msg.salt)).dump
    203:
    204:                 when AuthentificationMD5Password
    205:                         raise ArgumentError, "no password specified" if @password.nil?
    206:                         require 'digest/md5'
    207:
    208:                         m = Digest::MD5.hexdigest(@password + @user)
    209:                         m = Digest::MD5.hexdigest(m + msg.salt)
    210:                         m = 'md5' + m
    211:                         send_data PasswordMessage.new(m).dump
    212:
    213:                 when AuthentificationKerberosV4, AuthentificationKerberosV5, AuthentificationSCMCredential
    214:                         raise "unsupported authentification"
    215:
    216:                 when AuthentificationOk
    217:                 when ErrorResponse
    218:                         raise msg.field_values.join("\t")
    219:                 when NoticeResponse
    220:                         @notice_processor.call(msg) if @notice_processor
    221:                 when ParameterStatus
    222:                         @params[msg.key] = msg.value
    223:                 when BackendKeyData
    224:                         # TODO
    225:                         #p msg
    226:                 when ReadyForQuery
    227:                         # TODO: use transaction status
    228:                         pc,@pending_conn = @pending_conn,nil
    229:                         pc.succeed true
    230:                 else
    231:                         raise "unhandled message type"
    232:                 end
    233:         end