defer udp.credLock.Unlock()
if c := udp.credentials; c != nil {
+ logRequest(paramSet{cmd: "AUTH", params: paramMap{"user": decrypt(c.username)}})
r := udp.AniDBUDP.Auth(
decrypt(c.username),
decrypt(c.password),
decrypt(c.udpKey))
runtime.GC() // any better way to clean the plaintexts?
+ logReply(r)
err := r.Error()
if adb.udp.connected {
adb.udp.connected = false
+ logRequest(paramSet{cmd: "LOGOUT"})
return adb.udp.Logout()
}
return nil
var bannedReply udpapi.APIReply = &bannedAPIReply{}
+func logRequest(set paramSet) {
+ switch set.cmd {
+ case "AUTH":
+ log.Printf("UDP>>> AUTH user=%s\n", set.params["user"])
+ default:
+ log.Printf("UDP>>> %s %s\n", set.cmd, udpapi.ParamMap(set.params).String())
+ }
+}
+
+func logReply(reply udpapi.APIReply) {
+ log.Printf("UDP<<< %d %s\n", reply.Code(), reply.Text())
+}
+
func (udp *udpWrap) sendQueue() {
initialWait := 6 * time.Second
wait := initialWait
continue
}
+ logRequest(set)
reply := <-udp.AniDBUDP.SendRecv(set.cmd, udpapi.ParamMap(set.params))
if reply.Error() == udpapi.TimeoutError {
if wait > time.Minute {
wait = time.Minute
}
+ log.Printf("UDP--- Timeout; waiting %s before retry", wait)
time.Sleep(wait)
goto Retry
}
+ logReply(reply)
+
wait = initialWait
switch reply.Code() {