Avoid panic if printer is off or unreachable for some reason.

Closes #16
Closes #17
Closes #15
This commit was merged in pull request #18.
This commit is contained in:
2021-05-23 15:21:31 +00:00
committed by Gitea
parent 72ee8c7d1b
commit 21cf29f651
7 changed files with 35 additions and 19 deletions

View File

@@ -2,7 +2,6 @@ package main
import (
"bytes"
"fmt"
"io"
"ippserver/packages/ipp"
"net/http"
@@ -14,7 +13,7 @@ import (
const printerURI = "brn30055cb5e3ae.local:631/ipp/print"
func handlePrintJob(r *ipp.Request, byteStream io.Reader, requestID uint32) *ipp.Response {
func handlePrintJob(r *ipp.Request, byteStream io.Reader, requestID uint32) (*ipp.Response, error) {
// This request is what will be sent to the real printer
request := ipp.NewRequest(ipp.PrintJob, requestID)
@@ -38,7 +37,7 @@ func handlePrintJob(r *ipp.Request, byteStream io.Reader, requestID uint32) *ipp
mr := io.MultiReader(b, byteStream)
downStreamResponse, err := http.Post("http://"+"brn30055cb5e3ae.local:631/ipp/print", "application/ipp", mr)
if err != nil {
fmt.Print(err)
return nil, err
}
rb := ipp.NewResponse(0, 0)
@@ -64,5 +63,5 @@ func handlePrintJob(r *ipp.Request, byteStream io.Reader, requestID uint32) *ipp
response.AddJobAttribute(rb.GetAttribute("job-state"))
response.AddJobAttribute(rb.GetAttribute("job-state-reasons"))
return response
return response, nil
}