diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/download.cpp | 17 | ||||
-rw-r--r-- | src/net/messagein.cpp | 35 | ||||
-rw-r--r-- | src/net/tmwa/beinghandler.cpp | 26 |
3 files changed, 53 insertions, 25 deletions
diff --git a/src/net/download.cpp b/src/net/download.cpp index 9dd90a1d1..fad1ec0b4 100644 --- a/src/net/download.cpp +++ b/src/net/download.cpp @@ -69,7 +69,8 @@ Download::Download(void *const ptr, const std::string &url, mError(static_cast<char*>(calloc(CURL_ERROR_SIZE + 1, 1))), mIgnoreError(ignoreError) { - mError[0] = 0; + if (mError) + mError[0] = 0; mOptions.cancel = 0; mOptions.memoryWrite = 0; @@ -117,6 +118,8 @@ unsigned long Download::fadler32(FILE *const file) // Calculate Adler-32 checksum char *const buffer = static_cast<char*>(malloc(fileSize)); + if (!buffer) + return 0; const uInt read = static_cast<uInt>(fread(buffer, 1, fileSize, file)); unsigned long adler = adler32(0L, Z_NULL, 0); adler = adler32(static_cast<uInt>(adler), @@ -174,7 +177,8 @@ bool Download::start() if (!mThread) { logger->log1(DOWNLOAD_ERROR_MESSAGE_THREAD); - strcpy(mError, DOWNLOAD_ERROR_MESSAGE_THREAD); + if (mError) + strcpy(mError, DOWNLOAD_ERROR_MESSAGE_THREAD); mUpdateFunction(mPtr, DOWNLOAD_STATUS_THREAD_ERROR, 0, 0); if (!mIgnoreError) return false; @@ -290,9 +294,14 @@ int Download::downloadThread(void *ptr) break; case CURLE_COULDNT_CONNECT: default: - logger->log("curl error %d: %s host: %s", - res, d->mError, d->mUrl.c_str()); + { + if (d->mError) + { + logger->log("curl error %d: %s host: %s", + res, d->mError, d->mUrl.c_str()); + } break; + } } if (d->mOptions.cancel) diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp index 219ef8a2f..28a16cfbd 100644 --- a/src/net/messagein.cpp +++ b/src/net/messagein.cpp @@ -121,13 +121,21 @@ void MessageIn::readCoordinates(uint16_t &x, uint16_t &y, uint8_t &direction) serverDir = static_cast<uint8_t>(data[2] & 0x000f); direction = fromServerDirection(serverDir); + + DEBUGLOG(std::string("readCoordinates: ").append(toString( + static_cast<int>(x))).append(",").append(toString( + static_cast<int>(y))).append(",").append(toString( + static_cast<int>(serverDir)))); + } + else + { + x = 0; + y = 0; + direction = 0; + logger->log("error: wrong readCoordinates packet"); } mPos += 3; PacketCounters::incInBytes(3); - DEBUGLOG(std::string("readCoordinates: ").append(toString( - static_cast<int>(x))).append(",").append(toString( - static_cast<int>(y))).append(",").append(toString( - static_cast<int>(serverDir)))); } void MessageIn::readCoordinatePair(uint16_t &srcX, uint16_t &srcY, @@ -146,13 +154,22 @@ void MessageIn::readCoordinatePair(uint16_t &srcX, uint16_t &srcY, temp = MAKEWORD(data[2], data[1] & 0x003f); srcY = static_cast<uint16_t>(temp >> 4); + + DEBUGLOG(std::string("readCoordinatePair: ").append(toString( + static_cast<int>(srcX))).append(",").append(toString( + static_cast<int>(srcY))).append(" ").append(toString( + static_cast<int>(dstX))).append(",").append(toString( + static_cast<int>(dstY)))); + } + else + { + srcX = 0; + srcY = 0; + dstX = 0; + dstY = 0; + logger->log("error: wrong readCoordinatePair packet"); } mPos += 5; - DEBUGLOG(std::string("readCoordinatePair: ").append(toString( - static_cast<int>(srcX))).append(",").append(toString( - static_cast<int>(srcY))).append(" ").append(toString( - static_cast<int>(dstX))).append(",").append(toString( - static_cast<int>(dstY)))); PacketCounters::incInBytes(5); } diff --git a/src/net/tmwa/beinghandler.cpp b/src/net/tmwa/beinghandler.cpp index b127517ea..0f668d162 100644 --- a/src/net/tmwa/beinghandler.cpp +++ b/src/net/tmwa/beinghandler.cpp @@ -667,22 +667,24 @@ void BeingHandler::processBeingMove3(Net::MessageIn &msg) const int16_t y = msg.readInt16(); const unsigned char *moves = msg.readBytes(len); Path path; - for (int f = 0; f < len; f ++) + if (moves) { - const unsigned char dir = moves[f]; - if (dir <= 7) + for (int f = 0; f < len; f ++) { - x += dirx[dir]; - y += diry[dir]; - path.push_back(Position(x, y)); - } - else - { - logger->log("bad move packet: %d", dir); + const unsigned char dir = moves[f]; + if (dir <= 7) + { + x += dirx[dir]; + y += diry[dir]; + path.push_back(Position(x, y)); + } + else + { + logger->log("bad move packet: %d", dir); + } } + delete [] moves; } - - delete [] moves; dstBeing->setPath(path); } |